[#37730] [Ruby 1.9 - Bug #4962][Open] come back gem_prelude! — Yusuke Endoh <mame@...>

24 messages 2011/07/02

[#37840] [Ruby 1.9 - Feature #4985][Open] Add %S[] support for making a list of symbols — Aaron Patterson <aaron@...>

23 messages 2011/07/07

[#37866] [Backport87 - Feature #4996][Open] About 1.8.7 EOL — Shyouhei Urabe <shyouhei@...>

22 messages 2011/07/08

[#37913] [Ruby 1.9 - Bug #5003][Open] Enumerator#next segfaults in OS X Lion (10.7) — Ganesh Gunasegaran <ganesh.gunas@...>

16 messages 2011/07/09

[#37917] [Ruby 1.9 - Feature #5005][Open] Provide convenient access to original methods — Lazaridis Ilias <ilias@...>

13 messages 2011/07/09

[#37932] [Ruby 1.9 - Feature #5008][Open] Equal rights for Hash (like Array, String, Integer, Float) — Suraj Kurapati <sunaku@...>

31 messages 2011/07/09

[#37936] [Ruby 1.9 - Feature #5010][Open] Add Slop(-like) in stdlib and deprecate current OptionParser API — Rodrigo Rosenfeld Rosas <rr.rosas@...>

29 messages 2011/07/09

[#37968] [Ruby 1.9 - Bug #5015][Open] method_added" is called in addition to "method_undefined — Lazaridis Ilias <ilias@...>

14 messages 2011/07/10

[#38096] [Ruby 1.9 - Feature #5033][Open] PATCH: 1.9: gc_mark_children: Avoid gc_mark() tail recursion, use goto again. — Kurt Stephens <ks.ruby@...>

14 messages 2011/07/16

[#38109] [Ruby 1.9 - Bug #5034][Open] C Source Code formatting — Lazaridis Ilias <ilias@...>

18 messages 2011/07/16

[#38171] [Ruby 1.9 - Bug #5047][Open] Segfault (most likely involving require) — Jack Christensen <jack@...>

21 messages 2011/07/18

[#38182] [Ruby 1.9 - Feature #5054][Open] Compress a sequence of ends — ANDO Yasushi ANDO <andyjpn@...>

68 messages 2011/07/19

[#38197] [Ruby 1.9 - Feature #5056][Open] About 1.9 EOL — Shyouhei Urabe <shyouhei@...>

39 messages 2011/07/19
[#38900] [Ruby 1.9 - Feature #5056] About 1.9 EOL — Shota Fukumori <sorah@...> 2011/08/10

[#38902] Re: [Ruby 1.9 - Feature #5056] About 1.9 EOL — Yukihiro Matsumoto <matz@...> 2011/08/10

Hi,

[#39048] Re: [Ruby 1.9 - Feature #5056] About 1.9 EOL — SASADA Koichi <ko1@...> 2011/08/22

Hi,

[#39055] Re: [Ruby 1.9 - Feature #5056] About 1.9 EOL — Lucas Nussbaum <lucas@...> 2011/08/23

On 23/08/11 at 06:50 +0900, SASADA Koichi wrote:

[#38295] [Ruby 1.9 - Feature #5064][Open] HTTP user-agent class — Eric Hodel <drbrain@...7.net>

15 messages 2011/07/21

[#38391] [Ruby 1.9 - Bug #5076][Open] Mac OS X Lion Support — Yui NARUSE <naruse@...>

17 messages 2011/07/22

[#38503] [Ruby 1.9 - Feature #5096][Open] offer Logger-compatibility for ext — Eric Wong <normalperson@...>

16 messages 2011/07/25

[#38510] [Ruby 1.9 - Feature #5097][Assigned] Supported platforms of Ruby 1.9.3 — Yui NARUSE <naruse@...>

42 messages 2011/07/26

[#38526] [Backport92 - Backport #5099][Open] Backport r31875 load path performance problem — Aaron Patterson <aaron@...>

19 messages 2011/07/26

[#38538] [Ruby 1.9 - Feature #5101][Open] allow optional timeout for TCPSocket.new — Eric Wong <normalperson@...>

15 messages 2011/07/27

[#38610] [Ruby 1.9 - Feature #5120][Open] String#split needs to be logical — Alexey Muranov <muranov@...>

18 messages 2011/07/30

[#38623] [Ruby 1.9 - Feature #5123][Open] Alias Hash 1.9 as OrderedHash — Alexey Muranov <muranov@...>

14 messages 2011/07/31

[ruby-core:37970] [Ruby 1.9 - Bug #4347] Tracing cannot be re-enabled after callcc [patch]

From: Yusuke Endoh <mame@...>
Date: 2011-07-10 18:13:07 UTC
List: ruby-core #37970
Issue #4347 has been updated by Yusuke Endoh.

Assignee changed from Koichi Sasada to Yusuke Endoh

Hello,

2011/1/31 James M. Lawrence <redmine@ruby-lang.org>:
> In thread.c (thread_suppress_tracing) the code after (*func)(arg, running)
> is not executed, causing th->tracing to not be cleared.
>
> This two-line patch works, though it may only address a symptom.


Thank you for your reporting and providing patch.


The root cause of this issue is that Continuation#call ignores
ensure clause:

  callcc do |c|
    begin
      c.call
    ensure
      p :foo
    end
  end  #=> nothing output


When Continuation#call is executed in the proc of set_trace_func,
it skips the post-processing of set_trace_func, resulting in
corrupt state of rb_thread_t#tracing.

Your patch forces to reset the state when set_trace_func(nil). But
to address this issue fundamentally, Continuation#call must call
current ensure clauses.  It needs very hard work, though.


As you know, your patch is not essintial fix, but it works actually
in your example, and looks benign.  So I'll import it.

But note that there is still other issues, and that this issue may
have a relapse in future.  If you want not to hit a land mine, do
not use callcc seriously.  It is very fun, joke feature, I think.


Thanks,

-- 
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
Bug #4347: Tracing cannot be re-enabled after callcc [patch]
http://redmine.ruby-lang.org/issues/4347

Author: James M. Lawrence
Status: Assigned
Priority: Normal
Assignee: Yusuke Endoh
Category: core
Target version: 1.9.3
ruby -v: ruby 1.9.3dev (2011-01-30 trunk 30735) [i386-darwin9.8.0]


=begin
 % patch -p1 < test_continuation_tracing.patch 
 patching file test/ruby/test_continuation.rb
 % ./ruby -v test/ruby/test_continuation.rb 
 ruby 1.9.3dev (2011-01-30 trunk 30735) [i386-darwin9.8.0]
 Run options: 
 
 # Running tests:
 
 ......FF
 
 Finished tests in 0.080788s, 99.0246 tests/s, 148.5369 assertions/s.
 
   1) Failure:
 test_tracing_with_set_trace_func(TestContinuation) [test/ruby/test_continuation.rb:99]:
 <3> expected but was
 <1>.
 
   2) Failure:
 test_tracing_with_thread_set_trace_func(TestContinuation) [test/ruby/test_continuation.rb:121]:
 <3> expected but was
 <0>.
 
 In thread.c (thread_suppress_tracing) the code after (*func)(arg, running)
 is not executed, causing th->tracing to not be cleared.
 
 This two-line patch works, though it may only address a symptom.
=end



-- 
http://redmine.ruby-lang.org

In This Thread

Prev Next