diff options
author | Dmitry Vyukov <dvyukov@google.com> | 2016-08-08 16:17:14 +0200 |
---|---|---|
committer | Dmitry Vyukov <dvyukov@google.com> | 2016-09-02 19:14:11 +0000 |
commit | cd285f1c6fc613fa0f097443ae1d21d6c4491386 (patch) | |
tree | 982e61e8e4724c245a5c44a3de22da4ffad8b9a0 /src/runtime/trace.go | |
parent | 59877bfaaf0778d4cc2cbaf06cf5030144271349 (diff) | |
download | go-cd285f1c6fc613fa0f097443ae1d21d6c4491386.tar.gz go-cd285f1c6fc613fa0f097443ae1d21d6c4491386.zip |
runtime: fix global buffer reset in StopTrace
We reset global buffer only if its pos != 0.
We ought to do it always, but queue it only if pos != 0.
This is a latent bug. Currently it does not fire because
whenever we create a global buffer, we increment pos.
Change-Id: I01e28ae88ce9a5412497c524391b8b7cb443ffd9
Reviewed-on: https://go-review.googlesource.com/25574
Run-TryBot: Dmitry Vyukov <dvyukov@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
Diffstat (limited to 'src/runtime/trace.go')
-rw-r--r-- | src/runtime/trace.go | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/runtime/trace.go b/src/runtime/trace.go index 436f31dc2e..0b3741fa70 100644 --- a/src/runtime/trace.go +++ b/src/runtime/trace.go @@ -262,10 +262,12 @@ func StopTrace() { p.tracebuf = 0 } } - if trace.buf != 0 && trace.buf.ptr().pos != 0 { + if trace.buf != 0 { buf := trace.buf trace.buf = 0 - traceFullQueue(buf) + if buf.ptr().pos != 0 { + traceFullQueue(buf) + } } for { |