Actions
Bug #19922
openObjectSpace.dump_all in multiple threads in parallel causes SEGV
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
- calls
- Thread2
- calls
rb_objspace_reachable_objects_from_root()
- changes
GET_RACTOR()->mfd
: mfd2 - calls
dump_flush()
- changes current thread due to IO
- calls
- Thread1
- gets unexpected
GET_RACTOR()->mfd
: mfd2
- gets unexpected
Files
Updated by kjtsanaktsidis (KJ Tsanaktsidis) about 1 year ago
I think your diagnosis is correct, and that https://github.com/ruby/ruby/pull/8858 should fix this - does it look reasonable to you?
Updated by wanabe (_ wanabe) about 1 year ago
Thank you. https://github.com/ruby/ruby/pull/8858 resolves my issue.
Updated by byroot (Jean Boussier) about 1 year ago
- Status changed from Open to Closed
Fixed in 76dc327eeffefe02577999fe5f8215f762a581b6 and 9a62fd3cbae2ebb60e2f9cad782af1ad18db4319
Updated by byroot (Jean Boussier) about 1 year ago
- Status changed from Closed to Open
Reopening because the fix caused a failure on ruby-ci, so we'll revert for now.
Actions
Like0
Like0Like0Like0Like0