From: xtkoba+ruby@... Date: 2021-06-14T18:11:03+00:00 Subject: [ruby-core:104260] [Ruby master Bug#17985] Ractor + GC: [BUG] not single ractor mode Issue #17985 has been reported by xtkoba (Tee KOBAYASHI). ---------------------------------------- Bug #17985: Ractor + GC: [BUG] not single ractor mode https://bugs.ruby-lang.org/issues/17985 * Author: xtkoba (Tee KOBAYASHI) * Status: Open * Priority: Normal * ruby -v: ruby 3.1.0dev (2021-06-10T23:31:51Z master 9210f8df7f) [x86_64-linux] * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- The attached script (named `bug17882-gcmod.rb`) is a modification of `bootstraptest/test_ractor.rb:224` that reads: ```ruby def test n # (...snip...) end GC.disable # newly added p 30.times.map{|i| test i } GC.start # newly added ``` This script triggers a "not single ractor mode" bug: ``` :267: warning: Ractor is experimental, and the behavior may change in future versions of Ruby! Also there are many implementation issues. ["ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok"] :35: [BUG] not single ractor mode ruby 3.1.0dev (2021-06-10T23:31:51Z master 9210f8df7f) [x86_64-linux] built with clang version 12.0.1 -- Control frame information ----------------------------------------------- c:0003 p:0011 s:0014 e:000013 METHOD :35 c:0002 p:0037 s:0006 e:000005 EVAL /var/tmp/ruby/bug17882-gcmod.rb:31 [FINISH] c:0001 p:0000 s:0003 E:000a70 (none) [FINISH] -- Ruby level backtrace information ---------------------------------------- /var/tmp/ruby/bug17882-gcmod.rb:31:in `
' :35:in `start' -- C level backtrace information ------------------------------------------- (...snip...) ``` A bactrace with GDB: ``` Thread 1 "miniruby" hit Breakpoint 1, rb_bug (fmt=0x5555555a102d "not single ractor mode") at ../error.c:784 784 va_start(args, fmt); (gdb) bt #0 rb_bug (fmt=0x5555555a102d "not single ractor mode") at ../error.c:784 #1 0x000055555596e457 in transient_heap_evacuate (dmy=0x0) at ../transient_heap.c:779 #2 0x00005555559cac3e in rb_postponed_job_flush (vm=0x5555559f5be0) at ../vm_trace.c:1698 #3 0x000055555593f994 in rb_threadptr_execute_interrupts (th=0x5555559f80b0, blocking_timing=0) at ../thread.c:2431 #4 0x000055555599f03d in rb_vm_check_ints (ec=0x5555559f89c0) at ../vm_core.h:1941 #5 0x000055555597fd18 in vm_pop_frame (ec=0x5555559f89c0, cfp=0x7ffff7757f68, ep=0x7ffff7658078) at ../vm_insnhelper.c:412 #6 0x0000555555985f77 in vm_exec_core (ec=0x5555559f89c0, initial=0) at ../insns.def:906 #7 0x000055555599a0d5 in rb_vm_exec (ec=0x5555559f89c0, mjit_enable_p=true) at ../vm.c:2160 #8 0x000055555599b0d5 in rb_iseq_eval_main (iseq=0x7ffff7fc3d08) at ../vm.c:2417 #9 0x000055555576121e in rb_ec_exec_node (ec=0x5555559f89c0, n=0x7ffff7fc3d08) at ../eval.c:320 #10 0x00005555557610ae in ruby_run_node (n=0x7ffff7fc3d08) at ../eval.c:379 #11 0x00005555556acb54 in main (argc=2, argv=0x7fffffffd938) at ../main.c:47 ``` ---Files-------------------------------- bug17882-gcmod.rb (426 Bytes) -- https://bugs.ruby-lang.org/ Unsubscribe: