aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/runtime/runtime.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2011-01-18 14:15:11 -0500
committerRuss Cox <rsc@golang.org>2011-01-18 14:15:11 -0500
commit12307008e93ca5ef9dca20f0c4e78d6b9b492b6a (patch)
tree16c4091d859183538ec90b83b852ca81a22671fe /src/pkg/runtime/runtime.c
parenteaade07d6318bf59948b89bdead4ad07882df477 (diff)
downloadgo-12307008e93ca5ef9dca20f0c4e78d6b9b492b6a.tar.xz
runtime: print signal information during panic
$ 6.out panic: runtime error: invalid memory address or nil pointer dereference [signal 11 code=0x1 addr=0x0 pc=0x1c16] runtime.panic+0xa7 /Users/rsc/g/go/src/pkg/runtime/proc.c:1089 runtime.panic(0xf6c8, 0x25c010) runtime.panicstring+0x69 /Users/rsc/g/go/src/pkg/runtime/runtime.c:88 runtime.panicstring(0x24814, 0x0) runtime.sigpanic+0x144 /Users/rsc/g/go/src/pkg/runtime/darwin/thread.c:465 runtime.sigpanic() main.f+0x16 /Users/rsc/x.go:5 main.f() main.main+0x1c /Users/rsc/x.go:9 main.main() runtime.mainstart+0xf /Users/rsc/g/go/src/pkg/runtime/amd64/asm.s:77 runtime.mainstart() runtime.goexit /Users/rsc/g/go/src/pkg/runtime/proc.c:149 runtime.goexit() R=r CC=golang-dev https://golang.org/cl/4036042
Diffstat (limited to 'src/pkg/runtime/runtime.c')
-rw-r--r--src/pkg/runtime/runtime.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/pkg/runtime/runtime.c b/src/pkg/runtime/runtime.c
index 9d3efe966d..513675240f 100644
--- a/src/pkg/runtime/runtime.c
+++ b/src/pkg/runtime/runtime.c
@@ -30,11 +30,16 @@ runtime·dopanic(int32 unused)
}
runtime·panicking++;
- runtime·printf("\npanic PC=%X\n", (uint64)(uintptr)&unused);
+ if(g->sig != 0)
+ runtime·printf("\n[signal %d code=%p addr=%p pc=%p]\n",
+ g->sig, g->sigcode0, g->sigcode1, g->sigpc);
+
+ runtime·printf("\n");
if(runtime·gotraceback()){
runtime·traceback(runtime·getcallerpc(&unused), runtime·getcallersp(&unused), 0, g);
runtime·tracebackothers(g);
}
+
runtime·breakpoint(); // so we can grab it in a debugger
runtime·exit(2);
}