jlfwong / speedscope

🔬 A fast, interactive web-based viewer for performance profiles.
https://www.speedscope.app
MIT License
5.58k stars 247 forks source link

Incorrect stacking of events that are close in time #487

Open occivink opened 5 days ago

occivink commented 5 days ago

Hi,

I have the following trace that gets rendered incorrectly in speedscope

[
{ "name": "A", "ph": "X", "ts":      1732107141551429.079, "dur": 34670882.955, "pid": 1033891, "tid": 140390667650624, "args": {}},
{ "name": "B", "ph": "X", "ts":      1732107142997066.682, "dur":   476375.838, "pid": 1033891, "tid": 140390667650624, "args": {}},
{ "name": "C", "ph": "X", "ts":      1732107143473442.569, "dur":   300492.826, "pid": 1033891, "tid": 140390667650624, "args": {}}
]

The event B ends at 1732107143473442.520, and event C starts at 1732107143473442.569 (49ns later), so C should be on the same stack, but just after B.

However, this is how it gets visualized in speedscope: image

And in perfetto.dev: image

My hunch is that this could be due to a double precision issue.