about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2024-08-09 10:54:07 +0200
committerRalf Jung <post@ralfj.de>2024-08-09 10:54:07 +0200
commitdc54f1dccda757c2fb19c53914045da23672e457 (patch)
tree2c4d4aa957c9a3dac9409aae2042bb57c0ddd637
parent21f91750ab98a8ea7bab6386061a254ad0dfd1f4 (diff)
downloadrust-dc54f1dccda757c2fb19c53914045da23672e457.tar.gz
rust-dc54f1dccda757c2fb19c53914045da23672e457.zip
miri_print_borrow_state: show error when AllocId is invalid
-rw-r--r--src/tools/miri/src/shims/foreign_items.rs8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/tools/miri/src/shims/foreign_items.rs b/src/tools/miri/src/shims/foreign_items.rs
index 7f6f63ff5e7..98e095447c3 100644
--- a/src/tools/miri/src/shims/foreign_items.rs
+++ b/src/tools/miri/src/shims/foreign_items.rs
@@ -289,8 +289,12 @@ trait EvalContextExtPriv<'tcx>: crate::MiriInterpCxExt<'tcx> {
                 let [id, show_unnamed] = this.check_shim(abi, Abi::Rust, link_name, args)?;
                 let id = this.read_scalar(id)?.to_u64()?;
                 let show_unnamed = this.read_scalar(show_unnamed)?.to_bool()?;
-                if let Some(id) = std::num::NonZero::new(id) {
-                    this.print_borrow_state(AllocId(id), show_unnamed)?;
+                if let Some(id) = std::num::NonZero::new(id).map(AllocId)
+                    && this.get_alloc_info(id).2 == AllocKind::LiveData
+                {
+                    this.print_borrow_state(id, show_unnamed)?;
+                } else {
+                    eprintln!("{id} is not the ID of a live data allocation");
                 }
             }
             "miri_pointer_name" => {