Project

General

Profile

Backport #4009 » proof_of_segfault_small.rb

nanodeath (Max Aller), 01/18/2011 01:11 PM

 
require "thread"
require "monitor"

joblist = []
class Worker < Thread
def initialize(mon, cv)
super do
raise
end
end
end

mon = Object.new
mon.extend MonitorMixin
cv = mon.new_cond

joblist = [1]

# set this number too low and you just get "deadlock detected"
# if you get deadlock, try raising it
worker_count = 200
worker_count.times { Worker.new(mon, cv) }
mon.synchronize do
cv.wait_until { joblist.empty? }
end
(3-3/3)