"ASSERTION: Already have an undisplayed context entry for aContent" while running leak tests

RESOLVED FIXED in mozilla1.9.2b1

Status

()

Core
Layout
RESOLVED FIXED
9 years ago
5 years ago

People

(Reporter: sicking, Assigned: tnikkel)

Tracking

({intermittent-failure})

Trunk
mozilla1.9.2b1
x86
Windows XP
intermittent-failure
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment)

Log at:

http://tinderbox.mozilla.org/showlog.cgi?log=Firefox/1245784868.1245789314.24977.gz

This is also listing a lot of leaks, but that's due to the assertion being fatal and causing us to shut down.
http://tinderbox.mozilla.org/showlog.cgi?log=Firefox/1246988269.1246989772.15906.gz
WINNT 5.2 mozilla-central leak test build on 2009/07/07 10:37:49
(Assignee)

Comment 2

9 years ago
After several thousand runs of the leaktest I think I know what is going on here; the stackwalker in nsStackWalk.cpp fails in my winxp vm for some reason, so I can't be 100% sure.

The duplicate undisplayed entry is the hidden input inside the fieldset on http://www.mozilla.org/newlayout/samples/test8.html. It's a good bet that the three "recurring into frame construction" warnings are caused by a RecreateFramesForContent on the fieldset when the legend is inserted. Most of the time the insert on the legend is not needed because the legend is already available when the fieldset frame is created. Hence why this assert is so rare. The RecreateFramesForContent call eventually does a ProcessChildren on the fieldset, and that puts the hidden input into the undisplayed map. But we are still in the nsCSSFrameConstructor::ContentAppended loop at around line 6260 where we call ContentInserted for each appended child. This loop skips over content that already has a frame exactly because of a situation like this, but we still call ContentInserted on content that's already in the undisplayed map.

Would adding a check if the content is already in the undisplayed map to this loop be the right thing to do? Or would that cause problems when a "display: none" style is removed from a node and we need to remove the undisplayed entry and create a frame?
Assignee: nobody → tnikkel
> Would adding a check if the content is already in the undisplayed map to this
> loop be the right thing to do?

In the loop in ContentAppended?  Absolutely.
(Assignee)

Comment 4

9 years ago
Created attachment 389268 [details] [diff] [review]
patch

Check if there is already an undisplayed entry as well as if there is already a frame.
Attachment #389268 - Flags: review?(bzbarsky)
Attachment #389268 - Flags: review?(bzbarsky) → review+
Pushed http://hg.mozilla.org/mozilla-central/rev/92449f4c0f3e
Status: NEW → RESOLVED
Last Resolved: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla1.9.2b1

Updated

8 years ago
Whiteboard: [orange]
Keywords: intermittent-failure
Whiteboard: [orange]
You need to log in before you can comment on or make changes to this bug.