Project

General

Profile

Actions

Bug #9759

closed

[TracePoint API] return event missing when raising exception

Added by deivid (David Rodríguez) about 10 years ago. Updated over 4 years ago.

Status:
Closed
Target version:
-
ruby -v:
https://github.com/thoughtbot/factory_girl/blob/master/lib/factory_girl/strategy_syntax_method_registrar.rb
[ruby-core:62096]

Description

I think I found another bug in the TracePoint API, which seems related to #9321. In this case, the failing event is a return event from a method inside of which the exception was generated.

I wrote a failing test case, adapting the code from factory_girl, which is where I first found the strange behaviour.

Thanks a lot in advance!


Files

tracepoint_missing_return_bug.rb (1.37 KB) tracepoint_missing_return_bug.rb deivid (David Rodríguez), 04/19/2014 12:08 PM

Updated by deivid (David Rodríguez) about 10 years ago

Also, I'm not sure whether those [:b_call, :create] and [:b_return, :create] events should be emitted at all. The block is run when defining the method, not when running it... Right?

Updated by ko1 (Koichi Sasada) almost 10 years ago

  • Category set to core
  • Assignee set to ko1 (Koichi Sasada)

Updated by ko1 (Koichi Sasada) almost 10 years ago

  • % Done changed from 0 to 100
  • Status changed from Open to Closed

Applied in changeset r45758.


  • vm.c (invoke_block_from_c): add VM_FRAME_FLAG_BMETHOD to record
    it is bmethod frame.
  • vm.c (vm_exec): invoke RUBY_EVENT_RETURN event if rollbacked frame
    is VM_FRAME_FLAG_BMETHOD.
    [Bug #9759]
  • test/ruby/test_settracefunc.rb: add a test for TracePoint/set_trace_func.
  • vm_core.h: renmae rb_thread_t::passed_me to
    rb_thread_t::passed_bmethod_me to clarify the usage.
  • vm_insnhelper.c (vm_call_bmethod_body): use renamed member.

Updated by ko1 (Koichi Sasada) almost 10 years ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN to 2.0.0: UNKNOWN, 2.1: REQUIRED

It can be reproduced by the following code:

  class C9759
    define_method(:foo){
      raise
    }
  end

  events = []
  obj = C9759.new
  TracePoint.new(:call, :return){|tp|
    events << [tp.event, tp.method_id]
  }.enable{
    obj.foo rescue nil
  }
  p events

I hope this fix will be applied to 2.1.

Updated by deivid (David Rodríguez) almost 10 years ago

Thanks!! So happy that this got fixed!! I hope it'll be added to 2.1 too.

Updated by nagachika (Tomoyuki Chikanaga) almost 10 years ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: REQUIRED to 2.0.0: UNKNOWN, 2.1: DONE

r45758 and r45759 were backported into ruby_2_1 branch at r45928.

Updated by deivid (David Rodríguez) almost 10 years ago

Hi @Tomoyuki, thanks a lot for backporting this. May I ask for backdport of r44535 as well? It's a related fix and it would really improve byebug's quality and other programs using the tracepoint api.

Furthermore, both revisions would also be needed in the 2.0 branch.

Thanks a lot!!

Updated by nagachika (Tomoyuki Chikanaga) almost 10 years ago

Hello, David.

Sorry for late response.
I'll handle about r44535 at #9321.
Thank you for your notice!

Updated by deivid (David Rodríguez) almost 10 years ago

Hi Tomoyuki! I´ll follow up at #9321 then. What about backports to 2.0 branch?

Thanks a lot!

Updated by usa (Usaku NAKAMURA) almost 10 years ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: DONE to 2.0.0: REQUIRED, 2.1: DONE

r45758 is not enough to resolve this problem for ruby_2_0_0.
But I cannot find what is missing.
ko1, do you have any idea?

Updated by deivid (David Rodríguez) almost 10 years ago

Yes, maybe he is aware of this because he only asked for backport to the 2.1 branch. Can you help us, ko1?

Updated by usa (Usaku NAKAMURA) over 9 years ago

  • Status changed from Closed to Assigned

(reminder)

Updated by deivid (David Rodríguez) over 9 years ago

Did you get the chance to have a look at this, ko1? Thanks!

Actions #15

Updated by naruse (Yui NARUSE) over 6 years ago

  • Target version deleted (2.2.0)
Actions #16

Updated by jeremyevans0 (Jeremy Evans) over 4 years ago

  • Status changed from Assigned to Closed
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0