-
Notifications
You must be signed in to change notification settings - Fork 714
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
Deserialization or I/O error - ReadCompactSize() too large #69
Comments
here is a rather long issue thread related to this (circa 2015 bitcoin core) |
BU guys think this is a corruption that is caused by using an SSD BitcoinUnlimited/BitcoinUnlimited#293 |
There are 5 guys in our chat, who got the same problem few times. And all of us used HDD to install PIVX on it. |
sorry, one of the guys who gets this problem too often is on SDD other four are on HDD mb i can show some useful info that could be help you in fixing bug? |
@sugar84 thanks for the context. A section of your debug.log file could be helpful. It will give us some context. Preferably enough to show the events before the failure so that we can determine what the state of the program was before the crash. Debug.log contains information about your ip address. Feel free to edit that out. |
Hello my Pivx-qt wallet was working fine, after the time it's just crashed silently. Bin was executed from the console, when pivx-qt crashed i didnt get any output there. This is last lines from the debug.log, after the Pivx-qt crashed:
And this last lines after my try to restart the wallet with corrupted blockchain:
Hope this will help! |
@sugar84 can you provide 20 or 30 lines before the very first occurrence of the error? |
I was able to reproduce this issue. After 4 or 5 kill -9's it corrupted the chain.
By adding a few more logs in some areas I see that this is triggered from the deserialization of a block at inside of ReadBlockFromDisk() https://github.com/PIVX-Project/PIVX/blob/v2.1.6-stable/src/main.cpp#L1589 Adding some more logging, I see that the deserialization is erroring on block.vtx - the transaction vector held by the block. I have also determined that the size that is attempting to be deserialized is 3713892242, and the max allowed size is 33554432.
This is most likely an issue with the block position(edit: actually not). I am able to see that my client is expecting block 33936 to be located at pos 27101828 and in file blk00000.dat Adding additional information about the block position to getblock and using a data directory that is not corrupted, shows that the position is correct.
|
@presstab still you need those 20-30 lines of logs or not? |
I decided to follow @presstab's presstab's lead and purposely attempt a corruption state by killing the process a few times. I'm testing with the Qt wallet, which prompts the user if they want to abort the initialization of the program or rebuild the index (aka, reindex). Currently reindexing is non-functional (see #70), however I am running with a build of #71, which DOES allow me to recover from this issue during initialization. |
Linux v2.1.6.0-25bad68 Here is the output from my debug.log including some some lines before the first error:
If there is any way I can help to provide more infos to solve this issue let me know. |
I have been able to figure out that the client actually almost always corrupts on force kill. There just isn't the correct set of checks in place for some cases, and often times the corruption is deeper in the chain than the default 288 blocks that are checked. So from what I have observed, the typical corruption would be caused by something similar to this: |
I found what the blockchain db sometimes corrupts after the sleep/awake PC |
Since #88 has now been merged, going to close this for now. If the problem persists, please comment further so the issue can be re-opened. |
2017-03-17 17:32:23 block time=1489706692 adjusted time=1489771943 is proof of stake=1 2017-03-17 17:32:23 ERROR: GetTransaction : Deserialize or I/O error - ReadCompactSize() : size too large 2017-03-17 17:32:23 ERROR: CheckProofOfStake() : INFO: read txPrev failed 2017-03-17 17:32:23 WARNING: ProcessBlock(): check proof-of-stake failed for block 302e0c73f8f5a28a49b1b54342f970700bab170f750781a8b8127ed41eefaeeb
The text was updated successfully, but these errors were encountered: