Skip to content

fix(ethexe-runtime-common): make forbidden: gr_wait func and gr_wake with non-zero delay#5235

Merged
grishasobol merged 7 commits intomasterfrom
gsobol/ethexe/wake-waites
Mar 20, 2026
Merged

fix(ethexe-runtime-common): make forbidden: gr_wait func and gr_wake with non-zero delay#5235
grishasobol merged 7 commits intomasterfrom
gsobol/ethexe/wake-waites

Conversation

@grishasobol
Copy link
Member

@grishasobol grishasobol commented Mar 19, 2026

additionally introduce Ext custom implementation for ethexe

@semanticdiff-com
Copy link

semanticdiff-com bot commented Mar 19, 2026

Review changes with  SemanticDiff

Changed Files
File Status
  core/processor/src/lib.rs  12% smaller
  ethexe/runtime/common/src/journal.rs  5% smaller
  ethexe/runtime/common/src/lib.rs  2% smaller
  ethexe/processor/src/tests.rs  1% smaller
  Cargo.lock Unsupported file format
  core/processor/src/ext.rs  0% smaller
  ethexe/runtime/common/Cargo.toml Unsupported file format
  ethexe/runtime/common/src/ext.rs  0% smaller

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request enhances the ethexe runtime's stability and predictability by implementing stricter controls over specific syscalls. It prevents programs from indefinitely halting execution via gr_wait, disallows delayed message awakenings through gr_wake with non-zero delays, and caps the maximum duration for gr_wait_up_to calls. These changes are enforced through a new Ext wrapper and corresponding updates to journal handling, ensuring a more robust and controlled runtime environment.

Highlights

  • Syscall Restrictions: The gr_wait syscall is now explicitly forbidden within the ethexe runtime, and the gr_wake syscall is prohibited when a non-zero delay is specified. This ensures more controlled message scheduling and execution flow.
  • Wait Duration Capping: The gr_wait_up_to syscall's duration is now capped to WAIT_UP_TO_SAFE_DURATION (64 blocks) if the requested duration is excessive or if insufficient gas was provided, preventing overly long waits.
  • New Externalities Wrapper: A new Ext struct has been introduced in ethexe-runtime-common to wrap core_processor::Ext, allowing for selective overriding and forbidding of specific syscalls to enforce ethexe runtime-specific behaviors.
  • Comprehensive Testing: New unit tests have been added to validate the correct enforcement of these syscall restrictions and the duration capping for gr_wait_up_to.
  • Dependency Update: The delegate crate was added as a dependency to simplify the implementation of the new Ext wrapper by automatically generating delegating methods.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request effectively implements the stated objective of forbidding specific syscalls (gr_wait and gr_wake with non-zero delay) within the ethexe-runtime-common. The introduction of the new ethexe/runtime/common/src/ext.rs file, leveraging the delegate! macro, provides a clean abstraction for the runtime's externalities while explicitly overriding and restricting the problematic syscalls. The accompanying changes in ethexe/runtime/common/src/journal.rs correctly enforce these restrictions by marking forbidden operations as unreachable! or capping durations as necessary. Furthermore, the addition of dedicated test cases in ethexe/processor/src/tests.rs ensures that these critical behavioral changes are properly verified. Minor improvements include typo corrections and enhanced documentation, contributing to overall code quality.

@grishasobol grishasobol self-assigned this Mar 19, 2026
@grishasobol grishasobol added A0-pleasereview PR is ready to be reviewed by the team D8-ethexe ethexe-related PR labels Mar 19, 2026
@grishasobol
Copy link
Member Author

@codex review

@chatgpt-codex-connector
Copy link

To use Codex here, create a Codex account and connect to github.

@grishasobol grishasobol requested review from breathx and removed request for breathx March 20, 2026 10:17
@grishasobol grishasobol merged commit cd9bacc into master Mar 20, 2026
33 checks passed
@grishasobol grishasobol deleted the gsobol/ethexe/wake-waites branch March 20, 2026 12:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A0-pleasereview PR is ready to be reviewed by the team D8-ethexe ethexe-related PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants