-
Notifications
You must be signed in to change notification settings - Fork 121
Open
Description
While analyzing my Rust project with Prusti, the tool panicked with the error "internal error: entered unreachable code" when performing dereference operations inside a loop. The input program is provided below, and I used the command cargo prusti.
Code Example
fn main() {
'outer_while: while true {
let mut counter = Box::new(0);
while *counter < 5 {
*counter += 1;
if *counter == 3 {
break 'outer_while;
}
}
}
}Error Stacktrace
thread 'rustc' panicked at prusti-viper/src/encoder/procedure_encoder.rs:5382:42:
internal error: entered unreachable code: Adt(std::boxed::Box, [i32, Adt(std::alloc::Global, [])])
stack backtrace:
18: 0x55e3e2f7b4c4 - prusti_viper::encoder::procedure_encoder::ProcedureEncoder::encode_loop_invariant_permissions::h52a27851aed20c5d
19: 0x55e3e2f8124e - prusti_viper::encoder::procedure_encoder::ProcedureEncoder::encode_loop_invariant_exhale_stmts::h2832c3abd2156764
20: 0x55e3e2f21f94 - prusti_viper::encoder::procedure_encoder::ProcedureEncoder::encode_loop::hec9439079eeae71e
21: 0x55e3e2f1e081 - prusti_viper::encoder::procedure_encoder::ProcedureEncoder::encode_blocks_group::h04afc5fa1fcae9bc
22: 0x55e3e2f23580 - prusti_viper::encoder::procedure_encoder::ProcedureEncoder::encode_loop::hec9439079eeae71e
23: 0x55e3e2f1e081 - prusti_viper::encoder::procedure_encoder::ProcedureEncoder::encode_blocks_group::h04afc5fa1fcae9bc
24: 0x55e3e2f1a0b3 - prusti_viper::encoder::procedure_encoder::ProcedureEncoder::encode::hf06146a42e8f626d
25: 0x55e3e2e22f34 - prusti_viper::encoder::encoder::Encoder::encode_procedure::h0682b71d927d722d
26: 0x55e3e2e28c87 - prusti_viper::encoder::encoder::Encoder::process_encoding_queue::h7f215cb28c05bc29
27: 0x55e3e281ae53 - prusti_viper::verifier::Verifier::verify::hb6a7d88218505da5
......Environment
Prusti version: 0.2.2, commit 0d4a8d4 2024-03-26 13:08:03 UTC
Metadata
Metadata
Assignees
Labels
No labels