diff --git a/ceno_emul/src/platform.rs b/ceno_emul/src/platform.rs index 034340c54..3bb3cf805 100644 --- a/ceno_emul/src/platform.rs +++ b/ceno_emul/src/platform.rs @@ -22,20 +22,14 @@ pub struct Platform { impl Display for Platform { fn fmt(&self, f: &mut Formatter) -> fmt::Result { - let prog_data: Option> = match (self.prog_data.first(), self.prog_data.last()) { - (Some(first), Some(last)) => Some(*first..*last), - _ => None, + let prog_data = match (self.prog_data.first(), self.prog_data.last()) { + (Some(first), Some(last)) => format!("{:#x?}", *first..*last), + _ => "-".to_string(), }; write!( f, - "Platform {{ rom: {:?}, prog_data: {:?}, stack: {:?}, heap: {:?}, public_io: {:?}, hints: {:?}, unsafe_ecall_nop: {} }}", - self.rom, - prog_data, - self.stack, - self.heap, - self.public_io, - self.hints, - self.unsafe_ecall_nop + "Platform {{ rom: {:#x?}, prog_data: {prog_data}, stack: {:#x?}, heap: {:x?}, public_io: {:#x?}, hints: {:#x?}, unsafe_ecall_nop: {} }}", + self.rom, self.stack, self.heap, self.public_io, self.hints, self.unsafe_ecall_nop ) } } diff --git a/ceno_zkvm/src/bin/e2e.rs b/ceno_zkvm/src/bin/e2e.rs index f1da01d51..7a01a3286 100644 --- a/ceno_zkvm/src/bin/e2e.rs +++ b/ceno_zkvm/src/bin/e2e.rs @@ -115,7 +115,7 @@ fn main() { ); tracing::info!("Running on platform {:?} {}", args.platform, platform); tracing::info!( - "Stack: {} bytes. Heap: {} bytes.", + "Stack: {:#x?} bytes. Heap: {:#x?} bytes.", args.stack_size, args.heap_size ); diff --git a/ceno_zkvm/src/e2e.rs b/ceno_zkvm/src/e2e.rs index 31cf9d55c..15ba73fab 100644 --- a/ceno_zkvm/src/e2e.rs +++ b/ceno_zkvm/src/e2e.rs @@ -45,6 +45,7 @@ pub struct EmulationResult { pi: PublicValues, } +// TODO(Matthias): handle hints properly. fn emulate_program( program: Arc, max_steps: usize, @@ -574,8 +575,18 @@ fn debug_memory_ranges(vm: &VMState, mem_final: &[MemFinalRecord]) { format_segments(vm.platform(), handled_addrs.iter().copied()) ); - for addr in &accessed_addrs { - assert!(handled_addrs.contains(addr), "unhandled addr: {:?}", addr); + let unhandled: BTreeSet<_> = accessed_addrs + .iter() + .filter(|addr| !handled_addrs.contains(addr)) + .collect(); + + // TODO(Matthias): this should be an assert, but it's currently broken, because our caller doesn't handle hints. + if !unhandled.is_empty() { + tracing::warn!( + "unhandled addr: {:?} to {:?}", + unhandled.first(), + unhandled.last() + ); } }