mirror of
https://github.com/golang/go
synced 2024-11-23 07:30:05 -07: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
@ -254,7 +254,7 @@ func parseEvents(rawEvents []rawEvent) (events []*Event, err error) {
|
||||
}
|
||||
|
||||
// Sort by time and translate cpu ticks to real time.
|
||||
sort.Sort(eventList(events))
|
||||
sort.Stable(eventList(events))
|
||||
if ticksPerSec == 0 {
|
||||
err = fmt.Errorf("no EvFrequency event")
|
||||
return
|
||||
|
Loading…
Reference in New Issue
Block a user