Issue #13916 has been updated by normalperson (Eric Wong).

Status changed from Open to Closed

closing to trigger backport of r59975


----------------------------------------
Bug #13916: Race condition when sending a signal to a new fork
https://bugs.ruby-lang.org/issues/13916#change-66804

* Author: russelldavis (Russell Davis)
* Status: Closed
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]
* Backport: 2.2: REQUIRED, 2.3: REQUIRED, 2.4: REQUIRED
----------------------------------------
To reproduce, run this script:

~~~ ruby
1_000_000.times do |i|
  pid = fork {sleep}
  puts pid
  Process.kill(:TERM, pid)
  Process.wait(pid)
end
~~~

Expected behavior: it should print a million pids and then exit.

Actual behavior: after some number of iterations, it freezes on the call to `Process.wait`, because the fork never got killed by the TERM signal. (I verified with `ps` that the pid it froze on is still running.)




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>