Skip to content

Instantly share code, notes, and snippets.

@tmm1
Created December 17, 2013 02:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save tmm1/7998799 to your computer and use it in GitHub Desktop.
Save tmm1/7998799 to your computer and use it in GitHub Desktop.
systemtap method-cache-clear probe for ruby 2.1
$ cat ruby_mcache.stp
probe process("/usr/bin/ruby").mark("method__cache__clear")
{
module = kernel_string($arg1)
file = kernel_string($arg2)
line = $arg3
printf("%s(%d) %s %s:%d cleared `%s'\n", execname(), pid(), $$name, file, line, module)
}
$ sudo stap ruby_mcache.stp
ruby(25410) method__cache__clear lib/ruby/2.1.0/ostruct.rb:169 cleared `OpenStruct'
ruby(25410) method__cache__clear lib/ruby/2.1.0/ostruct.rb:170 cleared `OpenStruct'
ruby(25410) method__cache__clear lib/ruby/2.1.0/ostruct.rb:169 cleared `OpenStruct'
ruby(25410) method__cache__clear lib/ruby/2.1.0/ostruct.rb:170 cleared `OpenStruct'
ruby(25410) method__cache__clear lib/ruby/2.1.0/ostruct.rb:169 cleared `OpenStruct'
ruby(25410) method__cache__clear lib/ruby/2.1.0/ostruct.rb:170 cleared `OpenStruct'
ruby(25410) method__cache__clear lib/ruby/2.1.0/ostruct.rb:169 cleared `OpenStruct'
ruby(25410) method__cache__clear lib/ruby/2.1.0/ostruct.rb:170 cleared `OpenStruct'
ruby(25410) method__cache__clear lib/ruby/2.1.0/ostruct.rb:169 cleared `OpenStruct'
@skade
Copy link

skade commented Jan 26, 2014

For me, this probe crashes when starting up a new Ruby process while the trace runs.

sudo stap ruby_mcache.stp

In a different shell:

ruby -e 'puts "test"'

Leads to:

sudo stap ruby_mcache.stp
ERROR: kernel string copy fault at 0x          (null) near identifier 'kernel_str'
ng' at /usr/share/systemtap/tapset/linux/conversions.stp:18:10
WARNING: Number of errors: 1, skipped probes: 0
WARNING: /usr/bin/staprun exited with status: 1
Pass 5: run failed.  [man error::pass5]
Tip: /usr/share/doc/systemtap/README.Debian should help you get started.

This is related to $arg2 sometimes being 0. There is a fix in my fork: https://gist.github.com/skade/8633489

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment