node0 stderr bitcoind: validation.cpp:5392: void ChainstateManager::CheckBlockIndex() const: Assertion `!c->setBlockIndexCandidates.contains(const_cast<CBlockIndex*>(pindex))’ failed. #33948

issue maflcko openend this issue on November 26, 2025
  1. maflcko commented at 11:32 am on November 26, 2025: member

    Just ran into this crash in the nightly CI, which was using llvm 22~++20251125085442+ed95c4d6ecf0-1~exp1~20251125085501.1311. It may be a compiler error, but it is odd that only one test was failing:

    https://github.com/maflcko/bitcoin-core-nightly/actions/runs/19692916493/job/56412271437#step:10:6430

    0 node0 stderr bitcoind: validation.cpp:5392: void ChainstateManager::CheckBlockIndex() const: Assertion `!c->setBlockIndexCandidates.contains(const_cast<CBlockIndex*>(pindex))' failed. 
    
     0...
     1 node0 2025-11-26T05:23:50.207878Z [initload] [util/thread.cpp:22] [void util::TraceThread(std::string_view, std::function<void ()>)] initload thread exit 
     2 node0 2025-11-26T05:23:50.207921Z [net] [util/thread.cpp:20] [void util::TraceThread(std::string_view, std::function<void ()>)] net thread start 
     3 node0 2025-11-26T05:23:50.208026Z [addcon] [util/thread.cpp:20] [void util::TraceThread(std::string_view, std::function<void ()>)] addcon thread start 
     4 node0 2025-11-26T05:23:50.208076Z [init] [noui.cpp:57] [void noui_InitMessage(const std::string &)] init message: Done loading 
     5 node0 2025-11-26T05:23:50.208131Z [msghand] [util/thread.cpp:20] [void util::TraceThread(std::string_view, std::function<void ()>)] msghand thread start 
     6 node0 2025-11-26T05:23:50.300411Z [http] [httpserver.cpp:308] [void http_request_cb(struct evhttp_request *, void *)] [http] Received a POST request for / from 127.0.0.1:53008 
     7 node0 2025-11-26T05:23:50.301476Z [httpworker.0] [rpc/request.cpp:243] [void JSONRPCRequest::parse(const UniValue &)] [rpc] ThreadRPCServer method=getblockcount user=__cookie__ 
     8 node0 2025-11-26T05:23:50.302068Z [http] [httpserver.cpp:308] [void http_request_cb(struct evhttp_request *, void *)] [http] Received a POST request for / from 127.0.0.1:53008 
     9 node0 2025-11-26T05:23:50.302154Z [httpworker.1] [rpc/request.cpp:243] [void JSONRPCRequest::parse(const UniValue &)] [rpc] ThreadRPCServer method=getmempoolinfo user=__cookie__ 
    10 test  2025-11-26T05:23:50.302472Z TestFramework.node0 (DEBUG): RPC successfully started 
    11 test  2025-11-26T05:23:50.303502Z TestFramework.node0 (DEBUG): TestNode.generate() dispatches `generate` call to `generatetoaddress` 
    12 node0 2025-11-26T05:23:50.303964Z [http] [httpserver.cpp:308] [void http_request_cb(struct evhttp_request *, void *)] [http] Received a POST request for / from 127.0.0.1:53008 
    13 node0 2025-11-26T05:23:50.304029Z [httpworker.0] [rpc/request.cpp:243] [void JSONRPCRequest::parse(const UniValue &)] [rpc] ThreadRPCServer method=generatetoaddress user=__cookie__ 
    14 node0 2025-11-26T05:23:50.304103Z [httpworker.0] [node/miner.cpp:173] [std::unique_ptr<CBlockTemplate> node::BlockAssembler::CreateNewBlock()] CreateNewBlock(): block weight: 904 txs: 0 fees: 0 sigops 400 
    15 node0 2025-11-26T05:23:50.304141Z [httpworker.0] [validation.cpp:2405] [bool Chainstate::ConnectBlock(const CBlock &, BlockValidationState &, CBlockIndex *, CCoinsViewCache &, bool)] [bench]     - Sanity checks: 0.00ms [0.00s (0.00ms/blk)] 
    16 node0 2025-11-26T05:23:50.304159Z [httpworker.0] [validation.cpp:2507] [bool Chainstate::ConnectBlock(const CBlock &, BlockValidationState &, CBlockIndex *, CCoinsViewCache &, bool)] [bench]     - Fork checks: 0.02ms [0.00s (0.02ms/blk)] 
    17 node0 2025-11-26T05:23:50.304171Z [httpworker.0] [validation.cpp:2513] [bool Chainstate::ConnectBlock(const CBlock &, BlockValidationState &, CBlockIndex *, CCoinsViewCache &, bool)] Enabling script verification at block [#228](/bitcoin-bitcoin/228/) (2a5aefafbdc44a7bc7f446f5e10b5cfb3d2bb92c4213f8c17356455f105d00fc): assumevalid=0 (always verify). 
    18 node0 2025-11-26T05:23:50.304179Z [httpworker.0] [validation.cpp:2622] [bool Chainstate::ConnectBlock(const CBlock &, BlockValidationState &, CBlockIndex *, CCoinsViewCache &, bool)] [bench]       - Connect 1 transactions: 0.02ms (0.019ms/tx, 0.000ms/txin) [0.00s (0.02ms/blk)] 
    19 node0 2025-11-26T05:23:50.304189Z [httpworker.0] [validation.cpp:2645] [bool Chainstate::ConnectBlock(const CBlock &, BlockValidationState &, CBlockIndex *, CCoinsViewCache &, bool)] [bench]     - Verify 0 txins: 0.03ms (0.000ms/txin) [0.00s (0.03ms/blk)] 
    20 node0 2025-11-26T05:23:50.304194Z [httpworker.0] [node/miner.cpp:191] [std::unique_ptr<CBlockTemplate> node::BlockAssembler::CreateNewBlock()] [bench] CreateNewBlock() chunks: 0.02ms, validity: 0.10ms (total 0.12ms) 
    21 test  2025-11-26T05:23:50.742247Z TestFramework (DEBUG): Destroying ZMQ context 
    22 test  2025-11-26T05:23:50.743550Z TestFramework (ERROR): Unexpected exception 
    23                                   Traceback (most recent call last):
    24                                     File "/__w/bitcoin-core-nightly/bitcoin-core-nightly/test/functional/test_framework/test_framework.py", line 142, in main
    25                                       self.run_test()
    26                                     File "/__w/bitcoin-core-nightly/bitcoin-core-nightly/bld/test/functional/interface_zmq.py", line 131, in run_test
    27                                       self.test_multiple_interfaces()
    28                                     File "/__w/bitcoin-core-nightly/bitcoin-core-nightly/bld/test/functional/interface_zmq.py", line 563, in test_multiple_interfaces
    29                                       subscribers = self.setup_zmq_test([
    30                                                     ^^^^^^^^^^^^^^^^^^^^^
    31                                     File "/__w/bitcoin-core-nightly/bitcoin-core-nightly/bld/test/functional/interface_zmq.py", line 162, in setup_zmq_test
    32                                       test_block = ZMQTestSetupBlock(self, self.nodes[0])
    33                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    34                                     File "/__w/bitcoin-core-nightly/bitcoin-core-nightly/bld/test/functional/interface_zmq.py", line 93, in __init__
    35                                       self.block_hash = test_framework.generate(node, 1, sync_fun=test_framework.no_op)[0]
    36                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    37                                     File "/__w/bitcoin-core-nightly/bitcoin-core-nightly/test/functional/test_framework/test_framework.py", line 660, in generate
    38                                       blocks = generator.generate(*args, called_by_framework=True, **kwargs)
    39                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    40                                     File "/__w/bitcoin-core-nightly/bitcoin-core-nightly/test/functional/test_framework/test_node.py", line 405, in generate
    41                                       return self.generatetoaddress(nblocks=nblocks, address=self.get_deterministic_priv_key().address, maxtries=maxtries, **kwargs)
    42                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    43                                     File "/__w/bitcoin-core-nightly/bitcoin-core-nightly/test/functional/test_framework/test_node.py", line 413, in generatetoaddress
    44                                       return self.__getattr__('generatetoaddress')(*args, **kwargs)
    45                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    46                                     File "/__w/bitcoin-core-nightly/bitcoin-core-nightly/test/functional/test_framework/coverage.py", line 50, in __call__
    47                                       return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)
    48                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    49                                     File "/__w/bitcoin-core-nightly/bitcoin-core-nightly/test/functional/test_framework/authproxy.py", line 137, in __call__
    50                                       response, status = self._request('POST', self.__url.path, postdata.encode('utf-8'))
    51                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    52                                     File "/__w/bitcoin-core-nightly/bitcoin-core-nightly/test/functional/test_framework/authproxy.py", line 111, in _request
    53                                       return self._get_response()
    54                                              ^^^^^^^^^^^^^^^^^^^^
    55                                     File "/__w/bitcoin-core-nightly/bitcoin-core-nightly/test/functional/test_framework/authproxy.py", line 174, in _get_response
    56                                       http_response = self.__conn.getresponse()
    57                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^
    58                                     File "/usr/lib/python3.12/http/client.py", line 1428, in getresponse
    59                                       response.begin()
    60                                     File "/usr/lib/python3.12/http/client.py", line 331, in begin
    61                                       version, status, reason = self._read_status()
    62                                                                 ^^^^^^^^^^^^^^^^^^^
    63                                     File "/usr/lib/python3.12/http/client.py", line 300, in _read_status
    64                                       raise RemoteDisconnected("Remote end closed connection without"
    65                                   http.client.RemoteDisconnected: Remote end closed connection without response
    
  2. maflcko added the label Validation on Nov 26, 2025
  3. maflcko added the label CI failed on Nov 26, 2025
  4. maflcko commented at 9:31 am on November 27, 2025: member
    It passed with 22~++20251126081852+97732ddb5d92-1~exp1, fwiw.
  5. 151henry151 commented at 11:27 pm on November 27, 2025: contributor
    This looks similar to #32173 (same line in CheckBlockIndex). Could the experimental LLVM 22 compiler be exposing a logic bug in setBlockIndexCandidates maintenance, similar to issues fixed in #16849 and #30479? The compiler might be hitting a consistency issue with setBlockIndexCandidates that happens when cs_main is released during block processing.
  6. maflcko closed this on Nov 28, 2025


github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2025-12-17 06:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me