mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
internal/trace: stable sort events
On some VMs two events can happen at the same time. For examples: 179827399 GoStart p=2 g=11 off=936359 g=11 179827399 GoUnblock p=2 g=0 off=936355 g=11 If we do non-stable sort, the events can be reordered making the trace inconsistent. Do stable sort instead. Batches are dumped in FIFO order, so if these same-time events are split into separate batches, stable sort still works. Events on different CPUs go into different batches and can be reordered. But the intention is that causally-related events on different CPUs will have larger (non-zero) time diff. Update #11320 Change-Id: Id1df96af41dff68ea1782ab4b23d5afd63b890c9 Reviewed-on: https://go-review.googlesource.com/11834 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
cd2e2f60e7
commit
64e48bbaba
1 changed files with 1 additions and 1 deletions
|
|
@ -254,7 +254,7 @@ func parseEvents(rawEvents []rawEvent) (events []*Event, err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sort by time and translate cpu ticks to real time.
|
// Sort by time and translate cpu ticks to real time.
|
||||||
sort.Sort(eventList(events))
|
sort.Stable(eventList(events))
|
||||||
if ticksPerSec == 0 {
|
if ticksPerSec == 0 {
|
||||||
err = fmt.Errorf("no EvFrequency event")
|
err = fmt.Errorf("no EvFrequency event")
|
||||||
return
|
return
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue