Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Critical errors appear constantly #97

Open
margarita-f opened this issue Sep 3, 2018 · 24 comments
Open

Critical errors appear constantly #97

margarita-f opened this issue Sep 3, 2018 · 24 comments

Comments

@margarita-f
Copy link

Hi there!
While working with the previous Openmonero build, two errors constantly appear:

[ what(): Failed to create a read transaction for the db: MDB_READERS_FULL: Environment maxreaders limit reached terminate called after throwing an instance of 'cryptonote::DB_ERROR_TXN_START']
and also
[ what(): Failed to renew a read transaction for the db: MDB_BAD_RSLOT: Invalid reuse of reader locktable slot Failed to create a read transaction for the db: MDB_READERS_FULL: Environment maxreaders limit reached]

Every couple of minutes these two appear and make it impossible to work on. So I have to constantly restart Monero.
I belief the latest Monero build could help with that, but I am experiencing a new compilation error:

[[100%] Linking CXX executable openmonero src/libmyxrm.a(MicroCore.cpp.o): In function xmreg::MicroCore::get_transactions(std::vector<crypto::hash, std::allocatorcrypto::hash > const&, std::vector<cryptonote::transaction, std::allocatorcryptonote::transaction >&, std::vector<crypto::hash, std::allocatorcrypto::hash >&) const':
/root/openmonero/src/MicroCore.h:86: undefined reference to bool cryptonote::Blockchain::get_transactions<std::vector<crypto::hash, std::allocator<crypto::hash> >, std::vector<cryptonote::transaction, std::allocator<cryptonote::transaction> >, std::vector<crypto::hash, std::allocator<crypto::hash> > >(std::vector<crypto::hash, std::allocator<crypto::hash> > const&, std::vector<cryptonote::transaction, std::allocator<cryptonote::transaction> >&, std::vector<crypto::hash, std::allocator<crypto::hash> >&) const' collect2: error: ld returned 1 exit status CMakeFiles/openmonero.dir/build.make:136: recipe for target 'openmonero' failed make[2]: *** [openmonero] Error 1 CMakeFiles/Makefile2:69: recipe for target 'CMakeFiles/openmonero.dir/all' failed make[1]: *** [CMakeFiles/openmonero.dir/all] Error 2 Makefile:129: recipe for target 'all' failed make: *** [all] Error 2]

I would really appreciate your help guys!

@moneroexamples
Copy link
Owner

Seems you are using master branch of openmonero. Try its development branch https://github.com/moneroexamples/openmonero/tree/use_blocks_range .

The branch will also require latest monero from its master.

@margarita-f
Copy link
Author

margarita-f commented Sep 4, 2018

Thank you for the advice!

The problem is that I cannot use use_blocks_range branch because of the compilation error I’ve specified above.
The compilation error is:

[100%] Linking CXX executable openmonero src/libmyxrm.a(MicroCore.cpp.o): In function`xmreg::MicroCore::get_transactions(std::vector<crypto::hash, std::allocator<crypto::hash> > const&, std::vector<cryptonote::transaction, std::allocator<cryptonote::transaction> >&, std::vector<crypto::hash, std::allocator<crypto::hash> >&) const': /root/openmonero/src/MicroCore.h:86: undefined reference to `bool cryptonote::Blockchain::get_transactions<std::vector<crypto::hash, std::allocator<crypto::hash> >, std::vector<cryptonote::transaction, std::allocator<cryptonote::transaction> >, std::vector<crypto::hash, std::allocator<crypto::hash> > >(std::vector<crypto::hash, std::allocator<crypto::hash> > const&, std::vector<cryptonote::transaction, std::allocator<cryptonote::transaction> >&, std::vector<crypto::hash, std::allocator<crypto::hash> >&) const collect2: error: ld returned 1 exit status CMakeFiles/openmonero.dir/build.make:136: recipe for target 'openmonero' failed make[2]: *** [openmonero] Error 1 CMakeFiles/Makefile2:69: recipe for target 'CMakeFiles/openmonero.dir/all' failed make[1]: *** [CMakeFiles/openmonero.dir/all] Error 2 Makefile:129: recipe for target 'all' failed make: *** [all] Error 2

@moneroexamples
Copy link
Owner

This error occurs because you are probably using old, release of monero (e.g. 0.12.3). In current monero branch (https://github.com/monero-project/monero) get_transactions function has been modified and oipenmonero along with it to use the new version.

@margarita-f
Copy link
Author

Finally I could start Monero using master branch (commit 91c7d68) and Openmonero using use_blocks_range branch (commit 79e207a). But I’ve got those info errors

Cannot allocate memory

and

Cant get blocks from XXX to YYY

And after that the previous error appeared again:

018-09-06 13:25:45.691 7f7a770fdbc0 WARN blockchain.db.lmdb src/blockchain_db/lmdb/db_lmdb.cpp:75 Failed to create a transaction for the db: MDB_READERS_FULL: Environment maxreaders limit reached
2018-09-06 13:25:45,693 ERROR [openmonero] Error accessing blockchain.

@moneroexamples
Copy link
Owner

Could you provide full error messages?

@margarita-f
Copy link
Author

Sure. For the first error:

018-09-07 05:52:10,204 INFO [openmonero] New last_ping_timestamp: 0
2018-09-07 05:52:10,204 INFO [openmonero] Search thread created for address: "sample address"
2018-09-07 05:52:10,204 INFO [openmonero] Analyzing 2 blocks from 1655877 to 1655878 out of 1655878 blocks
2018-09-07 05:52:10,230 INFO [openmonero] Cant get blocks from 1655879 to 1655878
2018-09-07 05:52:10,354 INFO [openmonero] Cant get blocks from 1655879 to 1655878
2018-09-07 05:52:10,393 INFO [openmonero] Cant get blocks from 1655879 to 1655878
2018-09-07 05:52:10,451 INFO [openmonero] Cant get blocks from 1655879 to 1655878
2018-09-07 05:52:10,477 INFO [openmonero] Cant get blocks from 1655879 to 1655878
2018-09-07 05:52:10,672 INFO [openmonero] Search thread stopped for address "sample address"
2018-09-07 05:52:10,672 INFO [openmonero] Stopping the thread by setting continue_search=false
2018-09-07 05:52:10,672 INFO [openmonero] Stopping the thread by setting continue_search=false
2018-09-07 05:52:10,939 INFO [openmonero] Cant get blocks from 1655879 to 1655878
2018-09-07 05:52:11,118 INFO [openmonero] Cant get blocks from 1655879 to 1655878
2018-09-07 05:52:11.185 7f5a53830bc0 ERROR default contrib/epee/src/mlocker.cpp:63 Error locking page at 0x2bd9000: Cannot allocate memory
2018-09-07 05:52:11,186 INFO [openmonero] New last_ping_timestamp: 0

And for main one:

2018-09-06 19:41:24,520 INFO [openmonero] New last_ping_timestamp: 0
2018-09-06 19:41:24,520 INFO [openmonero] Search thread created for address: "sample address"
2018-09-06 19:41:24.520 7fc95a7d4700 WARN blockchain.db.lmdb src/blockchain_db/lmdb/db_lmdb.cpp:75 Failed to create a read transaction for the db: MDB_READER
S_FULL: Environment maxreaders limit reached
2018-09-06 19:41:24,524 ERROR [openmonero] Exception in TxSearch for "sample"
2018-09-06 19:41:24,524 INFO [openmonero] Stopping the thread by setting continue_search=false
2018-09-06 19:41:24,524 INFO [openmonero] Stopping the thread by setting continue_search=false
2018-09-06 19:41:24,652 INFO [default] Page size: 4096
2018-09-06 19:41:25,652 INFO [openmonero] OpenMonero is starting
2018-09-06 19:41:25,653 INFO [openmonero] Using blockchain path: /opt/monero/lmdb
2018-09-06 19:41:25.655 7f553e2d2bc0 INFO blockchain.db.lmdb src/blockchain_db/lmdb/db_lmdb.cpp:544 DB map size: 121271787520
2018-09-06 19:41:25.655 7f553e2d2bc0 INFO blockchain.db.lmdb src/blockchain_db/lmdb/db_lmdb.cpp:545 Space used: 72709054464
2018-09-06 19:41:25.655 7f553e2d2bc0 INFO blockchain.db.lmdb src/blockchain_db/lmdb/db_lmdb.cpp:546 Space remaining: 48562733056
2018-09-06 19:41:25.655 7f553e2d2bc0 INFO blockchain.db.lmdb src/blockchain_db/lmdb/db_lmdb.cpp:547 Size threshold: 0
2018-09-06 19:41:25.655 7f553e2d2bc0 INFO blockchain.db.lmdb src/blockchain_db/lmdb/db_lmdb.cpp:549 Percent used: 0.5996 Percent threshold: 0.8000
2018-09-06 19:41:25.655 7f553e2d2bc0 WARN blockchain.db.lmdb src/blockchain_db/lmdb/db_lmdb.cpp:75 Failed to create a transaction for the db: MDB_READERS_FUL
L: Environment maxreaders limit reached
2018-09-06 19:41:25,657 ERROR [openmonero] Error accessing blockchain.
2018-09-06 19:41:26,689 INFO [default] Page size: 4096
2018-09-06 19:41:27,690 INFO [openmonero] OpenMonero is starting

I've replaced addresses with "sample address" for security reasons, but I'm sure there is no problem in address itself because I've tried a several addresses.

@moneroexamples
Copy link
Owner

At the moment I don't know what is happening. Seems its running out of memory, either openmonero or monero itself. Maybe there is a memory leak, or you running it on a computer with very limited ram (e.g. 2GB).

I guess that you get this issue only with openmonero? When running and using monero by itself, there are no problems?

@margarita-f
Copy link
Author

It takes 24G on server. There is memory error in openmonero loges only, and there is no in monero loges.
Anyway, memory error is not the only one error, the second one is obviously caused by something else.

@moneroexamples
Copy link
Owner

By second error you mean this one? INFO [openmonero] Cant get blocks from 1655879 to 1655878

This is only info, and it simply means openmonero reached top of the blockchain, and there is nothing more to scan. This is not an issue.

The memory is a problem. But I don't know what could be causing it. I run stagenet version of the openmonero (http://172.104.45.209:81) on VPS with 0.5GB of ram, and I haven't observed issues with memory allocations.

I will try observing the memory. Last question, which linux are you using?

@moneroexamples
Copy link
Owner

But one thing you can try is to reduce blocks_search_lookahead, i.e., how many blocks should be fetched at once from the blockchain. You can do this by going to openmonero/config/config.json and setting blocks_search_lookahead to something lower than its default no (i.e., 200 blocks). Try maybe 10 blocks?

@margarita-f
Copy link
Author

Ubuntu 16.04.5 LTS, 4.8.0-58-generic core.

I've tried 10 blocks as you advice, but it still doesn't work.

@margarita-f
Copy link
Author

First of all, I would like to understand a reason the following error appears:
Failed to create a transaction for the db: MDB_READERS_FULL: Environment maxreaders limit reached

@moneroexamples
Copy link
Owner

moneroexamples commented Sep 11, 2018

This is monero's lmdb blockchain database error. Number of max readers is 126 by default, and seems you are reaching this number.

Found similar issue on monero: monero-project/monero#2741

Solution there was to run monerod with less threads, e.g., monerod --max-concurrency 20. Maybe this will help?

@margarita-f
Copy link
Author

The access to the blockchain issue applies only to openmonero. As for monero itself, it processes requests correctly.
I've tried to change max-concurrency to the higher as well as smaller. Still doesn't work.

@troublesomepony
Copy link

@margarita-f you change max-concurrency for monerod or for openmonero? What stack do you use? OS/GCC/CLANG etc. Do you use use_block_range branch or master? I can't confirm this error. Maybe you have issue with BC and check your system wide ulimits too.

@moneroexamples
Copy link
Owner

@margarita-f @troublesomepony

Also cant reproduce this issue. For now the issue must stay open, as I'm running out of ideas what could be the reason for that. Hopefully with time will get to the bottom of it.

@margarita-f
Copy link
Author

Ubuntu 16.04.5 LTS
gcc version 8.1.0
Boost version: 1.66.0
ulimits -a

core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 127984 max locked memory (kbytes, -l) 16384 max memory size (kbytes, -m) unlimited open files (-n) 65536 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 127984 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited

Monero commit 91c7d68
Openmonero commit 79e207a
(branch use_blocks_range)

@moneroexamples
Copy link
Owner

Thanks for info. I will try to check it on ubuntu 16.04.

But for now please note that that there where many changes done in last week in monero, and openmonero broke and does not compile yet with the latest monero. So first I will need to update openmonero to work with newest monero, and then wull come back to your issue.

@margarita-f
Copy link
Author

Hi @moneroexamples ! Are there any updates since you wrote you gonna make some updates?

@moneroexamples
Copy link
Owner

Yes, I made it work with the latest monero. Still some uinit tests fail due to changes, so have to fix that, but haven't had time to do this.
So if you want to check it out, you need to upgrade your monero to latest version from github. If you use current openmonero from devel branch (https://github.com/moneroexamples/openmonero/tree/use_blocks_range) it will not compile with anything older than current monero from its github's master branch.

@margarita-f
Copy link
Author

margarita-f commented Dec 25, 2018

Hi guys,

The error Failed to create a transaction for the db: MDB_READERS_FULL: Environment maxreaders limit reached is still occurring.

We use following compilers:

  • The C compiler identification is GNU 8.1.0
  • The CXX compiler identification is GNU 5.4.0
    Use Monero release-0.13 branch and Openmonero master branch.
    When we use test MySQL database with test wallets, all works correct. But as soon as we’re trying to work with the main database from backup Openmonero returns the error Failed to create a transaction for the db: MDB_READERS_FULL: Environment maxreaders limit reached.

DB parameters (tables/number of records)
Accounts / 76627
Inputs / 3781
Outputs / 1459
Payments / 4
Transactions / 4735

Following your advice, we used also Monero master branch and Openmonero devel branch as well, but it returns the error with following log:

In file included from /home/lex/experiments/openmonero/src/CurrentBlockchainStatus.h:6:0, from /home/lex/experiments/openmonero/src/CurrentBlockchainStatus.cpp:5: /home/lex/experiments/openmonero/src/MicroCore.h: In member function ‘virtual void xmreg::MicroCore::get_output_key(const uint64_t&, const std::vector<long unsigned int>&, std::vector<cryptonote::output_data_t>&)’: /home/lex/experiments/openmonero/src/MicroCore.h:75:66: error: no matching function for call to ‘cryptonote::BlockchainDB::get_output_key(const uint64_t&, const std::vector<long unsigned int>&, std::vector<cryptonote::output_data_t>&)’ .get_output_key(amount, absolute_offsets, outputs); ^ In file included from /home/lex/experiments/monero/src/cryptonote_core/tx_pool.h:46:0, from /home/lex/experiments/openmonero/src/monero_headers.h:25, from /home/lex/experiments/openmonero/src/MicroCore.h:11, from /home/lex/experiments/openmonero/src/CurrentBlockchainStatus.h:6, from /home/lex/experiments/openmonero/src/CurrentBlockchainStatus.cpp:5: /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1261:25: note: candidate: virtual cryptonote::output_data_t cryptonote::BlockchainDB::get_output_key(const uint64_t&, const uint64_t&) virtual output_data_t get_output_key(const uint64_t& amount, const uint64_t& index) = 0; ^ /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1261:25: note: candidate expects 2 arguments, 3 provided /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1313:16: note: candidate: virtual void cryptonote::BlockchainDB::get_output_key(const epee::span<const long unsigned int>&, const std::vector<long unsigned int>&, std::vector<cryptonote::output_data_t>&, bool) virtual void get_output_key(const epee::span<const uint64_t> &amounts, const std::vector<uint64_t> &offsets, std::vector<output_data_t> &outputs, bool allow_partial = false) = 0; ^ /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1313:16: note: no known conversion for argument 1 from ‘const uint64_t {aka const long unsigned int}’ to ‘const epee::span<const long unsigned int>&’ In file included from /home/lex/experiments/openmonero/src/CurrentBlockchainStatus.h:6:0, from /home/lex/experiments/openmonero/src/YourMoneroRequests.h:14, from /home/lex/experiments/openmonero/src/YourMoneroRequests.cpp:8: /home/lex/experiments/openmonero/src/MicroCore.h: In member function ‘virtual void xmreg::MicroCore::get_output_key(const uint64_t&, const std::vector<long unsigned int>&, std::vector<cryptonote::output_data_t>&)’: /home/lex/experiments/openmonero/src/MicroCore.h:75:66: error: no matching function for call to ‘cryptonote::BlockchainDB::get_output_key(const uint64_t&, const std::vector<long unsigned int>&, std::vector<cryptonote::output_data_t>&)’ .get_output_key(amount, absolute_offsets, outputs); ^ In file included from /home/lex/experiments/monero/src/cryptonote_core/tx_pool.h:46:0, from /home/lex/experiments/openmonero/src/monero_headers.h:25, from /home/lex/experiments/openmonero/src/MicroCore.h:11, from /home/lex/experiments/openmonero/src/CurrentBlockchainStatus.h:6, from /home/lex/experiments/openmonero/src/YourMoneroRequests.h:14, from /home/lex/experiments/openmonero/src/YourMoneroRequests.cpp:8: /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1261:25: note: candidate: virtual cryptonote::output_data_t cryptonote::BlockchainDB::get_output_key(const uint64_t&, const uint64_t&) virtual output_data_t get_output_key(const uint64_t& amount, const uint64_t& index) = 0; ^ /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1261:25: note: candidate expects 2 arguments, 3 provided /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1313:16: note: candidate: virtual void cryptonote::BlockchainDB::get_output_key(const epee::span<const long unsigned int>&, const std::vector<long unsigned int>&, std::vector<cryptonote::output_data_t>&, bool) virtual void get_output_key(const epee::span<const uint64_t> &amounts, const std::vector<uint64_t> &offsets, std::vector<output_data_t> &outputs, bool allow_partial = false) = 0; ^ /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1313:16: note: no known conversion for argument 1 from ‘const uint64_t {aka const long unsigned int}’ to ‘const epee::span<const long unsigned int>&’ In file included from /home/lex/experiments/openmonero/src/MicroCore.cpp:5:0: /home/lex/experiments/openmonero/src/MicroCore.h: In member function ‘virtual void xmreg::MicroCore::get_output_key(const uint64_t&, const std::vector<long unsigned int>&, std::vector<cryptonote::output_data_t>&)’: /home/lex/experiments/openmonero/src/MicroCore.h:75:66: error: no matching function for call to ‘cryptonote::BlockchainDB::get_output_key(const uint64_t&, const std::vector<long unsigned int>&, std::vector<cryptonote::output_data_t>&)’ .get_output_key(amount, absolute_offsets, outputs); ^ In file included from /home/lex/experiments/monero/src/cryptonote_core/tx_pool.h:46:0, from /home/lex/experiments/openmonero/src/monero_headers.h:25, from /home/lex/experiments/openmonero/src/MicroCore.h:11, from /home/lex/experiments/openmonero/src/MicroCore.cpp:5: /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1261:25: note: candidate: virtual cryptonote::output_data_t cryptonote::BlockchainDB::get_output_key(const uint64_t&, const uint64_t&) virtual output_data_t get_output_key(const uint64_t& amount, const uint64_t& index) = 0; ^ /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1261:25: note: candidate expects 2 arguments, 3 provided /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1313:16: note: candidate: virtual void cryptonote::BlockchainDB::get_output_key(const epee::span<const long unsigned int>&, const std::vector<long unsigned int>&, std::vector<cryptonote::output_data_t>&, bool) virtual void get_output_key(const epee::span<const uint64_t> &amounts, const std::vector<uint64_t> &offsets, std::vector<output_data_t> &outputs, bool allow_partial = false) = 0; ^ /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1313:16: note: no known conversion for argument 1 from ‘const uint64_t {aka const long unsigned int}’ to ‘const epee::span<const long unsigned int>&’ In file included from /home/lex/experiments/openmonero/src/CurrentBlockchainStatus.h:6:0, from /home/lex/experiments/openmonero/src/OutputInputIdentification.h:7, from /home/lex/experiments/openmonero/src/OutputInputIdentification.cpp:5: /home/lex/experiments/openmonero/src/MicroCore.h: In member function ‘virtual void xmreg::MicroCore::get_output_key(const uint64_t&, const std::vector<long unsigned int>&, std::vector<cryptonote::output_data_t>&)’: /home/lex/experiments/openmonero/src/MicroCore.h:75:66: error: no matching function for call to ‘cryptonote::BlockchainDB::get_output_key(const uint64_t&, const std::vector<long unsigned int>&, std::vector<cryptonote::output_data_t>&)’ .get_output_key(amount, absolute_offsets, outputs); ^ In file included from /home/lex/experiments/monero/src/cryptonote_core/tx_pool.h:46:0, from /home/lex/experiments/openmonero/src/monero_headers.h:25, from /home/lex/experiments/openmonero/src/MicroCore.h:11, from /home/lex/experiments/openmonero/src/CurrentBlockchainStatus.h:6, from /home/lex/experiments/openmonero/src/OutputInputIdentification.h:7, from /home/lex/experiments/openmonero/src/OutputInputIdentification.cpp:5: /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1261:25: note: candidate: virtual cryptonote::output_data_t cryptonote::BlockchainDB::get_output_key(const uint64_t&, const uint64_t&) virtual output_data_t get_output_key(const uint64_t& amount, const uint64_t& index) = 0; ^ /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1261:25: note: candidate expects 2 arguments, 3 provided /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1313:16: note: candidate: virtual void cryptonote::BlockchainDB::get_output_key(const epee::span<const long unsigned int>&, const std::vector<long unsigned int>&, std::vector<cryptonote::output_data_t>&, bool) virtual void get_output_key(const epee::span<const uint64_t> &amounts, const std::vector<uint64_t> &offsets, std::vector<output_data_t> &outputs, bool allow_partial = false) = 0; ^ /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1313:16: note: no known conversion for argument 1 from ‘const uint64_t {aka const long unsigned int}’ to ‘const epee::span<const long unsigned int>&’ In file included from /home/lex/experiments/openmonero/src/CurrentBlockchainStatus.h:6:0, from /home/lex/experiments/openmonero/src/OutputInputIdentification.h:7, from /home/lex/experiments/openmonero/src/TxSearch.h:4, from /home/lex/experiments/openmonero/src/TxSearch.cpp:7: /home/lex/experiments/openmonero/src/MicroCore.h: In member function ‘virtual void xmreg::MicroCore::get_output_key(const uint64_t&, const std::vector<long unsigned int>&, std::vector<cryptonote::output_data_t>&)’: /home/lex/experiments/openmonero/src/MicroCore.h:75:66: error: no matching function for call to ‘cryptonote::BlockchainDB::get_output_key(const uint64_t&, const std::vector<long unsigned int>&, std::vector<cryptonote::output_data_t>&)’ .get_output_key(amount, absolute_offsets, outputs); ^ In file included from /home/lex/experiments/monero/src/cryptonote_core/tx_pool.h:46:0, from /home/lex/experiments/openmonero/src/monero_headers.h:25, from /home/lex/experiments/openmonero/src/tools.h:16, from /home/lex/experiments/openmonero/src/MySqlAccounts.h:8, from /home/lex/experiments/openmonero/src/TxSearch.h:3, from /home/lex/experiments/openmonero/src/TxSearch.cpp:7: /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1261:25: note: candidate: virtual cryptonote::output_data_t cryptonote::BlockchainDB::get_output_key(const uint64_t&, const uint64_t&) virtual output_data_t get_output_key(const uint64_t& amount, const uint64_t& index) = 0; ^ /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1261:25: note: candidate expects 2 arguments, 3 provided /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1313:16: note: candidate: virtual void cryptonote::BlockchainDB::get_output_key(const epee::span<const long unsigned int>&, const std::vector<long unsigned int>&, std::vector<cryptonote::output_data_t>&, bool) virtual void get_output_key(const epee::span<const uint64_t> &amounts, const std::vector<uint64_t> &offsets, std::vector<output_data_t> &outputs, bool allow_partial = false) = 0; ^ /home/lex/experiments/monero/src/blockchain_db/blockchain_db.h:1313:16: note: no known conversion for argument 1 from ‘const uint64_t {aka const long unsigned int}’ to ‘const epee::span<const long unsigned int>&’ In file included from /home/lex/experiments/openmonero/src/CurrentBlockchainStatus.h:6:0, from /home/lex/experiments/openmonero/src/OutputInputIdentification.h:7, from /home/lex/experiments...

Using Monero master branch and Openmonero master branch, we’ve got the same error.
Maybe you could guess what might be wrong?

@moneroexamples
Copy link
Owner

moneroexamples commented Dec 26, 2018

Monero started using epee:span (an equivalent of gls::span from c++ core guidelines), so current openmonero master branch will not work with current monero master. But openmonero's devel branch should work as it was adjusted to use epee::span as well. So can you check that you are using current monero master branch, or instead you are checking out its last official release (e.g. 0.13.0.4) and then trying to use openmonero?

The error Failed to create a transaction for the db: MDB_READERS_FULL: Environment maxreaders limit reached is still occurring.

I encountered this issue once recently, when I was starting and shutting down openmonero a lot using Ctr+C during its development (or it was crashing). It seemed to me that when you shut it down like this, lmdb will keep the number of readers, as MicroCore.h object will not have a chance to call its destructor to release the lmdb which it opened in read only mode. I think that deleting lmdb.lck (e.g. in home/mwo/.bitmonero/lmdb/lock.mdb) helped to solve this problem in my case so that new one is created. Not sure about this though.

I made issue just now to add Ctr+C handling to openmonero: #115 Hope this, once implemented, will help with this issue.

@moneroexamples
Copy link
Owner

Control+C handling was added. Now the blockchain's lmdb as well as OM's threads and mysql are closed nicely. Changes are in devel branch if you want to check that.

@moneroexamples
Copy link
Owner

Resolved in #130

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants