lbryio / lbrycrd

The blockchain that provides the digital content namespace for the LBRY protocol
https://lbry.com
MIT License
2.57k stars 178 forks source link

Something goes wrong when saving claimtrie nodes to disk and loading it #133

Closed kaykurokawa closed 5 years ago

kaykurokawa commented 6 years ago

Discovered in https://github.com/lbryio/lbrycrd/pull/110

When loading in claimtrie nodes using function InsertFromDisk() https://github.com/lbryio/lbrycrd/blob/master/src/claimtrie.cpp#L1072 , we discovered that for some reason the "name" variable contains an extra bogus character at the end.

However, I suspect that there is not always a bogus character attached to the "name" variable, thus this function will completely fail.

I've tested the serialization classes to see if there is any problem loading/saving string classes and there is no problem, so its likely a problem originating from when we save nodes, particularly when the function markNodeDirty() gets called https://github.com/lbryio/lbrycrd/blob/master/src/claimtrie.cpp#L828 which marks nodes to be saved on disk.

bvbfan commented 6 years ago

This probably should be fixed when merging new code.

BrannonKing commented 5 years ago

I'm closing this as unreproducible. The serialization code has been updated with the upstream merge. Also, the code for loading the trie will be different with the new memory improvements.