Skip to content

hive eest: flaky EIP-7928 test_bal_invalid_extraneous_entries on glamsterdam-devnet shard #21364

@taratorio

Description

@taratorio

The Hive EEST glamsterdam-devnet shard sees this test fail intermittently in the merge queue. In the 24h window before #21361, 7 of 14 failing merge-group runs included at least one parametrization of this test, spread across 5 different parametrizations:

Parametrization Times observed Error mode
same_tx-extra_nonce 3 B
same_tx-extra_account_access 3 A
same_tx-extra_storage_read 1 A
out_of_bounds-extra_storage_read 1 A
system_tx-extra_account_access 2 A

Two distinct error modes are observed.

Mode A — wrong-cause classification (6 of 7 occurrences, 4 of 5 parametrizations)

Undefined exception message:
  expected exception: "BlockException.INVALID_BLOCK_ACCESS_LIST"
  returned exception: "previously known bad block"
  (mapper: "ErigonExceptionMapper")

Same shape as the EIP-7954 issue tracked in #21363 — the test offers the bad block a second time and erigon classifies it as "previously known bad block" rather than re-deriving the original rejection reason. Plausibly the same root cause as #21363 surfacing on a different EIP's fixture.

Mode B — different validation path fires first (3 of 7 occurrences, only the same_tx-extra_nonce parametrization)

Client returned unexpected validation error:
  got:      "[BlockException.INVALID_STATE_ROOT] [5/5 Execution] invalid block: wrong trie root, block=1"
  expected: "BlockException.INVALID_BLOCK_ACCESS_LIST"

Erigon rejects the block for a state-root mismatch rather than for the bad BAL. The fixture for same_tx-extra_nonce adds a spurious nonce entry to the BAL, and execution catches the resulting state divergence via the trie root before the BAL invariant check fires. Looks like a check-ordering / spec-interpretation discrepancy rather than a flake — same_tx-extra_nonce was Mode B in every run where it failed.

Test

tests/amsterdam/eip7928_block_level_access_lists/test_block_access_lists_invalid::test_bal_invalid_extraneous_entries[<parametrization>]

Why this is open

#21361 raised max-failures for the shard from 2 → 4 so the merge queue tolerates this on top of the 2 known-tolerated baseline failures and the deterministic EIP-7954 issue tracked in #21363. This issue tracks the actual fix; when both this and #21363 are resolved we ratchet max-failures back down.

Example failing jobs

Acceptance

  • Mode A fixed (likely shares a root cause with hive eest: flaky EIP-7954 test_max_initcode_size on glamsterdam-devnet shard #21363 — exception mapper losing the original rejection reason on the second submission of a known-bad block)
  • Mode B fixed (BAL validator should reject same_tx-extra_nonce for INVALID_BLOCK_ACCESS_LIST before the state-root check fires)
  • Test passes consistently across all parametrizations and consecutive glamsterdam-devnet shard runs
  • max-failures in .github/workflows/test-hive-eest.yml is lowered once both flakes are fixed

Metadata

Metadata

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions