ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* bug? continuation called across trap
@ 2006-08-28 17:43 Young Hyun
  2006-08-29  1:49 ` nobu
  0 siblings, 1 reply; 2+ messages in thread
From: Young Hyun @ 2006-08-28 17:43 UTC (permalink / raw
  To: ruby-core

I posted this on ruby-talk but didn't get any replies.  Hopefully  
someone on ruby-core can help.

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: bug? continuation called across trap
  2006-08-28 17:43 bug? continuation called across trap Young Hyun
@ 2006-08-29  1:49 ` nobu
  0 siblings, 0 replies; 2+ messages in thread
From: nobu @ 2006-08-29  1:49 UTC (permalink / raw
  To: ruby-core

Hi,

At Tue, 29 Aug 2006 02:43:48 +0900,
Young Hyun wrote in [ruby-core:08743]:
> 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.

No error on Linux.  Maybe the issue around libedit on Mac OS X.

-- 
Nobu Nakada

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-08-29  1:50 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-28 17:43 bug? continuation called across trap Young Hyun
2006-08-29  1:49 ` nobu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).