aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/trace
diff options
context:
space:
mode:
authorHana Kim <hakim@google.com>2018-04-04 13:47:53 -0400
committerHyang-Ah Hana Kim <hyangah@gmail.com>2018-04-04 18:15:20 +0000
commite6ab614fda5ce7533bda81f2b0de0f9fe18139bf (patch)
tree32fa0f038454cb17928a8cfe8280b3a030265efd /src/cmd/trace
parentc4874aa2a207e8c9a3c79a9411a54cce4808aa9e (diff)
downloadgo-e6ab614fda5ce7533bda81f2b0de0f9fe18139bf.tar.gz
go-e6ab614fda5ce7533bda81f2b0de0f9fe18139bf.zip
cmd/trace: avoid emitting traceview slice with 0 duration
The trace viewer interprets the slice as a non-terminating time interval which is quite opposit to what trace records indicate (i.e., almostly immediately terminating time interval). As observed in the issue #24663 this can result in quite misleading visualization of the trace. Work around the trace viewer's issue by setting a small value (0.0001usec) as the duration if the time interval is not positive. Change-Id: I1c2aac135c194d0717f5c01a98ca60ffb14ef45c Reviewed-on: https://go-review.googlesource.com/104716 Reviewed-by: Heschi Kreinick <heschi@google.com>
Diffstat (limited to 'src/cmd/trace')
-rw-r--r--src/cmd/trace/trace.go9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/cmd/trace/trace.go b/src/cmd/trace/trace.go
index 12d8dec753..ecc7c3f9c9 100644
--- a/src/cmd/trace/trace.go
+++ b/src/cmd/trace/trace.go
@@ -815,11 +815,18 @@ func (ctx *traceContext) proc(ev *trace.Event) uint64 {
}
func (ctx *traceContext) emitSlice(ev *trace.Event, name string) *ViewerEvent {
+ // If ViewerEvent.Dur is not a positive value,
+ // trace viewer handles it as a non-terminating time interval.
+ // Avoid it by setting the field with a small value.
+ durationUsec := ctx.time(ev.Link) - ctx.time(ev)
+ if ev.Link.Ts-ev.Ts <= 0 {
+ durationUsec = 0.0001 // 0.1 nanoseconds
+ }
sl := &ViewerEvent{
Name: name,
Phase: "X",
Time: ctx.time(ev),
- Dur: ctx.time(ev.Link) - ctx.time(ev),
+ Dur: durationUsec,
Tid: ctx.proc(ev),
Stack: ctx.stack(ev.Stk),
EndStack: ctx.stack(ev.Link.Stk),