Project

General

Profile

Actions

Bug #19922

open

ObjectSpace.dump_all in multiple threads in parallel causes SEGV

Added by wanabe (_ wanabe) about 1 year ago. Updated about 1 year ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:115018]

Description

ObjectSpace.dump_all in multiple threads in parallel causes SEGV.
The reproduce code is here:

$ ruby -robjspace -e 'def dump; 10.times { ObjectSpace.dump_all } end; Thread.new { dump }; dump'
/home/wanabe/.rbenv/versions/master/lib/ruby/3.3.0+0/objspace.rb:100: [BUG] Segmentation fault at 0x0000000000000000
(snip)

I attached the full log.

I assumed that:

  • Thread1
    • calls rb_objspace_reachable_objects_from_root()
    • changes GET_RACTOR()->mfd: mfd1
    • calls dump_flush()
      • changes current thread due to IO
  • Thread2
    • calls rb_objspace_reachable_objects_from_root()
    • changes GET_RACTOR()->mfd: mfd2
    • calls dump_flush()
      • changes current thread due to IO
  • Thread1
    • gets unexpected GET_RACTOR()->mfd: mfd2

Files

bug.log (23.1 KB) bug.log wanabe (_ wanabe), 10/12/2023 12:44 PM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0