]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: fix global buffer reset in StopTrace
authorDmitry Vyukov <dvyukov@google.com>
Mon, 8 Aug 2016 14:17:14 +0000 (16:17 +0200)
committerDmitry Vyukov <dvyukov@google.com>
Fri, 2 Sep 2016 19:14:11 +0000 (19:14 +0000)
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>
src/runtime/trace.go

index 436f31dc2ecf107a0d6b3cd3babedb3bc01d2ffa..0b3741fa7097cd371f8307261f26754782256c45 100644 (file)
@@ -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 {