[ruby-core:85960] [Ruby trunk Bug#14582] Unable to use `method__entry` and `method_return` tracing probes since 2.5

From: guilhermekbsa@...
Date: 2018-03-07 06:24:09 UTC
List: ruby-core #85960
Issue #14582 has been updated by guilhermereiscampos (Guilherme Reis Campos).


guilhermereiscampos (Guilherme Reis Campos) wrote:
> Hi,
> 
> I am trying to use dtrace/systemtap probes and not being able to use it after the 2.5. The 2.4 version works fine. I was hoping this was fixed on 2.6-preview, but apparently not (just downloaded dev and tested).
> 
> I tried on OSX using dtrace and also on ubuntu (vagrant). 
> 
> ```
> # test.rb
> class Foo
> 
>   def bar
>     100.times { "Bar" }
>   end
> end
> 
> foo = Foo.new
> foo.bar
> # test.stp
> probe process("/home/vagrant/.rbenv/versions/2.4.0/bin/ruby").mark("method__entry") # you probably will need to change this to your ruby path.
> {
> 	printf("%s => %s.%s in %s:%d\n", thread_indent(1), kernel_string($arg1),kernel_string($arg2),kernel_string($arg3),$arg4);
> }
> probe process("/home/vagrant/.rbenv/versions/2.4.0/bin/ruby").mark("method__return")
> {
>     printf("%s <= %s.%s in %s:%d\n", thread_indent(-1), kernel_string($arg1),kernel_string($arg2),kernel_string($arg3),$arg4);
> } 
> ```
> 
> dtrace was something similar to it.
> 
> I was expecting to see this output:
> 
> ```
> # lots of calls
> # ....
> # then:
>   4090 ruby(9667):   <= Gem::Specification.unresolved_deps in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/specification.rb:1298
>   4095 ruby(9667):   => MonitorMixin.mon_exit in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/monitor.rb:197
>   4100 ruby(9667):    => MonitorMixin.mon_check_owner in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/monitor.rb:247
>   4104 ruby(9667):    <= MonitorMixin.mon_check_owner in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/monitor.rb:251
>   4109 ruby(9667):   <= MonitorMixin.mon_exit in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/monitor.rb:204
>   4283 ruby(9667):  <= Kernel.require in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55
>   4303 ruby(9667): <= Kernel.require in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55
>      0 ruby(9667): => Foo.bar in test.rb:3
>     16 ruby(9667): <= Foo.bar in test.rb:5
> ```
> (The output above is 2.4)
> 
> my ruby (all versions that I tested) was install with rb-env:
> ```
> RUBY_CONFIGURE_OPTS='--enable-dtrace --disable-install-doc' rbenv install 2.5.0
> ```
> 
> 
> I am happy to provide details if required.
> 
> Thanks,



----------------------------------------
Bug #14582: Unable to use `method__entry` and `method_return` tracing probes since 2.5
https://bugs.ruby-lang.org/issues/14582#change-70823

* Author: guilhermereiscampos (Guilherme Reis Campos)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: 2.5
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
Hi,

I am trying to use dtrace/systemtap probes and not being able to use it after the 2.5. The 2.4 version works fine. I was hoping this was fixed on 2.6-preview, but apparently not (just downloaded dev and tested).

I tried on OSX using dtrace and also on ubuntu (vagrant). 

```
# test.rb
class Foo

  def bar
    100.times { "Bar" }
  end
end

foo = Foo.new
foo.bar
# test.stp
probe process("/home/vagrant/.rbenv/versions/2.4.0/bin/ruby").mark("method__entry") # you probably will need to change this to your ruby path.
{
	printf("%s => %s.%s in %s:%d\n", thread_indent(1), kernel_string($arg1),kernel_string($arg2),kernel_string($arg3),$arg4);
}
probe process("/home/vagrant/.rbenv/versions/2.4.0/bin/ruby").mark("method__return")
{
    printf("%s <= %s.%s in %s:%d\n", thread_indent(-1), kernel_string($arg1),kernel_string($arg2),kernel_string($arg3),$arg4);
} 
```

dtrace was something similar to it.

I was expecting to see this output:
``
# lots of calls
# ....
# then:
  4090 ruby(9667):   <= Gem::Specification.unresolved_deps in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/specification.rb:1298
  4095 ruby(9667):   => MonitorMixin.mon_exit in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/monitor.rb:197
  4100 ruby(9667):    => MonitorMixin.mon_check_owner in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/monitor.rb:247
  4104 ruby(9667):    <= MonitorMixin.mon_check_owner in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/monitor.rb:251
  4109 ruby(9667):   <= MonitorMixin.mon_exit in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/monitor.rb:204
  4283 ruby(9667):  <= Kernel.require in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55
  4303 ruby(9667): <= Kernel.require in /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55
     0 ruby(9667): => Foo.bar in test.rb:3
    16 ruby(9667): <= Foo.bar in test.rb:5
```
(The output above is 2.4)

my ruby (all versions that I tested) was install with rb-env:
```
RUBY_CONFIGURE_OPTS='--enable-dtrace --disable-install-doc' rbenv install 2.5.0
```


I am happy to provide details if required.

Thanks,





-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next