CertainLach / jrsonnet

Rust implementation of Jsonnet language
MIT License
311 stars 37 forks source link

Segfault when running in dev profile on macOS Sonoma #178

Open markushauge opened 3 weeks ago

markushauge commented 3 weeks ago

jrsonnet segfaults when running in the default Rust dev profile (cargo run). I have created a minimal reproduction case here. The issue does not appear when running in release mode, or when running on Linux. Looking at LLDB and Miri, there seems to be some unsoundness in jrsonnet-gcmodule. Please let me know if you need more details.

jrsonnet version: 0.5.0-pre95 OS: macOS Sonoma 14.6.1 Processor: Apple M1 Pro

Output

jrsonnet-segfault on  main [?] is 📦 v0.1.0 via 🦀 v1.80.0 on ☁️  (eu-west-1) took 11s
❯ cargo run
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.03s
     Running `target/debug/jrsonnet-segfault`
zsh: segmentation fault  cargo run

LLDB

jrsonnet-segfault on  main [?] is 📦 v0.1.0 via 🦀 v1.80.0 on ☁️  (eu-west-1)
❯ lldb target/debug/jrsonnet-segfault
(lldb) target create "target/debug/jrsonnet-segfault"
Current executable set to '/Users/markus/Development/GitHub/markushauge/jrsonnet-segfault/target/debug/jrsonnet-segfault' (arm64).
(lldb) run
Process 55731 launched: '/Users/markus/Development/GitHub/markushauge/jrsonnet-segfault/target/debug/jrsonnet-segfault' (arm64)
Process 55731 stopped
* thread #1, name = 'main', queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x8)
    frame #0: 0x0000000100193090 jrsonnet-segfault`_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$::drop::h6a8898af8da3eef4 at mod.rs:394:14
Target 0: (jrsonnet-segfault) stopped.
(lldb) frame variable
(*const dyn jrsonnet_evaluator::obj::ObjectLike) val = {
  pointer = NULL
  vtable = 0x0000000000000000
}

Miri

jrsonnet-segfault on  main is 📦 v0.1.0 via 🦀 v1.84.0-nightly on ☁️  (eu-west-1)
❯ MIRIFLAGS="-Zmiri-disable-stacked-borrows -Zmiri-disable-isolation" cargo miri run
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.03s
     Running `/Users/markus/.rustup/toolchains/nightly-aarch64-apple-darwin/bin/cargo-miri runner target/miri/aarch64-apple-darwin/debug/jrsonnet-segfault`
error: Undefined Behavior: constructing invalid value: encountered a dangling reference (use-after-free)
   --> /Users/markus/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:521:1
    |
521 | pub unsafe fn drop_in_place<T: ?Sized>(to_drop: *mut T) {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered a dangling reference (use-after-free)
    |
    = help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
    = help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
    = note: BACKTRACE:
    = note: inside `std::ptr::drop_in_place::<std::boxed::Box<dyn jrsonnet_evaluator::ObjectLike>> - shim(Some(std::boxed::Box<dyn jrsonnet_evaluator::ObjectLike>))` at /Users/markus/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:521:1: 521:56
    = note: inside `std::ptr::drop_in_place::<jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::ObjectLike>> - shim(Some(jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::ObjectLike>))` at /Users/markus/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:521:1: 521:56
    = note: inside `std::mem::ManuallyDrop::<jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::ObjectLike>>::drop` at /Users/markus/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/mem/manually_drop.rs:256:18: 256:53
    = note: inside `jrsonnet_gcmodule::cc::RawCcBox::<jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::ObjectLike>, jrsonnet_gcmodule::collect::ObjectSpace>::drop_t` at /Users/markus/.cargo/registry/src/index.crates.io-6f17d22bba15001f/jrsonnet-gcmodule-0.3.7/src/cc.rs:337:22: 337:66
    = note: inside `<jrsonnet_gcmodule::cc::RawCc<jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::ObjectLike>, jrsonnet_gcmodule::collect::ObjectSpace> as std::ops::Drop>::drop` at /Users/markus/.cargo/registry/src/index.crates.io-6f17d22bba15001f/jrsonnet-gcmodule-0.3.7/src/cc.rs:613:17: 613:31
    = note: inside `std::ptr::drop_in_place::<jrsonnet_gcmodule::cc::RawCc<jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::ObjectLike>, jrsonnet_gcmodule::collect::ObjectSpace>> - shim(Some(jrsonnet_gcmodule::cc::RawCc<jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::ObjectLike>, jrsonnet_gcmodule::collect::ObjectSpace>))` at /Users/markus/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:521:1: 521:56
    = note: inside `std::ptr::drop_in_place::<jrsonnet_evaluator::ObjValue> - shim(Some(jrsonnet_evaluator::ObjValue))` at /Users/markus/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:521:1: 521:56
    = note: inside `std::ptr::drop_in_place::<jrsonnet_evaluator::Val> - shim(Some(jrsonnet_evaluator::Val))` at /Users/markus/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:521:1: 521:56
note: inside closure
   --> src/main.rs:14:51
    |
14  |         v.unwrap().manifest(&yaml_format).unwrap();
    |                                                   ^
    = note: inside closure at /Users/markus/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:797:29: 797:36
    = note: inside closure at /Users/markus/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/iter/adapters/map.rs:88:21: 88:35
    = note: inside `<std::ops::Range<usize> as std::iter::Iterator>::fold::<(), {closure@std::iter::adapters::map::map_fold<usize, std::result::Result<jrsonnet_evaluator::Val, jrsonnet_evaluator::Error>, (), {closure@jrsonnet_evaluator::val::ArrValue::iter::{closure#0}}, {closure@std::iter::Iterator::for_each::call<std::result::Result<jrsonnet_evaluator::Val, jrsonnet_evaluator::Error>, {closure@src/main.rs:13:43: 13:46}>::{closure#0}}>::{closure#0}}>` at /Users/markus/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2546:21: 2546:32
    = note: inside `<std::iter::Map<std::ops::Range<usize>, {closure@jrsonnet_evaluator::val::ArrValue::iter::{closure#0}}> as std::iter::Iterator>::fold::<(), {closure@std::iter::Iterator::for_each::call<std::result::Result<jrsonnet_evaluator::Val, jrsonnet_evaluator::Error>, {closure@src/main.rs:13:43: 13:46}>::{closure#0}}>` at /Users/markus/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/iter/adapters/map.rs:128:9: 128:50
    = note: inside `<std::iter::Map<std::ops::Range<usize>, {closure@jrsonnet_evaluator::val::ArrValue::iter::{closure#0}}> as std::iter::Iterator>::for_each::<{closure@src/main.rs:13:43: 13:46}>` at /Users/markus/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:800:9: 800:31
note: inside `main`
   --> src/main.rs:13:5
    |
13  | /     val.as_arr().unwrap().iter().for_each(|v| {
14  | |         v.unwrap().manifest(&yaml_format).unwrap();
15  | |     });
    | |______^

note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace

error: aborting due to 1 previous error

With gcmodule debug feature

jrsonnet-segfault on  main [!] is 📦 v0.1.0 via 🦀 v1.84.0-nightly on ☁️  (eu-west-1) took 4s
❯ cargo run
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.03s
     Running `target/debug/jrsonnet-segfault`
[gc] jrsonnet_evaluator::EvaluationStateInternals at 0x156605ed8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::EvaluationStateInternals at 0x156605ed8 clone (2)
[gc] jrsonnet_evaluator::map::LayeredHashMapInternals at 0x156626c88 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 new (CcBoxWithGcHeader)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 new (CcBoxWithGcHeader)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (2)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (3)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156626f38 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (3)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (4)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156627088 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (4)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (5)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156627108 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (5)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (6)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156627188 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (6)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (7)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156626fb8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (7)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (8)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156627588 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (8)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (9)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156627208 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (9)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (10)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156627288 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (10)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (11)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156704168 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (11)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (12)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x1567041e8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (12)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (13)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156704268 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (13)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (14)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x1567042e8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (14)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (15)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156704368 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (15)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (16)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x157104168 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (16)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (17)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x1571041e8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (17)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (18)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x1567043e8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (18)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (19)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156704468 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (19)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (20)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x1567044e8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (20)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (21)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156704568 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (21)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (22)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x1567045e8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (22)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (23)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156704668 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (23)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (24)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x1567046e8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (24)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (25)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156704768 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (25)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (26)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x1567047e8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (26)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (27)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156704868 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (27)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (28)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x1567048e8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (28)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (29)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156704968 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (29)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (30)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x1567049e8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (30)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (31)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156704a68 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (31)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (32)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156704ae8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (32)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (33)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156704b68 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (33)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (34)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156704be8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (34)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (35)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156704c68 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 clone (35)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 clone (36)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156704ce8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::GcHashMap<jrsonnet_interner::IStr, jrsonnet_evaluator::obj::ObjMember> at 0x1567040a8 new (CcBoxWithGcHeader)
[gc] alloc::vec::Vec<jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectAssertion>> at 0x156704d28 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156704eb8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156704eb8 clone (2)
[gc] jrsonnet_evaluator::map::LayeredHashMapInternals at 0x156626c88 clone (2)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156704dd8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (0)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (T)
[gc] jrsonnet_evaluator::map::LayeredHashMapInternals at 0x156626c88 drop (1)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156626d38 drop (CcBoxWithGcHeader)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 drop (35)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156626cd8 drop (34)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156626e28 drop (34)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156704eb8 clone (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156704eb8 drop (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156704e28 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156704ef8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156704f48 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705118 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156704f98 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705098 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156704fe8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705038 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705168 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705268 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567051b8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705208 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567052b8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567053b8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705808 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705858 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705308 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705358 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705408 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705508 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705458 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567054a8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705558 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705658 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705758 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567057a8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567058d8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705928 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567056a8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567056f8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705a28 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705978 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567059d8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705b38 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705b98 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567055b8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705c98 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705ce8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705a78 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705ac8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705de8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705d38 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705d98 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705ef8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705f58 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705bf8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706058 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567060a8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705e38 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705e88 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567061a8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706118 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567062a8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567062f8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156705fa8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706008 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706408 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706468 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706208 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706568 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567065b8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706348 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706398 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567066b8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706608 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706668 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567067c8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706828 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567064c8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706928 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706978 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706708 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567069c8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706a18 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706a68 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706b68 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706bd8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706c48 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706cb8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706d28 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706d98 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706de8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706878 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706ab8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706b08 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706ee8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706f38 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707038 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707088 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567070d8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706e38 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706f88 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156706fd8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567071d8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707228 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707328 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707388 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567073f8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707448 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707148 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707548 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707598 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707288 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707698 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567076e8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707498 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567074e8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567077e8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707838 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707608 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707938 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707988 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707738 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707788 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::function::builtin::Builtin> at 0x156707a88 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707ac8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::function::builtin::Builtin> at 0x1567079d8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707a18 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::function::builtin::Builtin> at 0x156707b18 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707c08 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707b58 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::GcHashMap<jrsonnet_interner::IStr, jrsonnet_evaluator::obj::ObjMember> at 0x156707ba8 new (CcBoxWithGcHeader)
[gc] alloc::vec::Vec<jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectAssertion>> at 0x156707d18 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x1567078f8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707df8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707df8 clone (2)
[gc] jrsonnet_evaluator::map::LayeredHashMapInternals at 0x156707d58 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::EvaluationStateInternals at 0x156605ed8 clone (3)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 clone (2)
[gc] jrsonnet_evaluator::EvaluationStateInternals at 0x156605ed8 drop (2)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 clone (3)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 clone (4)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707df8 clone (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x1567078f8 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156707df8 drop (2)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 drop (3)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 clone (4)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 drop (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x1567078f8 clone (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x1567078f8 drop (2)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x1567078f8 clone (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x1567078f8 clone (4)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x1567078f8 new-weak (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x1567078f8 drop (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x1567078f8 clone-weak (2)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x1567078f8 clone (4)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156704eb8 clone (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x1567078f8 drop (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156704eb8 drop (2)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x1567078f8 drop (2)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x1567078f8 drop-weak (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x1567078f8 drop (1)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 drop (2)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 clone (3)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 clone (4)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 clone (5)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567085d8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 drop (4)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 drop (3)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156708788 new (CcBoxWithGcHeader)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156708788 clone (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156708728 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 clone (4)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156708728 clone (2)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156708788 clone (3)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 drop (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::Unbound<Bound = jrsonnet_evaluator::val::Val>> at 0x156708948 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::GcHashMap<jrsonnet_interner::IStr, jrsonnet_evaluator::obj::ObjMember> at 0x1567087b8 new (CcBoxWithGcHeader)
[gc] alloc::vec::Vec<jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectAssertion>> at 0x156708b18 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 clone (2)
[gc] jrsonnet_evaluator::map::LayeredHashMapInternals at 0x156707d58 clone (2)
[gc] jrsonnet_evaluator::EvaluationStateInternals at 0x156605ed8 clone (3)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156708bb8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 drop (2)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156708788 drop (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::gc::GcHashMap<(core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>, core::option::Option<jrsonnet_evaluator::obj::WeakObjValue>), jrsonnet_evaluator::ctx::Context>> at 0x156708728 drop (1)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x156708788 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 clone (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 clone (4)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::arr::spec::ArrayLike> at 0x156708b58 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 drop (3)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567085d8 drop (0)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567085d8 drop (T)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 drop (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567085d8 drop (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156707da8 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::arr::spec::ArrayLike> at 0x156708b58 clone (2)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::arr::spec::ArrayLike> at 0x156708b58 clone (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 clone (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 drop (2)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 clone (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 clone (4)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 new-weak (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 drop (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 clone-weak (2)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 clone (4)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 new-weak (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 drop (3)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x1567085d8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156708bb8 clone (2)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 clone (4)
[gc] jrsonnet_evaluator::map::LayeredHashMapInternals at 0x156707d58 clone (3)
[gc] jrsonnet_evaluator::EvaluationStateInternals at 0x156605ed8 clone (4)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156708808 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156708bb8 drop (1)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x1567085d8 clone (2)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x1567085d8 drop (1)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156708808 clone (2)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x1567085d8 drop (0)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x1567085d8 drop (T)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156708808 drop (1)
[gc] core::cell::once::OnceCell<jrsonnet_evaluator::ctx::Context> at 0x1567085d8 drop (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156708808 clone (2)
[gc] jrsonnet_evaluator::ctx::ContextInternals at 0x156708808 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708c88 drop-weak (2)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567085d8 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156708f68 new (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567085d8 drop (0)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567085d8 drop (T)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567085d8 drop (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567085d8 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::GcHashMap<jrsonnet_interner::IStr, jrsonnet_evaluator::obj::ObjMember> at 0x156708ec8 new (CcBoxWithGcHeader)
[gc] alloc::vec::Vec<jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectAssertion>> at 0x156708f18 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 new (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 clone (2)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 clone (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 drop (2)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 clone (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 clone (4)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 new-weak (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 drop (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 clone-weak (2)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 drop (2)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 drop-weak (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 clone (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 drop (2)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 clone (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 clone (4)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 new-weak (2)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 drop (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 clone-weak (3)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 drop (2)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 drop-weak (2)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 drop (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 drop (0)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 drop (T)
[gc] alloc::vec::Vec<jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectAssertion>> at 0x156708f18 drop (0)
[gc] alloc::vec::Vec<jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectAssertion>> at 0x156708f18 drop (T)
[gc] alloc::vec::Vec<jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectAssertion>> at 0x156708f18 drop (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::GcHashMap<jrsonnet_interner::IStr, jrsonnet_evaluator::obj::ObjMember> at 0x156708ec8 drop (0)
[gc] jrsonnet_evaluator::gc::GcHashMap<jrsonnet_interner::IStr, jrsonnet_evaluator::obj::ObjMember> at 0x156708ec8 drop (T)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156708f68 drop (0)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156708f68 drop (T)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x156708f68 drop (CcBoxWithGcHeader)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567085d8 drop (0)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567085d8 drop (T)
[gc] core::cell::RefCell<jrsonnet_evaluator::val::ThunkInner<jrsonnet_evaluator::val::Val>> at 0x1567085d8 drop (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::GcHashMap<jrsonnet_interner::IStr, jrsonnet_evaluator::obj::ObjMember> at 0x156708ec8 drop (CcBoxWithGcHeader)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 drop-weak (1)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 drop-weak (0)
[gc] jrsonnet_evaluator::gc::TraceBox<dyn jrsonnet_evaluator::obj::ObjectLike> at 0x156708e18 drop (CcBoxWithGcHeader)
zsh: segmentation fault  cargo run
CertainLach commented 3 weeks ago

Very interesting, looks like a logic error in gc implementation, yet I can't reproduce it, even miri reports nothing. There should also be no platform-dependent code, (at least I see no cfgs only applicable to arm/macos/non-linux)

Could be some of assumptions made by gcmodule are wrong for ARM? Byte order should not matter, perhaps alignment?

Just to be sure, it is a native aarch64 build, and not rosetta-translated x86? (I don't see how it might fail either, but I want to reduce my search space)

CertainLach commented 3 weeks ago

Sorry, miri does report this error, I wasn't asking him nice enough. Thanks for the report, I'll investigate that!

CertainLach commented 3 weeks ago

Have found the problem, it is definitely just a logic error related to weak pointers When we have no strong references (but have a weak references), gcmodule drops the Box contents (the tracked value), yet after no weak references left, gcmodule tries to drop Box itself, causing drop of the inner value again. In this case, inner value happens to be another box (Cc<Box>), and this results in double free error.