Closed Bug 1065954 Opened 10 years ago Closed 10 years ago

Investigate paint overlapping

Categories

(DevTools :: Performance Tools (Profiler/Timeline), defect)

defect
Not set
normal

Tracking

(firefox35 verified, firefox36 verified)

VERIFIED FIXED
Firefox 35
Tracking Status
firefox35 --- verified
firefox36 --- verified

People

(Reporter: paul, Assigned: pbro)

References

Details

Attachments

(2 files)

While using the timeline, I often see paint operations starting at the exact same time and then overlapping. As far as I understand how we record markers, it should be impossible to have overlapping painting operations.
QA Contact: pbrosset
Assignee: nobody → pbrosset
QA Contact: pbrosset
Attached image overlaping paint markers.png (deleted) —
This looks wrong indeed.
Any idea what's going on?
We're missing a marker that ends a paint.
Good catch, that explains why we see several paint markers all ending at the same time.
So this is linked to bug 1071056?
(In reply to Patrick Brosset [:pbrosset] [:patrick] from comment #5) > So this is linked to bug 1071056? No.
<style> p:hover{font-size: 20px} </style> <p id="foo">X</p> This code can trigger this pattern: > paint > reflow > paint > style With the first paint ending where the second paint ends. The first paint should not exist. So I believe the issue is not that we're missing a END marker, but we have an extra START marker.
This only happens on firefox desktop with the toolbox docked in the browser. If you undock the toolbox in its own window, there's only one paint per hover anymore. The extra paint comes from the timeline itself that refreshes while recording. It also happen if you focus the URL bar (so that the caret blinks) and hover the <p> node. Start/End markers always come in pairs within a tick, so it's not a problem that we have an extra start, but rather a problem that the code in nsDocShell::PopProfileTimelineMarkers fails at pairing Start and End paint markers correctly.
So the problem was that we weren't breaking out of the nested for loop if we met a start/end paint pair but no layer event in between, which means that we were then iterating until we did find a layer event.
Attachment #8493603 - Flags: review?(bgirard)
Status: NEW → ASSIGNED
Hardware: x86_64 → All
Attachment #8493603 - Flags: review?(bgirard) → review+
Keywords: checkin-needed
Blocks: 1071056
Status: ASSIGNED → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Whiteboard: [fixed-in-fx-team]
Target Milestone: --- → Firefox 35
Flags: qe-verify+
QA Contact: andrei.vaida
Reproduced the bug on Nightly 35.0a1 (2014-09-11), using Windows 7 64-bit. Verified fixed on Aurora 35.0a2 (2014-10-28 / 20141028155607) and Nightly 36.0a1 (2014-10-28), using Windows 7 64-bit, Ubuntu 14.04 LTS 32-bit and Mac OS X 10.9.5.
Status: RESOLVED → VERIFIED
Sorry for the spam. Moving bugs to Firefox :: Developer Tools: Performance Tools (Profiler/Timeline). dkl
Component: Developer Tools: Timeline → Developer Tools: Performance Tools (Profiler/Timeline)
Product: Firefox → DevTools
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: