mmtk / mmtk-ruby

Ruby binding for MMTk
Other
9 stars 5 forks source link

Object 0x20105a83518 has FL_EXIVAR but no givtbl using StickyImmix #93

Open eileencodes opened 1 month ago

eileencodes commented 1 month ago

As I see crashes in CI I'll open issues for them and then try to find the repro steps.

Error from recent run https://github.com/mmtk/ruby/actions/runs/10200710721/job/28220886500 using StickyImmix

ERROR: An MMTk GC thread panicked.  This is a bug.
  panicked at src/object_model.rs:49:36:
  Object 0x20105a83518 has FL_EXIVAR but no givtbl.
     0: mmtk_ruby::set_panic_hook::{{closure}}
     1: std::panicking::rust_panic_with_hook
     2: std::panicking::begin_panic_handler::{{closure}}
     3: std::sys_common::backtrace::__rust_end_short_backtrace
     4: rust_begin_unwind
     5: core::panicking::panic_fmt
     6: mmtk::util::object_forwarding::forward_object
     7: <mmtk::policy::immix::immixspace::ImmixSpace<VM> as mmtk::policy::gc_work::PolicyTraceObject<VM>>::trace_object
     8: mmtk_ruby::abi::ObjectClosure::c_function_registered
     9: rb_mmtk_call_object_closure
               at ./../src/mmtk_support.c:[504](https://github.com/mmtk/ruby/actions/runs/10200710721/job/28220886500#step:10:505):12
    10: rb_mmtk_maybe_forward
               at ./../src/mmtk_support.c:599:23
    11: gc_ref_update_array
               at ./../src/gc.c:10497:17
    12: gc_update_object_references
               at ./../src/gc.c:10942:9
    13: rb_mmtk_update_object_references
               at ./../src/gc.c:14914:5
    14: rb_mmtk_scan_object_ruby_style
               at ./../src/mmtk_support.c:539:5
    15: <mmtk::scheduler::gc_work::PlanScanObjects<E,P> as mmtk::scheduler::work::GCWork<<E as mmtk::scheduler::gc_work::ProcessEdgesWork>::VM>>::do_work
    16: std::sys_common::backtrace::__rust_begin_short_backtrace
    17: core::ops::function::FnOnce::call_once{{vtable.shim}}
    18: std::sys::pal::unix::thread::Thread::new::thread_start
    19: <unknown>
    20: <unknown>

  [454/904] 17408=test_gem_commands_mirror
  [455/904] 17408=test_comparable
  [456/904] 17408=test_rdoc_comment
  running file: /home/runner/work/ruby/ruby/src/test/ruby/test_file_exhaustive.rb

  A test worker crashed. It might be an interpreter bug or
  a bug in test/unit/parallel.rb. Try again without the -j
  option.

  Children under /tmp/rubytest.rg91yp:
  * drwx------ 2 4096 2024-08-01 15:02:48 +0000 ruby-test20240801-17411-u5ufwy/
    * -rw------- 1 3 2024-08-01 15:02:48 +0000 file.test
  make: *** [uncommon.mk:966: yes-test-all] Error 1
wks commented 1 month ago

I also observed the error about EXIVAR. It can be reproduced with high probability by running test/ruby/test_autoload.rb and it will fail at TestAutoload#test_autoload_fork. See https://github.com/mmtk/ruby/issues/83