# Continuation called across trap

**URL:** <https://www.ruby-forum.com/t/continuation-called-across-trap/66335>\
**Category:** Ruby\
**Created:** [August 24, 2006, 7:58pm UTC](https://www.ruby-forum.com/t/continuation-called-across-trap/66335 "2006-08-24T19:58:44Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Young\_H](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/ce73a5/32.png) [@Young\_H](https://www.ruby-forum.com/u/Young_H)\
**Post date:** [August 24, 2006, 7:58pm UTC](https://www.ruby-forum.com/t/continuation-called-across-trap/66335/1 "2006-08-24T19:58:44Z")

</div>

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

> > load ‘Fail4.rb’  
> > checking: 1 === 1=\> true
> 
> >

/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
