monero icon indicating copy to clipboard operation
monero copied to clipboard

blockchain always gets corrupt

Open Lioxen opened this issue 9 months ago • 1 comments

My hardware is a Intel(R) Core(TM) i5 CPU 650 @ 3.20GHz, 8GB Ram and the blockchain is stored on a ssd (is brand new). I try to run a full node, but I fail constantly to fetch the blockchain. I run alternately into 2 errors, but both of them leave me with a corrupt blockchain. And the annoying thing is... this happens not in the beginning, no this happens after hours of fetching the blockchain.

  1. error there you see nothing in the monerod.log expect that the monerod service restarts all the time, but in the syslog I see

systemd[1]:Starting monerod.service - Monero Full Node (Mainnet)... monerod[22204]: 2024-05-24 09:32:12.537#011I Monero 'Fluorine Fermi' (v0.18.3.3-release) monerod[22204]: Forking to background... systemd[1]: Started monerod.service - Monero Full Node (Mainnet). kernel: [79627.129234] monerod[22219]: segfault at 7f93c514e000 ip 00007fb60f72be96 sp 00007f93deaf7cf8 error 6 in libc.so.6[7fb60f6af000+155000] likely on CPU 1 (core 2, socket 0) kernel: [79627.129252] Code: 16 c0 48 29 ce 48 ff c7 48 01 fe 48 8d 54 11 c0 0f 1f 40 00 0f 10 0e 0f 10 56 10 0f 10 5e 20 0f 10 66 30 48 83 ee c0 0f 29 0f <0f> 29 57 10 0f 29 5f 20 0f 29 67 30 48 83 ef c0 48 39 fa 77 d5 0f systemd[1]: monerod.service: Main process exited, code=killed, status=11/SEGV systemd[1]: monerod.service: Failed with result 'signal'. systemd[1]: monerod.service: Consumed 6.428s CPU time.

to repair the blockchain is not possible, if I start monerod --db-salvage --data-dir=/var/lib/monero/.bitmonero it end with a Segmentation fault

  1. error WARNING blockchain.db.lmdb src/blockchain_db/lmdb/db_lmdb.cpp:75 DB error attempting to fetch transaction index from hash 6e5e9c38659f05c4f3d1f55c1a802b1ff461a38e875210dbd11180487b1fd9c1: MDB_CORRUPTED: Located page was wrong type ERROR cn src/cryptonote_core/cryptonote_core.cpp:1115 Exception at [core::handle_incoming_txs()], what=DB error attempting to fetch transaction index from hash 6e5e9c38659f05c4f3d1f55c1a802b1ff461a38e875210dbd11180487b1fd9c1: MDB_CORRUPTED: Located page was wrong type WARNING blockchain.db.lmdb src/blockchain_db/lmdb/db_lmdb.cpp:75 DB error attempting to fetch block index from hashMDB_BAD_TXN: Transaction must abort, has a child, or is invalid ERROR blockchain src/cryptonote_core/blockchain.cpp:4696 Exception at [add_new_block], what=DB error attempting to fetch block index from hashMDB_BAD_TXN: Transaction must abort, has a child, or is invalid WARNING blockchain.db.lmdb src/blockchain_db/lmdb/db_lmdb.cpp:75 Failed to commit a transaction to the db: MDB_BAD_TXN: Transaction must abort, has a child, or is invalid ERROR blockchain src/cryptonote_core/blockchain.cpp:4827 Exception in cleanup_handle_incoming_blocks: Failed to commit a transaction to the db: MDB_BAD_TXN: Transaction must abort, has a child, or is invalid 2024-05-24 10:13:17.980 [P2P9] WARNING blockchain.db.lmdb src/blockchain_db/lmdb/db_lmdb.cpp:75 DB error attempting to fetch transaction index from hash 6e5e9c38659f05c4f3d1f55c1a802b1ff461a38e875210dbd11180487b1fd9c1: MDB_CORRUPTED: Located page was wrong type ERROR cn src/cryptonote_core/cryptonote_core.cpp:1115 Exception at [core::handle_incoming_txs()], what=DB error attempting to fetch transaction index from hash 6e5e9c38659f05c4f3d1f55c1a802b1ff461a38e875210dbd11180487b1fd9c1: MDB_CORRUPTED: Located page was wrong type WARNING blockchain.db.lmdb src/blockchain_db/lmdb/db_lmdb.cpp:75 DB error attempting to fetch block index from hashMDB_BAD_TXN: Transaction must abort, has a child, or is invalid ERROR blockchain src/cryptonote_core/blockchain.cpp:4696 Exception at [add_new_block], what=DB error attempting to fetch block index from hashMDB_BAD_TXN: Transaction must abort, has a child, or is invalid WARNING blockchain.db.lmdb src/blockchain_db/lmdb/db_lmdb.cpp:75 Failed to commit a transaction to the db: MDB_BAD_TXN: Transaction must abort, has a child, or is invalid ERROR blockchain src/cryptonote_core/blockchain.cpp:4827 Exception in cleanup_handle_incoming_blocks: Failed to commit a transaction to the db: MDB_BAD_TXN: Transaction must abort, has a child, or is invalid

to repair the blockchain after this error occurred is also not possible. there I see this error over and over again

I'm quite sure, there is something wrong with my hardware. (but I do not know, what in the moment) I have some questions about the blockchain.

Why is it necessary to declare the hole data block for corrupt? I mean it takes hours, in my case days or sometime weeks to download the blockchain. How can a simple incident corrupt 100GB of data in a split of a second?

Why there are not some kind of anchor or recovery points, where the software could roll back, if an accident occurs?

Why must the data stored in one huge file?

I mean, I'm not the only one who has a problems with a corrupt blockchain. And always the only advice I read is, delete the data.mdb and start from the beginning(if recovery not working, what it never does in my case). Think of all the wasted time and energy and this because of the terrible data store design.

Lioxen avatar May 24 '24 13:05 Lioxen