You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feature_governance.py appears to be intermittently failing around governance
vote propagation / superblock readiness. In #7327 CI, the linux64_sqlite-test / Test source job failed because one node only had 24
votes when the test expected all nodes to have 25.
File "test/functional/feature_governance.py", line 314, in run_test
assert_equal(node.gobject("count")["votes"], 25)
AssertionError: not(24 == 25)
The log reached:
Should see same YES and NO vote count for both triggers on all nodes now
Should have 25 votes on all nodes
then failed on the raw gobject("count")["votes"] == 25 assertion. This looks
timing/sync-sensitive: the preceding trigger Yes/No count waits had succeeded,
but the aggregate vote count was still one vote short on at least one node.
The framework change adds an optional spork_sync_timeout parameter to activate_by_name() while keeping the existing default timeout. Neither feature_governance.py nor its direct wait_for_sporks_same() call uses this
helper path. The modified feature_dip3_v19.py test passed in the same failing linux64_sqlite job.
Local reproduction signal
A local develop run also showed feature_governance.py instability, though at
a later assertion:
File "test/functional/feature_governance.py", line 342, in run_test
self.check_superblock()
File "test/functional/feature_governance.py", line 59, in check_superblock
assert_equal(payments_found, 2)
AssertionError: not(0 == 2)
That local failure is not the same assertion, but it supports that this test is
not stable independently of #7327's DIP3 v19-only change.
Suggested next steps
Add explicit waiting around the final aggregate gobject("count")["votes"]
check instead of asserting immediately after per-trigger count waits; and/or
investigate why the superblock payment assertion can fail after the earlier
governance vote checks appear to pass.
PR head at failing run: d452f3db84ca44c03680055c0e9dcb627d8cd5be
Check: linux64-test / Test source
Test: feature_governance.py --legacy-wallet
Seed: 864638944927215113
Failure mode matches this issue exactly: after Should see same YES and NO vote count for both triggers on all nodes now, the test reached Should have 25 votes on all nodes and failed at test/functional/feature_governance.py:313:
Scope note: #7416's current PR diff is limited to src/llmq/net_quorum.cpp and test/functional/p2p_quorum_data.py, so this governance vote-count failure is unrelated to that PR's QDATA vector-bound changes. The later #7416 head 4157ce53e6ae2b41ced3d1217bca0a0970d151d2 passed the full visible CI matrix, including linux64-test / Test source.
PR head at failing run: 5f660ae62355b8698bbed4acc4150a48ff242859
Check: linux64_ubsan-test / Test source
Test: feature_governance.py --legacy-wallet
Seed: 1999716623579542280
Failure mode matches this issue: after Should see same YES and NO vote count for both triggers on all nodes now, the test reached Should have 25 votes on all nodes and failed at test/functional/feature_governance.py:313:
Scope note: #7433 is the Bitcoin Core v0.26 backport batch 3 draft. Its PR diff does not touch test/functional/feature_governance.py. The only src/net_processing.cpp changes are the bitcoin#27625 transaction relay/mapRelay changes around non-mempool tx relay and most-recent-block transaction lookup; they do not change governance object/vote handling. A local rerun of the failing command on the PR branch passed:
Failure: line 303 timed out waiting for the isolated trigger YesCount to reach 1 after the test reconnected and resynchronized the isolated node; the effective wait was 20 seconds.
The descriptor variant passed in the same multiprocess job, and the legacy-wallet test passed on the exact same head in both linux64-test and linux64_ubsan-test.
The exact-head PR diff is limited to DKG queueing/validation files and focused DKG tests; it does not touch feature_governance.py or governance vote propagation.
This matches the existing intermittent governance vote-propagation/synchronization failure family. The PR branch was left unchanged.
The descriptor test exhausted all three runner attempts with this same intermittent missing-vote condition, while the legacy-wallet variant passed in the same job.
Scope evidence: #7479's actual merge-base/GitHub PR diff is limited to wallet coin-selection, wallet GUI/RPC/test adaptations, and its wallet transaction benchmark. It does not touch feature_governance.py or governance vote propagation. Attempt 2 then passed the full matrix at the identical head, including linux64_ubsan-test / Test source: https://github.com/dashpay/dash/actions/runs/30008651352/attempts/2
This is another instance of the pre-existing vote-propagation/synchronization flake tracked here. The PR branch was left unchanged.
Activity
thepastaclaw commentedon Jul 8, 2026
Another occurrence from #7416:
d452f3db84ca44c03680055c0e9dcb627d8cd5belinux64-test / Test sourcefeature_governance.py --legacy-wallet864638944927215113Failure mode matches this issue exactly: after
Should see same YES and NO vote count for both triggers on all nodes now, the test reachedShould have 25 votes on all nodesand failed attest/functional/feature_governance.py:313:Scope note: #7416's current PR diff is limited to
src/llmq/net_quorum.cppandtest/functional/p2p_quorum_data.py, so this governance vote-count failure is unrelated to that PR's QDATA vector-bound changes. The later #7416 head4157ce53e6ae2b41ced3d1217bca0a0970d151d2passed the full visible CI matrix, includinglinux64-test / Test source.thepastaclaw commentedon Jul 8, 2026
Another occurrence from #7433:
5f660ae62355b8698bbed4acc4150a48ff242859linux64_ubsan-test / Test sourcefeature_governance.py --legacy-wallet1999716623579542280Failure mode matches this issue: after
Should see same YES and NO vote count for both triggers on all nodes now, the test reachedShould have 25 votes on all nodesand failed attest/functional/feature_governance.py:313:Scope note: #7433 is the Bitcoin Core v0.26 backport batch 3 draft. Its PR diff does not touch
test/functional/feature_governance.py. The onlysrc/net_processing.cppchanges are the bitcoin#27625 transaction relay/mapRelay changes around non-mempool tx relay and most-recent-block transaction lookup; they do not change governance object/vote handling. A local rerun of the failing command on the PR branch passed:thepastaclaw commentedon Jul 18, 2026
New occurrence on #7401 at exact head 45821d0:
This matches the existing intermittent governance vote-propagation/synchronization failure family. The PR branch was left unchanged.
thepastaclaw commentedon Jul 24, 2026
Another occurrence from #7479 at exact head
bc52f0a9c79cc584342142fdf613d961b7df19b6:linux64_ubsan-test / Test sourcefeature_governance.py --descriptors4179883554465678946Should have 25 votes on all nodes,feature_governance.py:313observed 24 votes instead of 25:The descriptor test exhausted all three runner attempts with this same intermittent missing-vote condition, while the legacy-wallet variant passed in the same job.
Scope evidence: #7479's actual merge-base/GitHub PR diff is limited to wallet coin-selection, wallet GUI/RPC/test adaptations, and its wallet transaction benchmark. It does not touch
feature_governance.pyor governance vote propagation. Attempt 2 then passed the full matrix at the identical head, includinglinux64_ubsan-test / Test source: https://github.com/dashpay/dash/actions/runs/30008651352/attempts/2This is another instance of the pre-existing vote-propagation/synchronization flake tracked here. The PR branch was left unchanged.