-
Notifications
You must be signed in to change notification settings - Fork 252
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
feat: deplete compute meter for vm errors #3751
Conversation
The Firedancer team maintains a line-for-line reimplementation of the |
a9924e9
to
0b3d2be
Compare
0b3d2be
to
83d2e3b
Compare
@@ -1473,6 +1473,24 @@ pub fn execute<'a, 'b: 'a>( | |||
Err(Box::new(error) as Box<dyn std::error::Error>) | |||
} | |||
ProgramResult::Err(mut error) => { | |||
if invoke_context |
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
if invoke_context | ||
.get_feature_set() | ||
.is_active(&solana_feature_set::apply_cost_tracker_during_replay::id()) | ||
&& !matches!(error, EbpfError::SyscallError(_)) |
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.
why the exception for syscall errors?
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.
That is in the SIMD. Rational is that syscalls always interrupt a basic block so CU metering is required regardless.
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.
ok. I left a comment in the SIMD PR
Backports to the stable branch are to be avoided unless absolutely necessary for fixing bugs, security issues, and perf regressions. Changes intended for backport should be structured such that a minimum effective diff can be committed separately from any refactoring, plumbing, cleanup, etc that are not strictly necessary to achieve the goal. Any of the latter should go only into master and ride the normal stabilization schedule. |
Backports to the beta branch are to be avoided unless absolutely necessary for fixing bugs, security issues, and perf regressions. Changes intended for backport should be structured such that a minimum effective diff can be committed separately from any refactoring, plumbing, cleanup, etc that are not strictly necessary to achieve the goal. Any of the latter should go only into master and ride the normal stabilization schedule. Exceptions include CI/metrics changes, CLI improvements and documentation updates on a case by case basis. |
* feat: deplete compute meter for vm errors * add tests * rekey apply_cost_tracker_during_replay (cherry picked from commit b120fc1)
* feat: deplete compute meter for vm errors * add tests * rekey apply_cost_tracker_during_replay (cherry picked from commit b120fc1) # Conflicts: # programs/sbf/tests/programs.rs # sdk/src/feature_set.rs
* feat: deplete compute meter for vm errors * add tests * rekey apply_cost_tracker_during_replay (cherry picked from commit b120fc1)
* feat: deplete compute meter for vm errors * add tests * rekey apply_cost_tracker_during_replay (cherry picked from commit b120fc1) # Conflicts: # programs/sbf/tests/programs.rs # sdk/src/feature_set.rs
* feat: deplete compute meter for vm errors * add tests * rekey apply_cost_tracker_during_replay (cherry picked from commit b120fc1)
* feat: deplete compute meter for vm errors * add tests * rekey apply_cost_tracker_during_replay (cherry picked from commit b120fc1) # Conflicts: # programs/sbf/tests/programs.rs # sdk/src/feature_set.rs
* feat: deplete compute meter for vm errors * add tests * rekey apply_cost_tracker_during_replay (cherry picked from commit b120fc1)
* feat: deplete compute meter for vm errors * add tests * rekey apply_cost_tracker_during_replay (cherry picked from commit b120fc1) # Conflicts: # programs/sbf/tests/programs.rs # sdk/src/feature_set.rs
* feat: deplete compute meter for vm errors * add tests * rekey apply_cost_tracker_during_replay (cherry picked from commit b120fc1)
Problem
Implements SIMD-0182 by making sure that programs that fail with VM errors consume the remaining compute budget to simplify compute unit handling.
Summary of Changes
Feature Gate Issue: solana-labs#29595