DTrace segfaults on Leopard

I’d like to use DTrace on Leopard to do some profiling of a Ruby app
but I’m finding that any script that uses the “object-free” probe
eventually leads to a segfault.

For example, the script that Apple provides at:

/Developer/Examples/Ruby/DTrace/print_memory_usage.d

To reproduce:

  1. In one Terminal fire up an instance of irb so that dtrace can find
    the probes

  2. In another:

sudo dtrace -qs /Developer/Examples/Ruby/DTrace/print_memory_usage.d

  1. In another, run any sizeable Ruby script and watch the crashes
    ensue.

For example:

won’t crash

ruby -e ‘1000.times{1+2}’

will crash

ruby -e ‘10000.times{1+2}’

will crash

irb

Here’s the console output for the irb crash:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/
1.8/irb/extend-command.rb:93: [BUG] Segmentation fault
ruby 1.8.6 (2007-06-07) [universal-darwin9.0]

Abort trap

And here’s the stack trace:

Exception Type: EXC_BAD_ACCESS (SIGABRT)
Exception Codes: KERN_INVALID_ADDRESS at 0x000000007262694c
Crashed Thread: 0

Thread 0 Crashed:
0 libSystem.B.dylib 0x92d7f47a __kill + 10
1 libSystem.B.dylib 0x92df6782 raise + 26
2 libSystem.B.dylib 0x92e05d3f abort + 73
3 libruby.1.dylib 0x000cdcbc rb_exc_new + 0
4 libruby.1.dylib 0x001346f3 rb_gc_mark_trap_list +
508
5 libSystem.B.dylib 0x92d7d97b _sigtramp + 43
6 ??? 0xffffffff 0 + 4294967295
7 libruby.1.dylib 0x00144c08 rb_mod_class_variables +
634
8 libruby.1.dylib 0x00145680 rb_class_path + 31
9 libruby.1.dylib 0x001458a8 rb_obj_classname + 91
10 libruby.1.dylib 0x000eddbb rb_gc_mark_maybe + 1394
11 libruby.1.dylib 0x000ee493 rb_newobj + 28
12 libruby.1.dylib 0x0010af8f rb_node_newnode + 28
13 libruby.1.dylib 0x0011c881 ruby_yyparse + 53250
14 libruby.1.dylib 0x0011dda2 ruby_yyparse + 58659
15 libruby.1.dylib 0x00134271 ruby_process_options +
1148
16 libruby.1.dylib 0x000e69dd rb_load + 847
17 libruby.1.dylib 0x000e70a8 rb_require_safe + 1117
18 libruby.1.dylib 0x000da636 rb_eval_string_wrap +
17759
19 libruby.1.dylib 0x000db24a rb_eval_string_wrap +
20851
20 libruby.1.dylib 0x000d84c5 rb_eval_string_wrap +
9198
21 libruby.1.dylib 0x000e6a47 rb_load + 953
22 libruby.1.dylib 0x000e70a8 rb_require_safe + 1117
23 libruby.1.dylib 0x000da636 rb_eval_string_wrap +
17759
24 libruby.1.dylib 0x000db24a rb_eval_string_wrap +
20851
25 libruby.1.dylib 0x000d84c5 rb_eval_string_wrap +
9198
26 libruby.1.dylib 0x000e7388 rb_load_protect + 298
27 libruby.1.dylib 0x000e73b9 ruby_exec + 22
28 libruby.1.dylib 0x000e73e5 ruby_run + 42
29 ruby 0x00001fff 0x1000 + 4095
30 ruby 0x00001fa6 start + 54

Needless to say, I can’t run the application that I’d like to profile
either. The same crashes occur when trying to use the “object-free”
probe from inside Apple’s Instruments GUI.

Can anybody else repro this or is there something fishy with my
system?

Cheers,
Wincent

I have just read this article, maybe could help you.
Apple Crippled Its DTrace Port:
http://developers.slashdot.org/article.pl?sid=08/01/22/2156244

Juan Matías Repetti.

On Jan 17, 2008, at 2:09 PM, Wincent C. wrote:

I’d like to use DTrace on Leopard to do some profiling of a Ruby app
but I’m finding that any script that uses the “object-free” probe
eventually leads to a segfault.

[snip]

Needless to say, I can’t run the application that I’d like to profile
either. The same crashes occur when trying to use the “object-free”
probe from inside Apple’s Instruments GUI.

Can anybody else repro this or is there something fishy with my
system?

Cheers,
Wincent

I can reproduce it every time. Happens without fail.

Kind of makes it useless for watching object creation and deletion,
huh? :slight_smile:

Have you had any luck getting it to work?

-Dane

As far as I recall, I never got dtrace to work with irb at all. I’ll
check when I get a chance. Anyone else have problems with irb?
-tim

On Jan 24, 2008 10:26 AM, Juan Matías [email protected] wrote:

Can anybody else repro this or is there something fishy with my
Have you had any luck getting it to work?

-Dane

Apple’s modifications to DTrace aren’t the issue here - it’s a bug in
the
Ruby patch, which would be my fault. I can reproduce it and I’m looking
into a fix. I can release a new ruby patch with the fix but I’ll have
to
defer to the Apple guys to see how they want to handle OSX’s ruby.

-Scott

On Jan 24, 2008 9:25 PM, Scott B. [email protected] wrote:

Apple’s modifications to DTrace aren’t the issue here - it’s a bug in the
Ruby patch, which would be my fault. I can reproduce it and I’m looking
into a fix. I can release a new ruby patch with the fix but I’ll have to
defer to the Apple guys to see how they want to handle OSX’s ruby.

Yeah it seems to be a problem with the interpreter patch. I thought
that these crashes were ppc-only but apparently they also reproduce on
i386.

If you can fix it please let me know and I will do the necessary
procedure to also update Leopard’s ruby.

Laurent

Apple’s modifications to DTrace aren’t the issue here - it’s a bug in
the
Ruby patch, which would be my fault. I can reproduce it and I’m looking
into a fix. I can release a new ruby patch with the fix but I’ll have
to
defer to the Apple guys to see how they want to handle OSX’s ruby.

-Scott

Any update on this? I’m still seeing this on OSX 10.5.6…

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs