Commit cc841761 authored by Keith Randall's avatar Keith Randall

runtime: print g0 stack if we throw on it and GOTRACEBACK>=2.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/11385045
parent ad477e4e
...@@ -410,16 +410,20 @@ runtime·dopanic(int32 unused) ...@@ -410,16 +410,20 @@ runtime·dopanic(int32 unused)
{ {
static bool didothers; static bool didothers;
bool crash; bool crash;
int32 t;
if(g->sig != 0) if(g->sig != 0)
runtime·printf("[signal %x code=%p addr=%p pc=%p]\n", runtime·printf("[signal %x code=%p addr=%p pc=%p]\n",
g->sig, g->sigcode0, g->sigcode1, g->sigpc); g->sig, g->sigcode0, g->sigcode1, g->sigpc);
if(runtime·gotraceback(&crash)){ if((t = runtime·gotraceback(&crash)) > 0){
if(g != m->g0) { if(g != m->g0) {
runtime·printf("\n"); runtime·printf("\n");
runtime·goroutineheader(g); runtime·goroutineheader(g);
runtime·traceback((uintptr)runtime·getcallerpc(&unused), (uintptr)runtime·getcallersp(&unused), 0, g); runtime·traceback((uintptr)runtime·getcallerpc(&unused), (uintptr)runtime·getcallersp(&unused), 0, g);
} else if(t >= 2) {
runtime·printf("\nruntime stack:\n");
runtime·traceback((uintptr)runtime·getcallerpc(&unused), (uintptr)runtime·getcallersp(&unused), 0, g);
} }
if(!didothers) { if(!didothers) {
didothers = true; didothers = true;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment