warthog-network / Warthog

Experimental cryptocurrency implementation
MIT License
21 stars 13 forks source link

Assertion bug in 0.1.21 #37

Closed JulsKawa closed 7 months ago

JulsKawa commented 8 months ago
 [2024-01-25 19:34:01.535] [error] data(c).fork_iter()->first=9, fr.lower()=1
Assertion failed: data(c).fork_iter()->first == fr.lower() (../../code/src/node/eventloop/sync/block_download/block_download.cpp: do_probe_requests: 216) 
ByPumbaa commented 8 months ago

Please report whether v0.1.22 still has this issue.

JulsKawa commented 8 months ago

Please report whether v0.1.22 still has this issue.

itsjcrane on discord :

[2024-01-26 13:29:24.043] [error] data(c).fork_iter()->first=10, fr.lower()=1
wart-node: ../src/node/eventloop/sync/block_download/block_download.cpp:216: void BlockDownload::Downloader::do_probe_requests(RequestSender): Assertion `data(c).fork_iter()->first == fr.lower()' failed.
Aborted (core dumped)
JulsKawa commented 8 months ago
[2024-01-27 14:05:55.248] [info] Syncing... (height 917625 of 917626)
[2024-01-27 14:05:55.248] [info] Connected to 11 peers
[2024-01-27 14:05:55.248] [error] data(c).fork_iter()->first=11, fr.lower()=1
wart-node: ../src/node/eventloop/sync/block_download/block_download.cpp:216: void BlockDownload::Downloader::do_probe_requests(RequestSender): Assertion `data(c).fork_iter()->first == fr.lower()' failed.
Aborted (core dumped)

warscout2 on discord

JulsKawa commented 8 months ago
<@1122873665227341875> - Shouldn't have jinxed it.  Finally crashed on 0.1.24 after almost 48 hours

[2024-01-30 15:12:23.815] [info] Connected to 12 peers (closed connection to 45.91.203.135:9186, reason: EOF)
[2024-01-30 15:12:23.841] [info] Connected to 11 peers (closed connection to 93.92.201.8:9186, reason: EOF)
[2024-01-30 15:12:39.758] [info] Syncing... (height 930801 of 930802)
[2024-01-30 15:12:39.897] [info] Synced. (height 930802).
[2024-01-30 15:12:40.435] [info] Connected to 12 peers (new peer 93.92.201.8:9186)
[2024-01-30 15:12:40.610] [info] Connected to 13 peers (new peer 45.91.203.135:9186)
[2024-01-30 15:12:41.103] [info] Syncing... (height 930802 of 930803)
[2024-01-30 15:12:41.104] [info] Connected to 12 peers (closed connection to 93.92.201.8:9186, reason: EOF)
[2024-01-30 15:12:41.105] [error] data(c).fork_iter()->first=12, fr.lower()=1
wart-node: ../src/node/eventloop/sync/block_download/block_download.cpp:216: void BlockDownload::Downloader::do_probe_requests(RequestSender): Assertion `data(c).fork_iter()->first == fr.lower()' failed.
Aborted (core dumped)
JulsKawa commented 8 months ago

I'm not sure I understand the code, but I have a hypothesis: the code that causes the problem uses connections (and makes requests to them), so you can see that there's a disconnection just before the crash. We can therefore assume that this code is making requests to nodes that are no longer connected, which may have led to the error. Assertion cannot be done if there is an error / no value

2nd hypothesis: this bug is linked to a snowball effect, with one node disconnecting in the wrong way, causing other nodes to disconnect, etc, etc, ...

ByPumbaa commented 8 months ago

Thank you indeed I also suspect this. It is just really strange because we protected the access with classes that guarantee that the two quantities in the assert should always be equal, we will continue with investigation. Thank you.

JulsKawa commented 8 months ago

Update on last version :

[21:31]Warscout2: @Rafiki[2024-02-04 20:21:00.590] [info] Connected to 9 peers (new peer 45.91.203.135:9186)
[2024-02-04 20:21:01.360] [info] Syncing from 74.122.131.1:9186
[2024-02-04 20:21:01.360] [info] Syncing... (height 953559 of 953560)
[2024-02-04 20:21:01.402] [info] Synced. (height 953560).
[2024-02-04 20:21:01.519] [info] Connected to 8 peers (closed connection to 45.91.203.135:9186, reason: EOF)
[2024-02-04 20:21:02.336] [info] Connected to 9 peers (new peer 45.91.203.135:9186)
[2024-02-04 20:21:03.286] [info] Connected to 8 peers (closed connection to 45.91.203.135:9186, reason: EOF)
[2024-02-04 20:21:08.117] [info] Connected to 9 peers (new peer 45.91.203.135:9186)
[2024-02-04 20:21:08.639] [info] Connected to 8 peers (closed connection to 45.91.203.135:9186, reason: EOF)
[2024-02-04 20:21:27.220] [info] Connected to 9 peers (new peer 45.91.203.135:9186)
[2024-02-04 20:21:27.925] [info] Connected to 8 peers (closed connection to 45.91.203.135:9186, reason: EOF)
[2024-02-04 20:21:29.347] [info] Connected to 9 peers (new peer 45.91.203.135:9186)
[2024-02-04 20:21:30.373] [info] Connected to 8 peers (closed connection to 45.91.203.135:9186, reason: EOF)
[2024-02-04 20:21:32.978] [info] Connected to 9 peers (new peer 45.91.203.135:9186)
[2024-02-04 20:21:33.282] [info] Connected to 8 peers (closed connection to 45.91.203.135:9186, reason: EOF)
[2024-02-04 20:21:37.330] [info] Syncing from 37.114.63.165:9186
[2024-02-04 20:21:37.330] [info] Syncing... (height 953560 of 953561)
malloc(): invalid next size (unsorted)
Aborted (core dumped)
JulsKawa commented 7 months ago

Should be fixed with the latest version.