Closed Bug 253479 Opened 20 years ago Closed 19 years ago

position:fixed elements in XUL document crash/hang browser [@nsHTMLReflowState::CalculateHypotheticalBox]

Categories

(Core :: Layout: Positioned, defect)

defect
Not set
critical

Tracking

()

RESOLVED FIXED

People

(Reporter: mnyromyr, Assigned: dbaron)

References

Details

(5 keywords, Whiteboard: [patch])

Crash Data

Attachments

(3 files)

Opening this XUL file suffices to crash or hang Mozilla (see attchment):

<?xml version="1.0"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  <x style="position:fixed;"/>
</window>

It got even "crashier" in this form:

<?xml version="1.0"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        xmlns:html="http://www.w3.org/1999/xhtml"
>
<html:div style="position:fixed;"/>
</window>

Either Mozilla crashes directly or it claims to be still loading, but does not
finish. Exiting closes open windows, but Mozilla still keeps running and has to
be |kill|ed by hand resp. TaskManager.

Mozilla 1.8a2 nightlies (2004-07-28, 2004-04-14) and 1.7 releases crash most of
the time (an open sidebar seems to "help" crashing, but isn't necessary), 1.6
and 1.4.1 and even Firefox 0.9.1 hang and have to shot.

I wasn't able to trigger Talkback with anything newer than 1.7de-AT (Talkback
incident is TB435422G).
Component: Browser-General → Layout
Summary: Non-XUL-Elements with position:fixed crash/hang browser → Non-XUL-Elements with position:fixed crash/hang browser [@nsHTMLReflowState::CalculateHypotheticalBox]
The crash happens because aBlockFrame is null in CalculateHypotheticalBox(). 
That happens because there is in fact no block or area frame that's an ancestor
of the placeholder...
Assignee: general → nobody
Component: Layout → Layout: R & A Pos
OS: Windows 2000 → All
QA Contact: general → core.layout.r-and-a-pos
Hardware: PC → All
Depends on: 231776
I believe the following HTML also demonstrates this crash without using XUL
<ACRONYM STYLE="position:fixed; display:table;"></ACRONYM>

Perhaps the summary should be updated to show that this doesn't just affect XUL
if this is in fact the same cause for the crash?
http://talkback-public.mozilla.org/talkback/fastfind.jsp?search=2&type=iid&id=TB1585669K
The table crash is bug 231776, which this bug is marked dependent on.  They are
in fact different bugs; it's quite possible to fix one without fixing the other.
Blocks: 284228
Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.9a1) Gecko/20050928
Firefox/1.6a1

Both testcases in this bug still crash with the same signature.
Keywords: testcase
Automated testing hits this crash often (mozqa:rs, see bug 306939).
Blocks: randomstyles
Adding topcrash keyword to get this on the radar.  blcary's automation is indeed
hitting this crash a lot, so let's use that data to figure out what's going on
and hopefully get a fix on the Trunk.
Flags: blocking1.9a1?
Keywords: topcrash
We know exactly what's happening in this bug -- fixed position is not supported
in XUL.

Note that similar stacks could happen for various other reasons, none related to
this bug.
Blocks: 316608
Blocks: 316504
Blocks: 320699
Assignee: nobody → dbaron
Attached patch patchSplinter Review
This isn't that hard to make not crash, and actually display the content and what's likely to be at least a somewhat reasonable place.  GetNearestContainingBlock is only used for passing stuff to CalculateHypotheticalBox, so I just needed to make it handle non-block frames.
Attachment #206324 - Flags: superreview?(roc)
Attachment #206324 - Flags: review?(roc)
Attachment #206324 - Flags: approval1.8.1?
(Note that the other possibility here is to use 0 rather than the placeholder's offset.  I almost prefer that since it's much easier to define in specifications, although less compatible with the current spec.)
Summary: Non-XUL-Elements with position:fixed crash/hang browser [@nsHTMLReflowState::CalculateHypotheticalBox] → position:fixed elements in XUL document crash/hang browser [@nsHTMLReflowState::CalculateHypotheticalBox]
*** Bug 316504 has been marked as a duplicate of this bug. ***
No longer blocks: 316504
Attachment #206324 - Flags: superreview?(roc)
Attachment #206324 - Flags: superreview+
Attachment #206324 - Flags: review?(roc)
Attachment #206324 - Flags: review+
Checked in to trunk, 2005-12-20 19:30 -0800.
Status: NEW → RESOLVED
Closed: 19 years ago
Resolution: --- → FIXED
Comment on attachment 206324 [details] [diff] [review]
patch

marking branch-1.8.1+ for dbaron who requested the approval.
Attachment #206324 - Flags: approval1.8.1? → branch-1.8.1+
Fixed on 1.8.1 branch
Keywords: fixed1.8.1
*** Bug 284228 has been marked as a duplicate of this bug. ***
Flags: blocking1.9a1?
Maybe the patch is safe enough for the 1.8.0.6 branch? It doesn't seem to have caused any regressions at least for the 6 months it is on trunk and 1.8.1 branch.
Flags: blocking1.8.0.6?
Attachment #206324 - Flags: approval1.8.0.7?
Flags: blocking1.8.0.7? → blocking1.8.0.7+
Comment on attachment 206324 [details] [diff] [review]
patch

approved for 1.8.0 branch, a=dveditz for drivers
Attachment #206324 - Flags: approval1.8.0.7? → approval1.8.0.7+
Checked in to MOZILLA_1_8_0_BRANCH (merged patch from MOZILLA_1_8_BRANCH).
Keywords: fixed1.8.0.7
Blocks: 344061
v.fixed on 1.8.1 and 1.8.0 branches with 8/24 nightly builds, no crashes with XUL files.
content/xul/content/crashtests/253479-1.xul
content/xul/content/crashtests/253479-2.xul
http://hg.mozilla.org/mozilla-central/rev/b0337b6287f3
Flags: in-testsuite+
Crash Signature: [@nsHTMLReflowState::CalculateHypotheticalBox]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: