Fix - `enable_alt_bn128_syscall` (#32083)

* Fixes test_runtime_feature_enable_with_program_cache.

* Adds enable_alt_bn128_syscall to FEATURES_AFFECTING_RBPF.
This commit is contained in:
Alexander Meißner 2023-06-12 22:37:02 +02:00 committed by GitHub
parent 6280c63e1a
commit d0ae8c38bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 25 deletions

View File

@ -7730,6 +7730,7 @@ impl Bank {
feature_set::reject_callx_r10::id(),
feature_set::switch_to_new_elf_parser::id(),
feature_set::bpf_account_data_direct_mapping::id(),
feature_set::enable_alt_bn128_syscall::id(),
];
if !only_apply_transitions_for_new_features
|| FEATURES_AFFECTING_RBPF

View File

@ -57,7 +57,7 @@ use {
entrypoint::MAX_PERMITTED_DATA_INCREASE,
epoch_schedule::{EpochSchedule, MINIMUM_SLOTS_PER_EPOCH},
feature::{self, Feature},
feature_set::{self, reject_callx_r10, FeatureSet},
feature_set::{self, FeatureSet},
fee::FeeStructure,
fee_calculator::FeeRateGovernor,
genesis_config::{create_genesis_config, ClusterType, GenesisConfig},
@ -12348,7 +12348,6 @@ fn test_runtime_feature_enable_with_program_cache() {
// Execute before feature is enabled to get program into the cache.
let result_without_feature_enabled = bank.process_transaction(&transaction1);
// Should fail when executing here
assert_eq!(
result_without_feature_enabled,
Err(TransactionError::InstructionError(
@ -12358,31 +12357,23 @@ fn test_runtime_feature_enable_with_program_cache() {
);
// Activate feature
bank.activate_feature(&reject_callx_r10::id());
let feature_account_balance =
std::cmp::max(genesis_config.rent.minimum_balance(Feature::size_of()), 1);
bank.store_account(
&feature_set::reject_callx_r10::id(),
&feature::create_account(&Feature { activated_at: None }, feature_account_balance),
);
bank.apply_feature_activations(ApplyFeatureActivationsCaller::NewFromParent, false);
// Execute after feature is enabled
// Execute after feature is enabled to check it was pruned and reverified.
let result_with_feature_enabled = bank.process_transaction(&transaction2);
// Feature should have been activated thus causing the TX to fail at
// verification. It should fail here with new Executor Cache because feature
// activations should force the program to recompile with the new feature,
// and in this case the feature should cause the TX to fail at verification.
// Note: `ProgramFailedToComplete` error appearing again means the account
// was not recompiled by the cache upon feature activation and thus fails in
// the same way.
match &result_with_feature_enabled {
Err(x) => {
if *x
== TransactionError::InstructionError(0, InstructionError::ProgramFailedToComplete)
{
println!("ERROR: Program was not recompiled after runtime feature was enabled.");
}
}
Ok(_) => println!("ERROR: Program should fail during execution."),
}
// assert_eq!(
// result_with_feature_enabled,
// Err(TransactionError::InstructionError(0, InstructionError::InvalidAccountData))
// );
assert_eq!(
result_with_feature_enabled,
Err(TransactionError::InstructionError(
0,
InstructionError::InvalidAccountData
))
);
}
#[test]