Last Comment Bug 684574 - Bad appearance of the page
: Bad appearance of the page
: regression
Product: Core
Classification: Components
Component: Layout (show other bugs)
: Trunk
: All All
: -- normal (vote)
: mozilla9
Assigned To: Mats Palmgren (:mats)
: Jet Villegas (:jet)
: 685069 (view as bug list)
Depends on:
Blocks: 653649 685113
  Show dependency treegraph
Reported: 2011-09-04 04:40 PDT by Petr Tomes
Modified: 2011-09-07 07:15 PDT (History)
9 users (show)
mats: in‑testsuite?
See Also:
Crash Signature:
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---

bug.png (106.65 KB, image/png)
2011-09-04 04:40 PDT, Petr Tomes
no flags Details
fix (2.45 KB, patch)
2011-09-05 08:18 PDT, Mats Palmgren (:mats)
roc: review+
Details | Diff | Splinter Review

Description Petr Tomes 2011-09-04 04:40:49 PDT
Created attachment 558134 [details]

User Agent: Mozilla/5.0 (Windows NT 6.1; rv:9.0a1) Gecko/20110903 Firefox/9.0a1
Build ID: 20110903030832

Steps to reproduce:

1. Go to the
2. Wait 2 seconds till the bar "Nightly prevented this site from opening a pop-up windows" appear.
3. Drag the mouse cursor over the links on the top of the page such as "Hohe Wolken" etc.

Actual results:

4. The top of the page is then rendered badly.

Expected results:

The top of the page should be aligned properly as in Aurora of Firefox 8, Beta of Firefox 7 or Firefox 6.
Comment 1 Thomas Ahlblom 2011-09-04 05:01:46 PDT
Works for me:
Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv: Gecko/20110830 Firefox/3.6.21
Mozilla/5.0 (X11; Linux x86_64; rv:6.0.1) Gecko/20100101 Firefox/6.0.1
Mozilla/5.0 (X11; Linux x86_64; rv:7.0) Gecko/20100101 Firefox/7.0
Mozilla/5.0 (X11; Linux x86_64; rv:8.0a2) Gecko/20110903 Firefox/8.0a2

Mozilla/5.0 (X11; Linux x86_64; rv:9.0a1) Gecko/20110904 Firefox/9.0a1

Last good nightly: 2011-09-03
First bad nightly: 2011-09-04

Comment 2 Thomas Ahlblom 2011-09-04 05:44:35 PDT
Please ignore regression range in last part of comment 1. The correct one seems to be:

Last good nightly: 2011-08-24
First bad nightly: 2011-08-25

Comment 3 Thomas Ahlblom 2011-09-04 05:58:19 PDT
Regression range using hourly builds:
Comment 4 Kevin Brosnan [:kbrosnan] 2011-09-04 07:23:52 PDT
Looks like fallout from bug 653649 Kill nsIFrame::GetAdditionalChildListName
Comment 5 Thomas Ahlblom 2011-09-04 07:49:52 PDT
Local track down using Linux x86_64:

Due to skipped revisions, the first bad revision could be any of:
changeset:   75840:5c0d46747250
user:        Mats Palmgren <>
date:        Wed Aug 24 22:54:29 2011 +0200
summary:     Bug 653649 - New way of getting child lists from frames.  (part 1/5) r=roc sr=dbaron

changeset:   75841:bbb68899df56
user:        Mats Palmgren <>
date:        Wed Aug 24 22:54:29 2011 +0200
summary:     Bug 653649 - New way of getting child lists from frames.  (part 2/5) r=roc sr=dbaron

changeset:   75842:de17763f5ba7
user:        Mats Palmgren <>
date:        Wed Aug 24 22:54:29 2011 +0200
summary:     Bug 653649 - New way of getting child lists from frames.  (part 3/5) r=roc

changeset:   75843:d9797d99f5f7
user:        Mats Palmgren <>
date:        Wed Aug 24 22:54:30 2011 +0200
summary:     Bug 653649 - New way of getting child lists from frames.  (part 4/5) r=roc
Comment 6 Mats Palmgren (:mats) 2011-09-05 07:41:40 PDT
Thomas, thanks for tracking down the precise regression window.
Comment 7 Mats Palmgren (:mats) 2011-09-05 07:55:36 PDT
The error is in InternalInvalidateThebesLayersInSubtree:

The original code was:

  PRInt32 listIndex = 0;
  nsIAtom* childList = nsnull;
  do {
    nsIFrame* child = aFrame->GetFirstChild(childList);
    if (!child && !childList) {
      nsSubDocumentFrame* subdocumentFrame = do_QueryFrame(aFrame);
      if (subdocumentFrame) {
        // Descend into the subdocument
        child = subdocumentFrame->GetSubdocumentRootFrame();
    while (child) {
      if (InternalInvalidateThebesLayersInSubtree(child)) {
        foundContainerLayer = PR_TRUE;
      child = child->GetNextSibling();
    childList = aFrame->GetAdditionalChildListName(listIndex++);
  } while (childList);

In the SubDocumentFrame case, note that it recurses on its root frame,
whereas the new code iterates the root frame's children and recurse on
those.  Patch coming up...
Comment 8 Mats Palmgren (:mats) 2011-09-05 08:18:03 PDT
Created attachment 558287 [details] [diff] [review]

Synthesize a child list from the subdocument root frame and add it to
the array of child lists to iterate.

I'll try to find a way to test this without relying on the popup blocker,
let me know if you have any tips on how to do that.
Comment 9 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-09-05 14:52:40 PDT
Comment on attachment 558287 [details] [diff] [review]

Review of attachment 558287 [details] [diff] [review]:

Thank you!
Comment 11 Chris Pearce (:cpearce) 2011-09-06 23:19:06 PDT
*** Bug 685069 has been marked as a duplicate of this bug. ***

Note You need to log in before you can comment on or make changes to this bug.