chjj / mako

Bitcoin node written in C

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Valgrind support?

maflcko opened this issue · comments

I tried running in valgrind, but it failed:

...
[pool] Received 1444 headers from peer (###).
==6294== Invalid read of size 8
==6294==    at 0x122FBA: btc_pool_resolve_headers (in /mako/build/makod)
==6294==    by 0x12356E: btc_pool_on_headers (in /mako/build/makod)
==6294==    by 0x1247B1: btc_pool_on_msg (in /mako/build/makod)
==6294==    by 0x11E5F8: btc_peer_on_msg (in /mako/build/makod)
==6294==    by 0x11BE21: on_msg (in /mako/build/makod)
==6294==    by 0x11BAD2: btc_parser_parse (in /mako/build/makod)
==6294==    by 0x11BB76: btc_parser_feed (in /mako/build/makod)
==6294==    by 0x11E4AB: btc_peer_on_data (in /mako/build/makod)
==6294==    by 0x11BDD1: on_data (in /mako/build/makod)
==6294==    by 0x138944: handle_read (in /mako/build/makod)
==6294==    by 0x138EBC: btc_loop_poll (in /mako/build/makod)
==6294==    by 0x138DB3: btc_loop_start (in /mako/build/makod)
==6294==  Address 0x7e7d178 is 40 bytes inside a block of size 48 free'd
==6294==    at 0x483CA3F: free (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==6294==    by 0x16D445: btc__free (in /mako/build/makod)
==6294==    by 0x11F9CA: btc_hdrnode_destroy (in /mako/build/makod)
==6294==    by 0x123043: btc_pool_shift_header (in /mako/build/makod)
==6294==    by 0x12355B: btc_pool_on_headers (in /mako/build/makod)
==6294==    by 0x1247B1: btc_pool_on_msg (in /mako/build/makod)
==6294==    by 0x11E5F8: btc_peer_on_msg (in /mako/build/makod)
==6294==    by 0x11BE21: on_msg (in /mako/build/makod)
==6294==    by 0x11BAD2: btc_parser_parse (in /mako/build/makod)
==6294==    by 0x11BB76: btc_parser_feed (in /mako/build/makod)
==6294==    by 0x11E4AB: btc_peer_on_data (in /mako/build/makod)
==6294==    by 0x11BDD1: on_data (in /mako/build/makod)
==6294==  Block was alloc'd at
==6294==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==6294==    by 0x16D3CA: btc__malloc (in /mako/build/makod)
==6294==    by 0x11F976: btc_hdrnode_create (in /mako/build/makod)
==6294==    by 0x123483: btc_pool_on_headers (in /mako/build/makod)
==6294==    by 0x1247B1: btc_pool_on_msg (in /mako/build/makod)
==6294==    by 0x11E5F8: btc_peer_on_msg (in /mako/build/makod)
==6294==    by 0x11BE21: on_msg (in /mako/build/makod)
==6294==    by 0x11BAD2: btc_parser_parse (in /mako/build/makod)
==6294==    by 0x11BB76: btc_parser_feed (in /mako/build/makod)
==6294==    by 0x11E4AB: btc_peer_on_data (in /mako/build/makod)
==6294==    by 0x11BDD1: on_data (in /mako/build/makod)
==6294==    by 0x138944: handle_read (in /mako/build/makod)
==6294== 
==6294== Invalid read of size 4
==6294==    at 0x183F88: btc_read32le (in /mako/build/makod)
==6294==    by 0x183FED: btc_murmur3_sum (in /mako/build/makod)
==6294==    by 0x14EE8D: kh_get_btc_hashset (in /mako/build/makod)
...

I just set CMAKE_BUILD_TYPE DEBUG and it's generating
objects "with debug_info, not stripped".

To clarify the issue is not about the symbols, but the Invalid read of size 8.

not the same problem is detected,
but t-bloom "definitely loses" bytes

Thanks for noticing this. I'm now realizing that I don't think I had run valgrind with checkpoints enabled (the headers sync) since they're only recently enabled by default.