f := findfunc(frame.pc)
if !f.valid() {
if flags&unwindSilentErrors == 0 {
- print("runtime: g ", gp.goid, ": unknown pc ", hex(frame.pc), "\n")
+ print("runtime: g ", gp.goid, " gp=", gp, ": unknown pc ", hex(frame.pc), "\n")
tracebackHexdump(gp.stack, &frame, 0)
}
if flags&(unwindPrintErrors|unwindSilentErrors) == 0 {
}
func goroutineheader(gp *g) {
+ level, _, _ := gotraceback()
+
gpstatus := readgstatus(gp)
isScan := gpstatus&_Gscan != 0
if (gpstatus == _Gwaiting || gpstatus == _Gsyscall) && gp.waitsince != 0 {
waitfor = (nanotime() - gp.waitsince) / 60e9
}
- print("goroutine ", gp.goid, " [", status)
+ print("goroutine ", gp.goid)
+ if gp.m != nil && gp.m.throwing >= throwTypeRuntime && gp == gp.m.curg || level >= 2 {
+ print(" gp=", gp)
+ if gp.m != nil {
+ print(" m=", gp.m.id, " mp=", gp.m)
+ } else {
+ print(" m=nil")
+ }
+ }
+ print(" [", status)
if isScan {
print(" (scan)")
}