aboutsummaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2016-01-06 12:45:23 -0500
committerBrad Fitzpatrick <bradfitz@golang.org>2016-05-06 00:54:25 +0000
commit88d3db0a5b5196ed45c96014d5a2d32e4e41e34e (patch)
tree20c309ee5e8b26e8b356d220fd0fbf5521912d45 /src/runtime
parenta633d766d1763f4f4648e423c4e8a8635b183d03 (diff)
downloadgo-88d3db0a5b5196ed45c96014d5a2d32e4e41e34e.tar.xz
runtime: stop traceback at foreign function
This can only happen when profiling and there is foreign code at the top of the g0 stack but we're not in cgo. That in turn only happens with the race detector. Fixes #13568. Change-Id: I23775132c9c1a3a3aaae191b318539f368adf25e Reviewed-on: https://go-review.googlesource.com/18322 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/traceback.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/runtime/traceback.go b/src/runtime/traceback.go
index 7771426ef9..0e96a28945 100644
--- a/src/runtime/traceback.go
+++ b/src/runtime/traceback.go
@@ -241,6 +241,11 @@ func gentraceback(pc0, sp0, lr0 uintptr, gp *g, skip int, pcbuf *uintptr, max in
// stk is the stack containing sp.
// The caller's program counter is lr, unless lr is zero, in which case it is *(uintptr*)sp.
f = frame.fn
+ if f.pcsp == 0 {
+ // No frame information, must be external function, like race support.
+ // See golang.org/issue/13568.
+ break
+ }
// Found an actual function.
// Derive frame pointer and link register.