Description
Describe the bug
A clear and concise description of what the bug is.
When I include core::internal::require_implicit::<System>();
into any program, the cairo1run
binary crashes with the error below.
Error: VirtualMachine(Hint((0, Memory(InconsistentMemory((Relocatable { segment_index: 1, offset: 7 }, RelocatableValue(Relocatable { segment_index: 13, offset: 0 }), RelocatableValue(Relocatable { segment_index: 14, offset: 0 })))))))
To Reproduce
Steps to reproduce the behavior:
- Create the program below
fn main(input: Array<felt252>) -> Array<felt252> {
core::internal::require_implicit::<System>();
input
}
-
Run it with
cairo1run
cargo run -r --manifest-path ../cairo-vm/cairo1-run/Cargo.toml ../lib.cairo --args "[0 0]" --layout all_cairo --print_output --proof_mode
-
See error
Expected behavior
The output of the program instead of an error.
What version/commit are you on?
For example: v0.6.0, e762069, etc.
Current main, rev=3fb0344ce038b3a68cae897c403d1f561cfe8da7
Additional context
Related to: https://t.me/lambdaworks/9122
I am working on a custom version of cairo-vm, that would be able to run contracts and I hit a blocker.
I managed to add a custom plugin, and gas management is also handled, and working fine. The issue I had was with the memory, which fails. If I try to access the program's arguments and there is a core::internal::require_implicit::<System>();
anywhere in the program, I get the error above.
Potentially unexpected change in the AP pointer.
I traced the problem back to failed allocation hint here:
The issue is present on the main branch as well, so not attaching a repository.
I think I narrowed down the place where the allocation hint is triggered.
hint AllocSegment {} into {dst: system}
; here:
cairo-vm/cairo1-run/src/cairo_run.rs
Lines 604 to 605 in 850ff8e