From cd285f1c6fc613fa0f097443ae1d21d6c4491386 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Mon, 8 Aug 2016 16:17:14 +0200 Subject: [PATCH] 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 TryBot-Result: Gobot Gobot Reviewed-by: Austin Clements --- src/runtime/trace.go | 6 ++++-- 1 file 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 { -- 2.48.1