Skip to content

fix(avm): defensively copy MemoryValues#19512

Merged
fcarreiro merged 1 commit into
merge-train/avmfrom
fc/execution-defensive-copy
Jan 12, 2026
Merged

fix(avm): defensively copy MemoryValues#19512
fcarreiro merged 1 commit into
merge-train/avmfrom
fc/execution-defensive-copy

Conversation

@fcarreiro

Copy link
Copy Markdown
Contributor

Stepan found a bug where we were using a MemoryValue after a set in mov. This was already fixed.

This PR defensively copies some MemoryValues so that the underlying gadgets (e.g. ALU and bitwise) do not need to make crazy assumptions about the MemoryValue references they get as parameters.

I expect that this shouldn't have a noticeable performance impact but we'll see in the benchmarks.

Copy link
Copy Markdown
Contributor Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@fcarreiro fcarreiro requested a review from defkit January 12, 2026 17:14

@defkit defkit left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀

@defkit defkit left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should it also be added for success copy and ecc?

@AztecBot

Copy link
Copy Markdown
Collaborator

Flakey Tests

🤖 says: This CI run detected 2 tests that failed, but were tolerated due to a .test_patterns.yml entry.

\033FLAKED\033 (8;;http://ci.aztec-labs.com/e8914b3741e4eb1c�e8914b3741e4eb1c8;;�):  yarn-project/end-to-end/scripts/run_test.sh simple src/e2e_epochs/epochs_invalidate_block.parallel.test.ts "committee member invalidates a block if proposer does not come through" (94s) (code: 1) group:e2e-p2p-epoch-flakes (\033fcarreiro\033: fix(avm): defensively copy MemoryValues)
\033FLAKED\033 (8;;http://ci.aztec-labs.com/f3464622167b3fcc�f3464622167b3fcc8;;�): yarn-project/end-to-end/scripts/run_test.sh web3signer src/composed/web3signer/e2e_multi_validator_node_key_store.test.ts (36s) (code: 1) (\033fcarreiro\033: fix(avm): defensively copy MemoryValues)

fcarreiro commented Jan 12, 2026

Copy link
Copy Markdown
Contributor Author

Merge activity

  • Jan 12, 6:03 PM UTC: A user started a stack merge that includes this pull request via Graphite.
  • Jan 12, 6:04 PM UTC: @fcarreiro merged this pull request with Graphite.

@fcarreiro fcarreiro merged commit 6f6358a into merge-train/avm Jan 12, 2026
9 checks passed
@fcarreiro fcarreiro deleted the fc/execution-defensive-copy branch January 12, 2026 18:04
@AztecBot AztecBot mentioned this pull request Jan 12, 2026
github-merge-queue Bot pushed a commit that referenced this pull request Jan 12, 2026
BEGIN_COMMIT_OVERRIDE
feat(avm security): add static check for isolated/unused columns
(#19489)
feat(avm): use noop calldata hasher in fast sim (#19495)
chore(avm): rename indirect -> addressing mode (#19491)
chore(avm): small cursor optimizations
chore(avm):! rename indirect -> addressing mode (PIL) (#19493)
fix(avm): constraint when unwinding empty call stack (#19485)
feat(avm): Fuzz debug log and refactor env getter (#19494)
fix!: ecc add predicate completeness bug (#19471)
chore(avm): callstackmetadatacollector clarifications (#19490)
chore: sanity assert in execution for bytecode id (#19486)
fix!: sstore allowed injection of malicious write rows (#19470)
fix!: defensive ghost row constraints in bc_hashing pil (#19481)
fix(avm): fix execution::mov for mac? (#19507)
chore(avm)!: resolve execution TODOs (#19501)
fix!: multiple traces had ghost row injection vulnerabilities (#19480)
fix(avm): defensively copy MemoryValues (#19512)
feat: align TS and BB log levels (#19518)
END_COMMIT_OVERRIDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants