dtrace4linux / linux

dtrace for linux - kernel driver and userland tools
http://crtags.blogspot.com
1.17k stars 226 forks source link

ustack() does not work on Ubuntu 12.04 with Linux 3.2.0-58-generic: invalid address (0x56) in action #1 #79

Open juancb opened 10 years ago

juancb commented 10 years ago

When running dtrace on Ubuntu 12.04 under Linux 3.2.0-58-generic it seems that ustack() does not print out a stack trace but instead errors out with "invalid address (0x56) in action #1" as seen below. Is ustack() expected to work or is this functionality still pending?

Sat Mar 22 02:59:38 root@server.dlx:~# dtrace -n syscall::write:entry'/pid == $target/{ustack(50, 0); exit(0)}' -c 'dd if=/dev/zero of=./foo bs=4K count=1 oflag=dsync'
parent: waiting for child
child 5732 about to exec dd
parent: after waitpid pid=5732 status=57f
proc-stub:rd_event_enable
proc-stub:rd_errstr err=26
dtrace: description 'syscall::write:entry' matched 2 probes
dtrace: error on enabled probe ID 2 (ID 361973: syscall:x64:write:entry): invalid address (0x56) in action #1
1+0 records in
1+0 records out
4096 bytes (4.1 kB) copied, 0.232165 s, 17.6 kB/s
dtrace: pid 5732 has exited
dtrace4linux commented 10 years ago

ustack() should work but launching a command via -c does not. I had made a number of changes to the way dtrace launches a proc under linux but havent pushed out that change yet. What I have is better but still not perfect. Was attempting to fix the pid provider, from another bug report, which highlighted an issue.

On 22 March 2014 03:02, Juan Bran notifications@github.com wrote:

When running dtrace on Ubuntu 12.04 under Linux 3.2.0-58-generic it seems that ustack() does not print out a stack trace but instead errors out with "invalid address (0x56) in action #1https://github.com/dtrace4linux/linux/pull/1" as seen below. Is ustack() expected to work or is this functionality still pending?

Sat Mar 22 02:59:38 root@qfactor-server.dlx:~# dtrace -n syscall::write:entry'/pid == $target/{ustack(50, 0); exit(0)}' -c 'dd if=/dev/zero of=./foo bs=4K count=1 oflag=dsync' parent: waiting for child child 5732 about to exec dd parent: after waitpid pid=5732 status=57f proc-stub:rd_event_enable proc-stub:rd_errstr err=26 dtrace: description 'syscall::write:entry' matched 2 probes dtrace: error on enabled probe ID 2 (ID 361973: syscall:x64:write:entry): invalid address (0x56) in action #1 1+0 records in 1+0 records out 4096 bytes (4.1 kB) copied, 0.232165 s, 17.6 kB/s dtrace: pid 5732 has exited

Reply to this email directly or view it on GitHubhttps://github.com/dtrace4linux/linux/issues/79 .

Snesha commented 10 years ago

Is the pid provider fixed now on ubuntu 12:04? Trying out USDT and it has a dependency on the pid provider.

dtrace4linux commented 10 years ago

pid provider should work - its validated as part of the build (we create "simple" program to handle this.

"dtrace -c" continues to not work

am presently fixing issues on 3.16 kernels.

On 4 December 2014 at 19:46, Snesha Foss notifications@github.com wrote:

Is the pid provider fixed now on ubuntu 12:04? Trying out USDT and it has a dependency on the pid provider.

— Reply to this email directly or view it on GitHub https://github.com/dtrace4linux/linux/issues/79#issuecomment-65691042.