diff options
Diffstat (limited to 'src/pkg/runtime/stack.c')
| -rw-r--r-- | src/pkg/runtime/stack.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/pkg/runtime/stack.c b/src/pkg/runtime/stack.c index a5e0f87a46..4b66e7dbaa 100644 --- a/src/pkg/runtime/stack.c +++ b/src/pkg/runtime/stack.c @@ -492,10 +492,14 @@ adjustframe(Stkframe *frame, void *arg) adjinfo = arg; f = frame->fn; if(StackDebug >= 2) - runtime·printf(" adjusting %s frame=[%p,%p] pc=%p\n", runtime·funcname(f), frame->sp, frame->fp, frame->pc); + runtime·printf(" adjusting %s frame=[%p,%p] pc=%p continpc=%p\n", runtime·funcname(f), frame->sp, frame->fp, frame->pc, frame->continpc); if(f->entry == (uintptr)runtime·main) return true; - targetpc = frame->pc; + targetpc = frame->continpc; + if(targetpc == 0) { + // Frame is dead. + return true; + } if(targetpc != f->entry) targetpc--; pcdata = runtime·pcdatavalue(f, PCDATA_StackMapIndex, targetpc); |
