Skip to content

Commit

Permalink
runtime: turn off 'unexpected return pc' print on arm traceback
Browse files Browse the repository at this point in the history
It can happen legitimately if a profiling signal arrives at just the wrong moment.
It's harmless.

Fixes golang#8153.

LGTM=minux
R=golang-codereviews, minux
CC=golang-codereviews, iant, r
https://golang.org/cl/118670043
  • Loading branch information
rsc authored and wheatman committed Jun 20, 2018
1 parent 01b309d commit 66b1088
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions src/pkg/runtime/traceback_arm.c
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,14 @@ runtime·gentraceback(uintptr pc0, uintptr sp0, uintptr lr0, G *gp, int32 skip,
frame.lr = *(uintptr*)frame.sp;
flr = runtime·findfunc(frame.lr);
if(flr == nil) {
runtime·printf("runtime: unexpected return pc for %s called from %p\n", runtime·funcname(f), frame.lr);
if(callback != nil)
// This happens if you get a profiling interrupt at just the wrong time.
// In that context it is okay to stop early.
// But if callback is set, we're doing a garbage collection and must
// get everything, so crash loudly.
if(callback != nil) {
runtime·printf("runtime: unexpected return pc for %s called from %p\n", runtime·funcname(f), frame.lr);
runtime·throw("unknown caller pc");
}
}
}

Expand Down

0 comments on commit 66b1088

Please sign in to comment.