continuation called across trap

Y

Young Hyun

Does anyone know what the rather mysterious error "continuation
called across trap" means? It's triggered when I use SyncEnumerator
in a multithreaded script. I don't believe I'm doing anything
obviously wrong with threads, but this error disappears if I don't
use threads. Furthermore, the error seems to occur when I use irb
but not ruby (?? I need to verify this). I'm suspecting there might
be a bug in irb. Code to reproduce the problem is below. Note,
also, that the problem disappears if you remove the use of
@values.find--that is, if you call SyncEnumerator.each directly in
the lambda.

--Young

=============================================
require 'thread'
require 'generator'

class Region

def initialize
@values = []
@work_queue = Queue.new
@thread = Thread.new do
loop do
@work_queue.deq.call
end
end
end

def add(value)
@work_queue << lambda do
@values << value
end
end

def find(template)
@work_queue << lambda do
@values.find do |value|
SyncEnumerator.new(template, value).each do |lhs, rhs|
puts "checking: #{lhs.inspect} === #{rhs.inspect}"
end
end
end
end

end

Thread.abort_on_exception = true

reg = Region.new
reg.add [1,1]
reg.add [1,2]
reg.add [1,3]

reg.find [1,2]

#sleep 10 # uncommenting this somehow prevents the error

=============================================
MacOS X 10.4.7
$ ruby --version
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.5.0]
$ irb --prompt-mode simple/opt/local/lib/ruby/1.8/generator.rb:132:in `call': continuation
called across trap (RuntimeError)
from /opt/local/lib/ruby/1.8/generator.rb:132:in `next'
from /opt/local/lib/ruby/1.8/generator.rb:225:in `each'
from /opt/local/lib/ruby/1.8/generator.rb:220:in `each'
from /opt/local/lib/ruby/1.8/generator.rb:217:in `each'
from ./Fail4.rb:25:in `find'
from ./Fail4.rb:2:in `find'
from ./Fail4.rb:24:in `find'
from ./Fail4.rb:11:in `initialize'
from ./Fail4.rb:10:in `initialize'
from ./Fail4.rb:9:in `initialize'
from ./Fail4.rb:36
from (irb):1:in `irb_binding'
from /opt/local/lib/ruby/1.8/irb/workspace.rb:52:in
`irb_binding'
from /opt/local/lib/ruby/1.8/irb/workspace.rb:52
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,071
Latest member
MetabolicSolutionsKeto

Latest Threads

Top