-
Notifications
You must be signed in to change notification settings - Fork 3.6k
cannon: Noop mprotect syscall #15792
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #15792 +/- ##
===========================================
- Coverage 46.82% 46.81% -0.01%
===========================================
Files 1336 1336
Lines 107733 107738 +5
===========================================
- Hits 50446 50438 -8
- Misses 53683 53695 +12
- Partials 3604 3605 +1
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
Would be interesting to know what access level go is actually setting. From https://pubs.opengroup.org/onlinepubs/9699919799/functions/mprotect.html:
An implementation may permit accesses other than those specified by prot; however, no implementation shall permit a write to succeed where PROT_WRITE has not been set or shall permit any access where PROT_NONE alone has been set.
As no-op may be in compliance. But also:
The behavior of this function is unspecified if the mapping was not established by a call to mmap().
Not sure what would be getting mmaped in cannon so that alone may justify the no-op implementation.
The only mprotect flag used by the runtime is |
* Bump mipsversion (#15739) * op-service: Fix length checks when parsing super roots (#15708) * op-service: Fix length checks when parsing super roots. * op-program: Fix unmarshalTransitionSate spelling * feat(devstack): propagate observability context (#15727) This change introduces optional propagation of context through environment variables. This is helpful if a calling test runner (such as op-acceptor) generates its own observability information, as the relationships are preserved across processes. * op-program: Optimisations recommended by audit (#15709) * op-program: Check block timestamp before retrieving receipts. * op-program: Stop checking chains once a replacement block is inserted. The replacement block means all blocks will be re-checked so checking further chains now is likely to be a waste as a valid response can't be trusted anyway. * op-program: Skip HazardUnsafeFrontierChecks op-program only ever progresses one block per chain at a time so the frontier checks performed by op-supervisor aren't required since the parent of any available initiating message block is always the agreed block or earlier and thus already cross-unsafe (and cross-safe and cross-finalized). * supervisor: Fix finality log message (#15738) * devstack: split options into lifecycle stages, make interop customizable (#15720) * devstack: split options into lifecycle stages, make interop customizable * devstack: fix useInterop usage, handle scheduled interop fork * devstack: devnet-sdk/devstack/dsl/l2_network.go Co-authored-by: Teddy Knox <[email protected]> * devstack: debug-logs when option does not apply * devstack: dsl: generalize await fork time * devstack: fix CI * op-e2e: fix intentbuilder test --------- Co-authored-by: Teddy Knox <[email protected]> * op-e2e: Add action test for consolidation step prior to interop being active (#15637) * op-e2e: Add action test for consolidation step prior to interop being active. Mostly checks the supervisor can return super roots prior to interop. * op-e2e: Include invalid executing message prior to interop activating. Currently fails because both op-supervisor and op-program incorrectly re-org out the invalid message. * op-e2e: Don't deploy interop contracts in L2 genesis unless interop is active. Update pre-activation test to expect the executing message to revert. * op-e2e: make `NewL2FaultProofEnv` more defensive (#15713) * panic if HF is not explicitly handled * address comment * op-conductor: add warn log when miner proxy call fails (#15747) * op-deployer: remove legacy DeployAlphabetVM script (#15725) * op-deployer: remove legacy DeployAsterisc script (#15728) * chore: Dump logs when acceptance tests fail (#15742) * op-deployer: remove legacy DeployAltDA script (#15722) * op-deployer: remove legacy DeployAltDA script * DeployAltDA2: allow input.resolverRefundPercentage to be 0 * DeployAltDA2: remove test revert for resolverRefundPercentage=0 * rename DeployAltDA2 to DeployAltDA * op-acceptance-tests: interop: explicitly wait until l2 genesis pass (#15750) * chore(devnet-sdk): relocate telemetry package (#15752) * chore: descope interop bridges (#15726) Co-authored-by: AgusDuha <[email protected]> * op-proposer: clarify documentation for `poll-interval` (#15717) * improve flags * tweak * feat: updated standard validator tests (#15745) * feat: updated standard validator tests Updates the StandardValidator tests to look like the rest of the test suite. StandardValidator tests now run on upgrades without being mocked out. * fix: simplified sysconfig check * feat: add mising tests * fix: old console log * wip: Collect authoriship metrics (#15527) * op-challenger/op-dispute-mon: Load dispute game factory from multiple network args (#15744) * op-challenger: Support loading factory address with multiple networks Validates that the DisputeGameFactoryProxy address for all specified chains matches. Can still be overridden with --game-factory-address if required. * op-dispute-mon: Support loading factory address with multiple networks Validates that the DisputeGameFactoryProxy address for all specified chains matches. Can still be overridden with --game-factory-address if required. Increases safety of monitoring by allowing operators to name all networks they expect to be monitoring via the shared factory and dispute-mon will fail to start if one of them isn't actaully sharing that factory (according to the superchain-registry). * op-e2e: Generic program precompile action test (#15767) * op-e2e: Generic program precompile action test * fixup goimports * also assert on deactivated precompiles * fix semgrep solidity lint * fix mutating forks * op-acceptance-test: interop: TestMessagePassing: wait until supervisor sync (#15773) * op-node: move MeteredL1Fetcher (#15778) * op-supervisor: include chain id at logs in resuming from sealed block (#15781) * fix(telemetry): improve setup (#15776) We can be a little bit more precise in our telemetry enablement code: - disable traces and metrics defaults independently - keep the ability for the caller to override these choices In effect it only deactivates pointing to the local exporter by default, and does not longer disable opentelemetry altogether. * more cleanup (#15688) * more cleanup * more cleanup * add set init bond * add set init bond * improvements * improvements * improvements * improvements * fix failing standard validator tests * rm unnecessary import --------- Co-authored-by: Maurelian <[email protected]> * op-chain-ops: use generic CheckNoZeroAddresses instead of struct-specific methods (#15785) * op-program: Fix regeneration of optimistic blocks when they have been pruned (#15741) * op-program: Fix regeneration of optimistic blocks when they have been pruned. Update action tests to create a verifier node to run FPP against that only contains canonical blocks so replaced optimistic blocks are not available without regeneration. * op-program: Update tests to expect fetching output roots and block data. * op-program: Update baseline to include new call stacks into rawdb.NewStateFreezer Only the in-memory version is ever actually used but the analyzer can't detect that so reports issues with the alternate path that goes through newResettableFreezer. * Add comment. * Improve comment. * Panic on Failed to Enqueue (#15740) * feat(kurtosis-devnet): add telemetry support for provisioning (#15777) Add tracing information to the most relevant parts of devnet provisioning: - pre-requisite builds (docker images, contracts, ...) - kurtosis execution For the most part it involves passing the context around a bit more. The kurtosis "integration" is hacked around the logs handler though, which is a bit dodgy, especially around span management. It'd be better to have native kurtosis support, but in the meantime it gets the job done. * op-program: Simplify op-program analysis baseline (#15743) * op-program: Fix regeneration of optimistic blocks when they have been pruned. Update action tests to create a verifier node to run FPP against that only contains canonical blocks so replaced optimistic blocks are not available without regeneration. * op-program: Update tests to expect fetching output roots and block data. * op-program: Update baseline to include new call stacks into rawdb.NewStateFreezer Only the in-memory version is ever actually used but the analyzer can't detect that so reports issues with the alternate path that goes through newResettableFreezer. * Add comment. * Improve comment. * op-program: Remove file, line and absPath fields from baseline. These are ignored by vm-compat but create a lot of noise in diffs. * Resort baseline to match output from vm-compat. * Restore usage of baseline. * Add readme. * feat(op-acceptance-tests): base; rpc connectivity. (#15696) * feat(op-acceptance-tests): base; rpc connectivity. * check chainid * cannon: Noop mprotect syscall (#15792) * op-devstack: split from devnet-sdk, update docs (#15804) * feat(op-challenger): Super kona/asterisc support (#15805) * ci: cover op-devstack (#15813) * op-conductor: ensure a transparent proxy for miner_setMaxDASize (#15772) * op-conductor: ensure a transparent proxy for miner_setMaxDASize Previously we were translating an error from the origin server into a "false" boolean return value. This messes up the error handling in downstream software like the batcher. Adds an integration test to ensure correct behaviour. Only use debug logging because errors are part of normal proxy behavior. * noncomplicant sequencer returns an http 200 but with JSON-RPC error response * tidy up * fix lint * use op-service MockRPC to simplify test * switch on error and warn log if not an RPC err * add test case for "sequencer down" and assert on logs * op-supervisor: migrate remaining geth interop type functionality (#15814) * init and exec msgs (#15624) Co-authored-by: Anton Evangelatov <[email protected]> * feat(op-acceptance-tests): added protocol discord (#15808) * fix(op-acceptance-tests): temporarily remove failing test. (#15809) * fix(op-acceptance-tests): temporarily remove failing test. * fixup acceptance-tests.yaml fix TODO format --------- Co-authored-by: Yann Hodique <[email protected]> * feat(op-acceptance-tests): add telemetry-friendly runner (#15818) This change basically moves some of the logic (creation of devnet, followed by test runs) for acceptance tests out of justfile, and into a trivial Go binary. This in particular enables us to tie together the telemetry traces across those 2 phases, and gain full visibility over the various activities involved. * op-fetcher: make output-file flag optional (#15819) * op-fetcher: make output-file flag optional * update FetchChainInfo forge artifacts * update docs for output-file flag * op-supervisor,op-service: rm deprecated CrossDerivedFrom, remove unused stale old supervisor test backends (#15815) * Update rc patch guidance (#15795) * Update rc patch guidance * Apply suggestions from code review * Fix Devnet Metrics Collect (#15807) * testing * test bucket * bucket storage * fix * fix * fix(kt-devnet): reflect op-deployer changes (#15822) some naming/casing has changed in op-deployer adjust the downstream code accordingly * op-devstack, op-acceptance-tests: interop: minimal sync test for sysgo + sysext with dsl (#15816) * ignore invalid addrbook * make backend constant * sysext skeleton for sequencer * fine grained preset per backend * we love dsl * rename for consistency * sync test that targets sysgo AND sysext * add an issue and lint * also target sysext * happy lint * dedup * do not enable sync test in acceptor yet * graceful * convention * rename restart->start for dsl * global level backend detection and refactor * dsl helper * Refactor using dsl * Fix hardcoded block label * convention for init devstack * op-devstack, op-acceptance-tests: interop: minimal messaging test for sysgo + sysext with dsl (#15840) * Temporal sysext op-faucet fix for path * EOA DSL for interop msg * Supervisor DSL for advancing unsafe head per chain * Minimal NAT messaging test poc * op-node,op-supervisor: support emitter/executor prioritization (#15828) * op-node,op-supervisor: support emitter/executor prioritization * op-node: event priority enum * feat(kt-devnet): support redundant services (#15830) * feat(kt-devnet): support redundant services * fix(kt-devnet): recover dependency set retrieval * fix(kt-devnet): rewrite endpoints parsing logic The previous approach was becoming unsustainable, and increasingly brittle. As we are changing the shape of naming conventions in optimism-package, use a pluggable approach instead, where each service type can have its own parsing logic associated to it. * fix(kt-devnet): adjust devnet definitions * fix: interop defaults * chore: Bump `kona` + `asterisc` (#15823) * fix(kt-devnet): expose faucet as a feature (#15856) * fix(devstack): honor RPC endpoint path (#15857) Ensure we don't mutate the environment descriptor with information that doesn't come from kurtosis, as it gets in the way of passing it around in a stable form. Instead, teach the client generation code to take path into consideration. * op-deployer: Add addGameType command (#15746) * op-deployer: Add addGameType command * lint * add unmarshal test * contracts nits * CR items * lint * cr updates * lint * fix(kt-devnet): explicitly enable interop (#15865) * fix(op-acceptance-tests): test; base - rpc connectivity (#15833) * remove dead code (#15751) * op-deployer: use op-supervisor StaticConfigDependencySet struct (#15855) * op-deployer: use op-supervisor StaticConfigDependencySet struct * fix chainId type conversion * feat(op-acceptance-tests): op-acceptor v0.1.11 (#15867) * op-supervisor: add custom toml methods to StaticConfigDependency (#15888) * op-supervisor: add custom toml methods to StaticConfigDependency * add toml tags for StaticConfigDependency fields * chore: bump foundry version (#15766) * op-acceptance-tests, op-devstack: refactor to remove global state (#15890) Specifically, the backend variable and `SimpleInterop` functions. * op-acceptance-tests: interop: add first load test (#15768) Also set a deadline on the top-level test context that times out 30s before the `*testing.T.Deadline()` to avoid panics. * op-batcher: wire up `AdditionalThrottlingEndpointsFlag` (#15906) * op-batcher: wire up AdditionalThrottlingEndpointsFlag properly * add test * Revert "add test"t This reverts commit 146f03d. * supervisor: Trigger Indexing on Local Safe Update (#15749) * op-devstack: fix orchestrator option system hooks (#15927) * op-acceptance-tests: Pre-interop proofs readiness checks (#15905) * op-acceptance-tests: Pre-interop proofs readiness checks These checks ensure that chains are ready for the interop upgrade * add timeout to preinterop gate * op-acceptance-tests, op-devstack: use proxyd in load test if available (#15914) * op-acceptance-tests, op-devstack: use proxyd in load test if available Fall back to a standard EL if unavailable. Also expands on a design principle in op-devstack/README.md to highlight a papercut encountered by and partially fixed in this PR. * address review comments * use constant instead of string * [U16] StandardValidator Validation Overrides (#15834) * ... * fix error concatenation * fix checks * fix checks * better approach, add some tests * better approach, add more tests * add more tests * improvementz * rm guardian override, fixes * fixes * fixes * fixes... * optimized approach * add tests for no allow failure error with overrides * feat: add u16 reviews from Wonderland and Cantina (#15929) * feat: u16 audit fixes (#15939) * fix: use internal modifier for guardian checks Updates the AnchorStateRegistry to use an internal modifier for checking that functions can only be called by the Guardian address. * fix: clean up upgrade functions * fix: uniform names in upgrade function * fix: use same version in encoding function * fix: add warning comment to ProxyAdminOwnedBase * fix: allow claiming credit when paused if mode set * fix: no migration while paused * fix: no pause extension if not already paused * fix: various minor miscellaneous improvements * chore: pre-pr work * fix: test failures * fix: versions in tests * fix: remove old spacer assertions * contracts: Prepare MIPS64 semver for release (#15945) * Update op-conductor to track rollup-boost state (#15316) * op-supervisor: add StaticConfigDependencySet.Dependencies() getter (#15951) * op-supervisor: add StaticConfigDependencySet.Dependencies() getter * return copy of ds.dependencies for safety * more detailed comment * fix(kt-devnet): expose L2 rollup config (#15933) * op-acceptance-tests: interop: Avoid messaging test race (#15954) * feat: add script for opcm verification (#15420) * feat: add script for opcm verification * testing * testing * feat: switch to separated verification and presentation * feat: opcm verification for v200 * feat: use a contract instead * fix: ci checks * fix: use randomness not fuzzing * fix: skip tests for coverage * feat: automatically scan opcm prefixed properties * fix: few more test fixes * feat: add single verification check * feat: add etherscan constructor verification * fix: errors found while testing * op-devstack: allow for shorter test deadlines (#15943) * op-node: consume L1 signals and p2p blocks as events (#15793) * op-node: simplify L1 and p2p input events * op-devstack: fix synctest flake * op-node: implement review suggestions * op-{acceptance-tests|devstack}: sync test: op-supervisor ahead of op-node, unsafe chain known with DSL (#15878) * Move simpleinterop sync test to subdir * embed chainid to dsl L2CL * dsl can choose second l2cl and l2el * redundancy interop dsl * More traversal of fetching monorepo contracts * DSL for l2 components + supervisor * better L2CL DSL * Add TestUnsafeChainKnownToL2CL test with DSL * bad copy paste * DSL consistency * rebase fix * better naming * type safety * refactor * better DSL helper names and godoc * naming error * go: Update op-geth to v1.101511.0-rc.1, based on geth v1.15.11 (#15829) * go: Update op-geth to v1.101507.0, based on geth v1.15.7 * op-program: Refresh cannon compat report * add missing mt64 vm profile config * go: Update op-geth to v1.101510.0, based on geth v1.15.10 * go: Update op-geth to v1.101511.0, based on geth v1.15.11 --------- Co-authored-by: inphi <[email protected]> * fix: have SuperchainConfig expose legacy paused function (#15959) Updates the SuperchainConfig so that it exposes the legacy paused function. Paused is the only function that was removed from the interface. * fix: small issues in portal comments (#15960) * fix: small issues in portal comments * fix: pre-pr * feat: update StandardValidator for U16 (#15923) * [U16] Update Anchor Root Validation approach (#15918) * [U16] Update Anchor Root Validation approach * Update packages/contracts-bedrock/src/L1/StandardValidator.sol Co-authored-by: Adrian Sutton <[email protected]> * fix tests * fixes * fix failing tests * improve, add tests --------- Co-authored-by: Adrian Sutton <[email protected]> * ctb: Add natspec to the StandardValidator (#15969) * ctb: Add natspec to the StandardValidator * Remove @return comments, we don't use them in most other contracts * remove @param too * Remove stringEq * fix(op-acceptance-tests): make sure to use provisioned devnet (#15970) By default devstack-based tests use the sysgo backend. In the context of acceptance tests we want to make sure the devnet we just provisioned is being used. * fix(devnet-sdk): allow overriding ctrl interface detection (#15971) In the context of op-acceptor, we now potentially override the definition of the received devnet to graft add-ons. This loses the ability to reach the control interface though. This change re-enables this, by providing an override mechanism that op-acceptor can make use of. * op-{acceptance-tests|devstack}: sync test: op-node ahead of op-supervisor with DSL (#15908) * DSL for l2 components + supervisor * type safety * support multisupervisor system * expose interopRPC towards DSL * Add TestL2CLAheadOfSupervisor with DSL * better naming * godoc and better DSL naming and typing * prefix with decimal for supervisor ordering * Capitalize test log msgs * rebase fix * More graceful rewind * spread out godoc scenario in test * Add comment about shim L2CL interop fields * feat(op-acceptance-tests): run AT's pre-merge (#15953) Runs a subset of acceptance tests pre-merge to develop, in a non-blocking way. Also makes the test workflow at least 5 minutes faster. * Update CODEOWNERS (#15956) Add a CODEOWNERS comment used to require a minimal number of reviews for that specific path * feat(op-acceptance-tests): op-acceptor v0.2.0 (#15975) * fix: StandardValidator incorrect checks (#15977) Fixes a number of incorrect checks added to the StandardValidator recently. * refactor(test): improve DataAvailabilityChallenge test structure and documentation (#15650) * refactor(test): improve DataAvailabilityChallenge test structure and documentation - consolidate test initialization into a single DataAvailabilityChallenge_TestInit contract - organize individual test functions into separate contracts inheriting from TestInit - add @title and @notice tags to all test contracts - ensure comment lines stay within 100 character limit * refactor(test): add natspec comments to test functions * refactor(test): fix formatting and enforce documentation line limits - ran `just pre-pr` to resolve format check failures - ensured all inline comments stay within the 100-character limit * refactor(test): improve L1ERC721Bridge test structure and documentation (#15735) * refactor(test): improve L1ERC721Bridge test structure and documentation - consolidate test initialization into a single L1ERC721Bridge_TestInit contract - organize individual test functions into separate contracts inheriting from TestInit - add @title and @notice tags to all test contracts - convert @dev to @notice tags where appropriate - ensure comment lines stay within 100 character limit - move test_pause_finalizeBridgeERC721_reverts into FinalizeBridgeERC721 contract - rename test_pause_finalizeBridgeERC721_reverts to test_finalizeBridgeERC721_paused_reverts - inline PauseFail contract's setup directly into the renamed test function * fix(test): fix bridge reference and remove @dev tag in L1ERC721Bridge tests - Replace l1StandardBridge with l1ERC721Bridge in test_pause_matchesSuperchainConfig_succeeds test assertions - Remove @dev tag from inside test_finalizeBridgeERC721_paused_reverts function test comment * Increase MAX_GAS_LIMIT to a new value that's safe with MT Cannon (#15864) --------- Co-authored-by: mbaxter <[email protected]> Co-authored-by: Adrian Sutton <[email protected]> Co-authored-by: Yann Hodique <[email protected]> Co-authored-by: Axel Kingsley <[email protected]> Co-authored-by: protolambda <[email protected]> Co-authored-by: Teddy Knox <[email protected]> Co-authored-by: zhiqiangxu <[email protected]> Co-authored-by: George Knee <[email protected]> Co-authored-by: Sam Stokes <[email protected]> Co-authored-by: Ján Jakub Naništa <[email protected]> Co-authored-by: Park Changwan <[email protected]> Co-authored-by: Hex <[email protected]> Co-authored-by: AgusDuha <[email protected]> Co-authored-by: smartcontracts <[email protected]> Co-authored-by: Inphi <[email protected]> Co-authored-by: Michael Amadi <[email protected]> Co-authored-by: Stefano Charissis <[email protected]> Co-authored-by: clabby <[email protected]> Co-authored-by: Anton Evangelatov <[email protected]> Co-authored-by: Anton Evangelatov <[email protected]> Co-authored-by: Raffaele <[email protected]> Co-authored-by: Matthew Slipper <[email protected]> Co-authored-by: steven <[email protected]> Co-authored-by: Josh Klopfenstein <[email protected]> Co-authored-by: Sebastian Stammler <[email protected]> Co-authored-by: Ariel Diaz <[email protected]> Co-authored-by: Paul Dowman <[email protected]>
No-ops the
mprotect(2)
syscall for go1.23 compatibility. The go1.23 runtime may use mprotect in certain situations. A no-op approach is sufficient for two reasons:Closes #13447