openmonero
openmonero copied to clipboard
Critical errors appear constantly
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!
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.
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
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.
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.
Could you provide full error messages?
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.
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?
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.
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?
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?
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.
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
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: https://github.com/monero-project/monero/issues/2741
Solution there was to run monerod with less threads, e.g., monerod --max-concurrency 20
. Maybe this will help?
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.
@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 ulimit
s too.
@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.
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)
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.
Hi @moneroexamples ! Are there any updates since you wrote you gonna make some updates?
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.
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?
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: https://github.com/moneroexamples/openmonero/issues/115 Hope this, once implemented, will help with this issue.
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.
Resolved in https://github.com/moneroexamples/openmonero/pull/130