W
Wincent Colaiuta
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
3. 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
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
3. 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