diff options
author | Keith Randall <khr@golang.org> | 2014-01-23 12:47:30 -0800 |
---|---|---|
committer | Keith Randall <khr@golang.org> | 2014-01-23 12:47:30 -0800 |
commit | 814c91a8ca94dda5e987e98ded36343b0ef036f7 (patch) | |
tree | 6d9afdf59828757b2c1c3f05f4253e13b160b5cb /src/pkg/runtime/traceback_arm.c | |
parent | 15fa970f1a9fa2e9f38a781a1549ab205f93c6d8 (diff) | |
download | go-814c91a8ca94dda5e987e98ded36343b0ef036f7.tar.gz |
runtime: Print elision message if we skipped frames on traceback.
Fixes bug 7180
R=golang-codereviews, dvyukov
CC=golang-codereviews, gri
https://codereview.appspot.com/55810044
Diffstat (limited to 'src/pkg/runtime/traceback_arm.c')
-rw-r--r-- | src/pkg/runtime/traceback_arm.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/pkg/runtime/traceback_arm.c b/src/pkg/runtime/traceback_arm.c index 8a3685e76..3c23cd9fc 100644 --- a/src/pkg/runtime/traceback_arm.c +++ b/src/pkg/runtime/traceback_arm.c @@ -231,6 +231,8 @@ runtime·printcreatedby(G *gp) void runtime·traceback(uintptr pc, uintptr sp, uintptr lr, G *gp) { + int32 n; + if(gp->status == Gsyscall) { // Override signal registers if blocked in system call. pc = gp->syscallpc; @@ -240,8 +242,11 @@ runtime·traceback(uintptr pc, uintptr sp, uintptr lr, G *gp) // Print traceback. By default, omits runtime frames. // If that means we print nothing at all, repeat forcing all frames printed. - if(runtime·gentraceback(pc, sp, lr, gp, 0, nil, 100, nil, nil, false) == 0) - runtime·gentraceback(pc, sp, lr, gp, 0, nil, 100, nil, nil, true); + n = runtime·gentraceback(pc, sp, lr, gp, 0, nil, TracebackMaxFrames, nil, nil, false); + if(n == 0) + runtime·gentraceback(pc, sp, lr, gp, 0, nil, TracebackMaxFrames, nil, nil, true); + if(n == TracebackMaxFrames) + runtime·printf("...additional frames elided...\n"); runtime·printcreatedby(gp); } |