-
Notifications
You must be signed in to change notification settings - Fork 6
Closed
Description
We observed in the CI https://github.com/mmtk/mmtk-ruby/actions/runs/10933871805/job/30353030059 that a field of an iseq, is pointing to a non-MMTk object.
ERROR: An MMTk GC thread panicked. This is a bug.
panicked at src/scanning.rs:42:13:
Destination is not an MMTk object. Src: 0x200fff6ee58 dst: 0x200fff12718
0: mmtk_ruby::handle_gc_thread_panic
at /home/runner/work/mmtk-ruby/mmtk-ruby/git/mmtk-ruby/mmtk/src/lib.rs:101:14
1: mmtk_ruby::set_panic_hook::{{closure}}
at /home/runner/work/mmtk-ruby/mmtk-ruby/git/mmtk-ruby/mmtk/src/lib.rs:130:13
2: <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call
at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/alloc/src/boxed.rs:2029:9
3: std::panicking::rust_panic_with_hook
at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/std/src/panicking.rs:785:13
4: std::panicking::begin_panic_handler::{{closure}}
at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/std/src/panicking.rs:659:13
5: std::sys_common::backtrace::__rust_end_short_backtrace
at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/std/src/sys_common/backtrace.rs:171:18
6: rust_begin_unwind
at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/std/src/panicking.rs:647:5
7: core::panicking::panic_fmt
at /rustc/aedd173a2c086e558c2b66d3743b344f977621a7/library/core/src/panicking.rs:72:14
8: <mmtk_ruby::scanning::VMScanning as mmtk::vm::scanning::Scanning<mmtk_ruby::Ruby>>::scan_object_and_trace_edges::{{closure}}
at /home/runner/work/mmtk-ruby/mmtk-ruby/git/mmtk-ruby/mmtk/src/scanning.rs:42:13
9: mmtk_ruby::abi::ObjectClosure::c_function_registered
at /home/runner/work/mmtk-ruby/mmtk-ruby/git/mmtk-ruby/mmtk/src/abi.rs:217:9
10: rb_mmtk_call_object_closure
at /home/runner/work/mmtk-ruby/mmtk-ruby/git/ruby/build/../mmtk_support.c:516:12
11: rb_mmtk_mark_and_move
at /home/runner/work/mmtk-ruby/mmtk-ruby/git/ruby/build/../mmtk_support.c:590:36
12: rb_gc_impl_mark_and_move
at /home/runner/work/mmtk-ruby/mmtk-ruby/git/ruby/build/../gc/default.c:5226:9
13: rb_gc_mark_and_move
at /home/runner/work/mmtk-ruby/mmtk-ruby/git/ruby/build/../gc.c:2087:5
14: rb_iseq_mark_and_move
at /home/runner/work/mmtk-ruby/mmtk-ruby/git/ruby/build/../iseq.c:351:9
15: rb_imemo_mark_and_move
at /home/runner/work/mmtk-ruby/mmtk-ruby/git/ruby/build/../imemo.c:455:9
16: rb_gc_update_object_references
at /home/runner/work/mmtk-ruby/mmtk-ruby/git/ruby/build/../gc.c:3413:9
17: rb_mmtk_update_object_references
at /home/runner/work/mmtk-ruby/mmtk-ruby/git/ruby/build/../gc/default.c:10721:5
18: rb_mmtk_scan_object_ruby_style
at /home/runner/work/mmtk-ruby/mmtk-ruby/git/ruby/build/../mmtk_support.c:551:5
19: <mmtk_ruby::scanning::VMScanning as mmtk::vm::scanning::Scanning<mmtk_ruby::Ruby>>::scan_object_and_trace_edges::{{closure}}
at /home/runner/work/mmtk-ruby/mmtk-ruby/git/mmtk-ruby/mmtk/src/scanning.rs:59:17
20: mmtk_ruby::abi::ObjectClosure::set_temporarily_and_run_code
at /home/runner/work/mmtk-ruby/mmtk-ruby/git/mmtk-ruby/mmtk/src/abi.rs:201:22
21: <mmtk_ruby::scanning::VMScanning as mmtk::vm::scanning::Scanning<mmtk_ruby::Ruby>>::scan_object_and_trace_edges
at /home/runner/work/mmtk-ruby/mmtk-ruby/git/mmtk-ruby/mmtk/src/scanning.rs:56:9
22: mmtk::scheduler::gc_work::ScanObjectsWork::do_work_common::{{closure}}
at /home/runner/.cargo/git/checkouts/mmtk-core-3306bdeb8eb4322b/73be50d/src/scheduler/gc_work.rs:873:21
And the failing test is a btest case:
#344 test_insns.rb:465:
r = false
t = [true, nil]
q, w, e = r, *t # here
w
#=> "" (expected "true") concatarray
FAIL 1/0 tests failed
make: *** [uncommon.mk:899: yes-btest] Error 1
The line iseq.c:351:9 scans the field body->location.label. Due to the nature of the release build, it may not indicate the exact line, but should be approximate.
We have enabled an aggressive assertion when running CI, i.e. -DMMTK_WB_ASSERT_VO, in #105, even when testing the release build. But the same error is not observed again after re-running the tests on CI for 5 times.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels