Project

General

Profile

Actions

Bug #18902

closed

Thread#value crash if the thread was killed because of a fork

Added by byroot (Jean Boussier) almost 2 years ago. Updated over 1 year ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.2.0dev, ruby 3.1.2p20, ruby 3.0.3p157, ruby 2.7.5p203
[ruby-core:109162]

Description

Reproduction script

thr = Thread.new { sleep 10} 
fork do
  p thr.status # =>false
  p thr.join # => #<Thread:0x00000001008ae480 /tmp/thread-join.rb:1 dead>
  p thr.value # Assertion Failed: ./vm_core.h:1303:VM_ENV_FLAGS:FIXNUM_P(flags) (or crash if RUBY_DEBUG isn't set)
end

What happens is that rb_thread_t->value is initialized to Qundef, so when the thread is killed by a fork, Thread#value tries to return Qundef which laters crash the VM.

I have a patch incomming.

Actions

Also available in: Atom PDF

Like0
Like0Like0