Hi,

ruby 1.9.0 (2004-12-20) [i386-freebsd5.2.1]
gcc version 3.3.3 [FreeBSD] 20031106

In my application, if I change:

    # (1) this works
    callback_stream.with_callbacks_for(self, :action) { |callback, val|
       catch(:something) { callback.call }
       throw :wee_back_to_session
     }

into:

    # (2) this leaks
    callback_stream.with_callbacks_for(self, :action) { |callback, val|
       res = catch(:something) { callback.call }
       throw :wee_back_to_session
     }

or into:

     # (3) this leaks
     callback_stream.with_callbacks_for(self, :action) { |callback, val|
       callback.call
       throw :wee_back_to_session
     }

memory consumption is unbounded! BTW, ":something" is never thrown. It 
seems that if I reference the return value of callback.call, the memory 
leak appears. The leak also happens if I change "res = " in (2) into 
"@res = " or "$res = ". Note that inside callback.call continuations are 
created.

And if I return "nil" from the block (callback.call), it leaks, too, 
even if I use code sample (1).

I tried above example also with ruby-stable compiled with 2.95.4 (-O0 
enabled), but there all three examples leak memory.

It seems to be related to the "unknown node type 0 bug", as it appears 
to be pretty random (at least in my eyes):

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/123694


Help! I can send the whole sources to someone who is interested. Only 
requirements are rubygems, installed narf gem (webunit) and gnuplot to 
display memory consumption, and of course *nix.

Regards,

    Michael