server: When we catch SIGPROF, re-send it to the ptraced process.
This should allow profiling to work.
Change-Id: I0f437f73d5dca5171d60675830d591e0ac6cbecd
Reviewed-on: https://go-review.googlesource.com/107675
Reviewed-by: Heschi Kreinick <heschi@google.com>
diff --git a/server/server.go b/server/server.go
index 76219db..e4caa40 100644
--- a/server/server.go
+++ b/server/server.go
@@ -405,7 +405,11 @@
if status.StopSignal() == syscall.SIGTRAP && status.TrapCause() != syscall.PTRACE_EVENT_CLONE {
return wpid, nil
}
- err = s.ptraceCont(wpid, 0) // TODO: non-zero when wait catches other signals?
+ if status.StopSignal() == syscall.SIGPROF {
+ err = s.ptraceCont(wpid, int(syscall.SIGPROF))
+ } else {
+ err = s.ptraceCont(wpid, 0) // TODO: non-zero when wait catches other signals?
+ }
if err != nil {
return 0, fmt.Errorf("ptraceCont: %v", err)
}