An addendum:
Crash due to signal: 11
> pstack output
----------------- lwp# 1 / thread# 1 --------------------
ffffffff7eba6110 _ndoprnt (ffffffff7f474760, ffffffff7f800ec8,
ffffffff7f800da8, 0, 128, ffffffff7f801700) + 4
ffffffff7ebaa0a8 snprintf (ffffffff7f801700, 0, ffffffff7f474760,
ffffffff7f800f1c, ffffffff7f801300, 44) + 88
ffffffff7f461b78 dtrace_uaddr2str (100112b60, 1c8a, ffffffff79f19604,
ffffffff7f801fb0, 128, ffffffff7f801700) + 108
ffffffff7f458594 pfprint_uaddr (100112b60, 10010b470,
ffffffff7ffff174, 1c8a, 128, 8) + d8
ffffffff7f45a524 dt_printf_format (ffffffff7ffff175, 1005a0308,
100e6e500, ffffffff7ffff175, ffffffff7f576000, ffffffff7f4584bc) + 6f4
ffffffff7f45b00c dt_fprinta (0, ffffffff7ffff428, 100e6e500, 4,
1005a0280, 1005a02a8) + 88
ffffffff7f428c38 dt_aggregate_walk_sorted (100112b60,
ffffffff7f45af84, ffffffff7ffff428, 3e8, 7d, 100e6fd00) + 108
ffffffff7f45b224 dtrace_fprinta (100112b60, 10010b470, 100e6e500, 1,
1001118e8, 1) + 11c
ffffffff7f4367f0 dt_consume_cpu (100112b60, 10010b470, 0,
ffffffff7f576000, 1, 1009d4e28) + 78c
ffffffff7f43755c dtrace_consume (100112b60, 10010b470, 1000044f8,
10000446c, 1c, 0) + 2f8
ffffffff7f4623e0 dtrace_work (100112b60, 10010b470, 1000044f8,
10000446c, 0, 1) + 108
0000000100006c1c main (10010b, 10010b390, 10010b378, 100000, 10010b,
100000) + 1fb0
0000000100001fdc _start (0, 0, 0, 0, 0, 0) + 17c
----------------- lwp# 2 / thread# 2 --------------------
ffffffff7ebd43f0 write (102, ffffffff6fffbf48, 8)
ffffffff7f45c068 dt_proc_control (0, 1fc000, 8, ffffffff6fffbf48, 1, 1) + 1f0
ffffffff7ebd2e7c _lwp_start (0, 0, 0, 0, 0, 0)
On Sat, Nov 22, 2008 at 10:31 AM, S h i v <shivakumar.gn at gmail.com>
wrote:> printa() in the below script results in segmentation fault. If %A in
> dtrace:::END is changed to %a, there is not segmentation fault but the
> output is in hex form (Ex: OUT: 8 0xffffffff75f6a3f4 14) and not
> readable.
> How to avoid the seg fault?
> Is there a means to use %a for arg1 and then extract symbol
> information (offline via any other tool?) mapping to the hex code to
> generate a readable output?
>
> #!/usr/sbin/dtrace -s
>
> #pragma D option quiet
>
> profile:::profile-1001hz
> /pid == $target/
> { @pc[tid, arg1] = count(); }
>
> dtrace:::END
> { printa("OUT: %d %A %@d\n", at pc); }
>