From 6c1539bb0137021840b07c07641e28661a652d36 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Fri, 15 Feb 2013 14:48:47 -0500 Subject: [PATCH] runtime: show frame pointer values during throw Should help if stack overflows start happening again. Fixes #3582. R=golang-dev, iant CC=golang-dev https://golang.org/cl/7311098 --- src/pkg/runtime/traceback_arm.c | 2 ++ src/pkg/runtime/traceback_x86.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/pkg/runtime/traceback_arm.c b/src/pkg/runtime/traceback_arm.c index 77aeb820a6..8ce000c1fe 100644 --- a/src/pkg/runtime/traceback_arm.c +++ b/src/pkg/runtime/traceback_arm.c @@ -125,6 +125,8 @@ runtime·gentraceback(byte *pc0, byte *sp, byte *lr0, G *gp, int32 skip, uintptr tracepc = pc; // back up to CALL instruction for funcline. if(n > 0 && pc > f->entry && !waspanic) tracepc -= sizeof(uintptr); + if(m->throwing && gp == m->curg) + runtime·printf("[fp=%p] ", fp); runtime·printf("%S(", f->name); for(i = 0; i < f->args; i++) { if(i != 0) diff --git a/src/pkg/runtime/traceback_x86.c b/src/pkg/runtime/traceback_x86.c index b0d85fd52f..a11df6b781 100644 --- a/src/pkg/runtime/traceback_x86.c +++ b/src/pkg/runtime/traceback_x86.c @@ -127,6 +127,8 @@ runtime·gentraceback(byte *pc0, byte *sp, byte *lr0, G *gp, int32 skip, uintptr tracepc = pc; // back up to CALL instruction for funcline. if(n > 0 && pc > f->entry && !waspanic) tracepc--; + if(m->throwing && gp == m->curg) + runtime·printf("[fp=%p] ", fp); runtime·printf("%S(", f->name); for(i = 0; i < f->args; i++) { if(i != 0) -- 2.48.1