Bug #3660

Trace events seem to be missing

Added by rogerdpack (Roger Pack) almost 2 years ago. Updated 8 days ago.

[ruby-core:31633]
Status:Rejected Start date:08/06/2010
Priority:Normal Due date:
Assignee:keiju (Keiju Ishitsuka) % Done:

0%

Category:-
Target version:1.9.3
ruby -v:ruby 1.9.3dev (2010-07-22 trunk 28717) [i386-mingw32]

Description

When tracing this code:

a = [1,2,3]
a.each{|n|
  p n
}

with 1.9.1 I get "expected output" list this:

http://gist.github.com/506859

However, with 1.9.2+ I get almost no output:

C:\dev\ruby\ruby-prof>ruby -vrtracer test_array.rb
ruby 1.9.2dev (2010-07-02) [i386-mingw32]
#0:test_array.rb:1::-: a = [1,2,3]
#0:test_array.rb:2::-: a.each{|n|
#0:test_array.rb:3::-:   p n
1
#0:test_array.rb:3::-:   p n
2
#0:test_array.rb:3::-:   p n
3

This on windows and Linux.
Unless it's expected, in which case it's just missing the return statement.
Thanks.
-r

History

Updated by rogerdpack (Roger Pack) over 1 year ago

still the case with ruby 1.9.3dev (2010-08-26 trunk 29104) [i386-mingw32]

Updated by shyouhei (Shyouhei Urabe) over 1 year ago

  • Status changed from Open to Assigned
  • Assignee set to ko1 (Koichi Sasada)

Updated by wanabe (_ wanabe) over 1 year ago

  • Assignee changed from ko1 (Koichi Sasada) to keiju (Keiju Ishitsuka)
It is intended. see r24226.
But I don't know the reason of this change.

Keiju, I would appreciate it if you could explain why.

Updated by rocky (Rocky Bernstein) over 1 year ago

I think this was fixed by r29914 which changes 


   elsif caller.size <= 1

to: 

   elsif caller.count {|bt| /\A<internal:[^<>]+>:/ !~ bt} <= 1

Updated by headius (Charles Nutter) over 1 year ago

It's worth mentioning that tracer is broken in JRuby for the same reason. Depending on caller to be the same all the time is a bit fragile. Ideally there'd be a better marker for whether tracer should be started up right away or not.

Updated by rogerdpack (Roger Pack) over 1 year ago

This isn't actually a problem with "-rtracer" not turning Tracer.on, it's that it does output, but outputs far fewer symbols (mostly missing tons of returns).
Cheers!
-r

Updated by rogerdpack (Roger Pack) about 1 year ago

Keiju was this expected? I'm thinking it wasn't...

Updated by nahi (Hiroshi Nakamura) 11 months ago

  • Target version set to 1.9.3

Updated by keiju (Keiju Ishitsuka) 11 months ago

  • Status changed from Assigned to Rejected
These trace messages is spec that ignore c-func and c-return event, now. If you want to print c-func and c-return event, please set: Tracer::display_c_call = true

Updated by Anonymous 8 days ago

> If you want to print c-func and c-return event, please set: > >  Tracer::display_c_call = true > ... >  However, with 1.9.2+ I get almost no output: > >  C:\dev\ruby\ruby-prof>ruby -vrtracer test_array.rb >  ruby 1.9.2dev (2010-07-02) [i386-mingw32] >  #0:test_array.rb:1::-: a = [1,2,3] >  #0:test_array.rb:2::-: a.each{|n| >  #0:test_array.rb:3::-:   p n >  1 >  #0:test_array.rb:3::-:   p n >  2 >  #0:test_array.rb:3::-:   p n >  3 It works. Still seems a bit odd to me that it doesn't appear to log a "return" call from the #each method unless you have display_c_call turned on [?]

Also available in: Atom PDF