Closed
Bug 115919
Opened 24 years ago
Closed 24 years ago
[RR]Crash when applying theme on certain web pages [@ nsLineLayout::IsPercentageUnitSides]
Categories
(Core Graveyard :: Skinability, defect)
Core Graveyard
Skinability
Tracking
(Not tracked)
VERIFIED
FIXED
mozilla0.9.8
People
(Reporter: steven.chapel, Assigned: hyatt)
References
()
Details
(Keywords: crash, topcrash, Whiteboard: [driver:brendan])
Crash Data
Attachments
(7 files, 2 obsolete files)
6.66 KB,
text/plain
|
Details | |
193 bytes,
text/html
|
Details | |
20.46 KB,
image/jpeg
|
Details | |
8.12 KB,
patch
|
Details | Diff | Splinter Review | |
2.74 KB,
patch
|
hyatt
:
review+
brendan
:
superreview+
|
Details | Diff | Splinter Review |
2.76 KB,
patch
|
hyatt
:
review+
brendan
:
superreview+
|
Details | Diff | Splinter Review |
789 bytes,
patch
|
dbaron
:
review+
brendan
:
superreview+
|
Details | Diff | Splinter Review |
Reproducible: Always
Steps to reproduce:
1. Go to http://java.sun.com/
2. Apply the Modern theme (or Classic theme). It doesn't matter if you apply the
current theme or a different theme.
Expected results: The theme changes immediately.
Actual results: Crash.
These Talkback reports were generated from the builds of 20011218: TB645909K,
TB645887G, TB645867K, TB645813X, TB635909Q, TB635887K.
I've seen similar the first time I ran a build with the re-introduced dynamic
theme switching and switched between classic and modern.
os:Windows 2000; build ID:2001-12-18-03; Talkback Incident ID:TB649283Z
and another crash. talkback: TB650183X
crashed whilst on a Bugzilla page. a wildly hazarded guess...atleast for my
crashes, I doubt its anything to do with the page itself
The stack trace in the talkback incidents listed above matches that of one of
today's topcrashes on the Trunk. The conditions are similar to those in bugs
116038 and 106596 but those bug have multiple signatures associated with the
crashes.
Here are the stack and comments:
Crash data range: 2001-12-18 to 2001-12-19
Build ID range: 2001121721 to 2001121814
Stack Trace:
nsLineLayout::IsPercentageUnitSides
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsLineLayout.cpp line 1767]
IsPercentageAwareChild
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp
line 1139]
nsBlockFrame::ReflowInlineFrame
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp line 3697]
nsBlockFrame::DoReflowInlineFrames
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp line 3586]
nsBlockFrame::DoReflowInlineFramesAuto
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp line 3511]
nsBlockFrame::ReflowInlineFrames
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp line 3456]
nsBlockFrame::ReflowLine
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp line 2528]
nsBlockFrame::ReflowDirtyLines
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp line 2180]
nsBlockFrame::Reflow
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp
line 847]
nsBlockReflowContext::DoReflowBlock
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockReflowContext.cpp line
581]
nsBlockReflowContext::ReflowBlock
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockReflowContext.cpp line
359]
nsBlockFrame::ReflowBlockFrame
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp line 3200]
nsBlockFrame::ReflowLine
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp line 2407]
nsBlockFrame::ReflowDirtyLines
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp line 2180]
nsBlockFrame::Reflow
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsBlockFrame.cpp
line 847]
nsContainerFrame::ReflowChild
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsContainerFrame.cpp line
766]
CanvasFrame::Reflow
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsHTMLFrame.cpp
line 567]
nsBoxToBlockAdaptor::Reflow
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxToBlockAdaptor.cpp line
843]
nsBoxToBlockAdaptor::DoLayout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxToBlockAdaptor.cpp line
606]
nsBox::Layout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBox.cpp line 1056]
nsScrollBoxFrame::DoLayout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsScrollBoxFrame.cpp line 396]
nsBox::Layout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBox.cpp line 1056]
nsContainerBox::LayoutChildAt
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp line 654]
nsGfxScrollFrameInner::LayoutBox
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsGfxScrollFrame.cpp line
1059]
nsGfxScrollFrameInner::Layout
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsGfxScrollFrame.cpp line
1170]
nsGfxScrollFrame::DoLayout
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsGfxScrollFrame.cpp line
1067]
nsBox::Layout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBox.cpp line 1056]
nsBoxFrame::Reflow
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxFrame.cpp
line 953]
nsGfxScrollFrame::Reflow
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsGfxScrollFrame.cpp line
776]
nsContainerFrame::ReflowChild
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsContainerFrame.cpp line
766]
ViewportFrame::Reflow
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsViewportFrame.cpp line 574]
PresShell::ResizeReflow
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsPresShell.cpp line 2833]
PresShell::ResizeReflow
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsPresShell.cpp line 6087]
nsViewManager::SetWindowDimensions
[d:\builds\seamonkey\mozilla\view\src\nsViewManager.cpp line 571]
nsViewManager::DispatchEvent
[d:\builds\seamonkey\mozilla\view\src\nsViewManager.cpp
line 1817]
HandleEvent [d:\builds\seamonkey\mozilla\view\src\nsView.cpp line
83]
nsWindow::DispatchEvent
[d:\builds\seamonkey\mozilla\widget\src\windows\nsWindow.cpp line 850]
nsWindow::DispatchWindowEvent
[d:\builds\seamonkey\mozilla\widget\src\windows\nsWindow.cpp line 867]
nsWindow::OnResize
[d:\builds\seamonkey\mozilla\widget\src\windows\nsWindow.cpp line
4279]
nsWindow::ProcessMessage
[d:\builds\seamonkey\mozilla\widget\src\windows\nsWindow.cpp line 3582]
nsWindow::WindowProc
[d:\builds\seamonkey\mozilla\widget\src\windows\nsWindow.cpp line
1112]
USER32.dll + 0x1303 (0x77e71303)
USER32.dll + 0x2fa2 (0x77e72fa2)
ntdll.dll + 0x163ef (0x77f763ef)
DocumentViewerImpl::SetBounds
[d:\builds\seamonkey\mozilla\content\base\src\nsDocumentViewer.cpp line 1529]
nsDocShell::SetPositionAndSize
[d:\builds\seamonkey\mozilla\docshell\base\nsDocShell.cpp
line 2571]
nsWebShell::SetPositionAndSize
[d:\builds\seamonkey\mozilla\docshell\base\nsWebShell.cpp
line 1472]
nsHTMLFrameInnerFrame::Reflow
[d:\builds\seamonkey\mozilla\layout\html\document\src\nsFrameFrame.cpp line
1465]
nsContainerFrame::ReflowChild
[d:\builds\seamonkey\mozilla\layout\html\base\src\nsContainerFrame.cpp line
766]
nsHTMLFrameOuterFrame::Reflow
[d:\builds\seamonkey\mozilla\layout\html\document\src\nsFrameFrame.cpp line
528]
nsBoxToBlockAdaptor::Reflow
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxToBlockAdaptor.cpp line
843]
nsBoxToBlockAdaptor::DoLayout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxToBlockAdaptor.cpp line
606]
nsBox::Layout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBox.cpp line 1056]
nsStackLayout::Layout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsStackLayout.cpp
line 331]
nsContainerBox::DoLayout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp line 612]
nsBoxFrame::DoLayout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxFrame.cpp
line 1151]
nsDeckFrame::DoLayout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsDeckFrame.cpp
line 402]
nsBox::Layout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBox.cpp line 1056]
nsSprocketLayout::Layout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsSprocketLayout.cpp line 529]
nsContainerBox::DoLayout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp line 612]
nsBoxFrame::DoLayout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBoxFrame.cpp
line 1151]
nsBox::Layout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsBox.cpp line 1056]
nsStackLayout::Layout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsStackLayout.cpp
line 331]
nsContainerBox::DoLayout
[d:\builds\seamonkey\mozilla\layout\xul\base\src\nsContainerBox.cpp line 612]
Source File :
http://bonsai.mozilla.org/cvsblame.cgi?file=mozilla/layout/html/base/src/nsLineL
ayout.cpp line :
1767
(671248) Comments: Changing from modern to classic theme from Prefs
dialog
(666081) URL: http://news.bbc.co.uk
(664550) URL: themes.org
(662802) URL: www.fileplanet.com
(651925) URL: www.multimap.co.uk
(651925) Comments: I had a window open at www.planetrecruit.co.uk one at
www.jobserve.co.uk and one at www.multimap.co.uk. I had just registered with
multimap.co.uk and logged in. Then windows gave me a dialogue box about the
fatal error.
(646317) URL: http://java.sun.com/
(646317) Comments: I applied the Classic theme.
(645887) URL: http://java.sun.com/
(645887) Comments: I applied the Modern theme.
(635887) Comments: I tried to apply the Modern theme while I was using
the Classic theme.
*** Bug 116244 has been marked as a duplicate of this bug. ***
Bug 116244 shows a crash with the same stack happening on Solaris. Further
looks at Talkback data show incidents happening on Linux, Win98, Win2000 and
XP. OS -> All Platform -> All
Severity: major → critical
OS: Windows 2000 → All
Hardware: PC → All
Any movement on this one? It's still a big problem on the Trunk. Judging from
user comments this one seems to be easily reproducible with the Little Mozilla
theme. ( http://www.geocities.com/alfredkayser/mozilla/themes.htm )
Although I don't see the crash anymore (I used to), I do see style context
parentage warnings that make me think this is the same problem as bug 116022. I
added some additional debugging code that shows all the warnings are because the
style contexts are in entirely different style context trees.
Summary: Crash when applying theme on certain web pages [@ nsLineLayout::IsPercentageUnitSides] → [RR]Crash when applying theme on certain web pages [@ nsLineLayout::IsPercentageUnitSides]
Comment 10•24 years ago
|
||
*** Bug 119868 has been marked as a duplicate of this bug. ***
Blocks: 115520
Comment 11•24 years ago
|
||
Can this one still make M098?
Comment 12•24 years ago
|
||
*** Bug 120254 has been marked as a duplicate of this bug. ***
Updated•24 years ago
|
Keywords: mozilla0.9.8,
mozilla0.9.9
Comment 13•24 years ago
|
||
Could someone check if that one is a dupe:
- go to http://design4use.net/themewrap/ download any file (Win32/ThemeWrap.zip
for me);
- while downloading change theme.
Mozilla crash (BuildID: 2002 01 16 04)
/jc
Comment 14•24 years ago
|
||
Tried the crash in comment #13, same signature, same stack, same bug.
Just bringing up the download dialog by clicking
http://design4use.net/themewrap/win32/ThemeWrap.zip and then changing theme is
enough to cause the crash.
Removing *all* of the don't-do-this-if-it's-a-FRAMECHANGE checks in
ReResolveStyleContext fixes this. Perhaps we're not doing a FRAMECHANGE
correctly when generated content is involved?
This explains what I meant in my previous comment.
Comment 18•24 years ago
|
||
I can reproduce the crash on windows 98 when switching themes in preferences
dialog (commercial build: 2002-01-17-09-trunk).
Steps to reproduce:
1. Go to http://java.sun.com/
2. Apply the Modern theme (or Classic theme). It doesn't matter if you apply the
current theme or a different theme. This works fine, no crash!
NOTE: If you switch themes from Preferences dialog, it crash!
I have the same stacktrace like comment#3:
Stack traces on windows 98 (commercial build: 2002-01-17-09-trunk):
nsLineLayout::IsPercentageUnitSides [d:\builds\seamonkey\mozilla\layout\html\
base\src\nsLineLayout.cpp, line 1767]
IsPercentageAwareChild [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsBlockFrame.cpp, line 1138]
nsBlockFrame::ReflowInlineFrame [d:\builds\seamonkey\mozilla\layout\html\base\
src\nsBlockFrame.cpp, line 3727]
nsBlockFrame::DoReflowInlineFrames [d:\builds\seamonkey\mozilla\layout\html\base\
src\nsBlockFrame.cpp, line 3616]
nsBlockFrame::DoReflowInlineFramesAuto [d:\builds\seamonkey\mozilla\layout\html\
base\src\nsBlockFrame.cpp, line 3541]
nsBlockFrame::ReflowInlineFrames [d:\builds\seamonkey\mozilla\layout\html\base\
src\nsBlockFrame.cpp, line 3486]
nsBlockFrame::ReflowLine [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsBlockFrame.cpp, line 2601]
nsBlockFrame::ReflowDirtyLines [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsBlockFrame.cpp, line 2279]
nsBlockFrame::Reflow [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsBlockFrame.cpp, line 846]
nsContainerFrame::ReflowChild [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsContainerFrame.cpp, line 771]
nsTableCellFrame::Reflow [d:\builds\seamonkey\mozilla\layout\html\table\src\
nsTableCellFrame.cpp, line 943]
nsContainerFrame::ReflowChild [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsContainerFrame.cpp, line 771]
nsTableRowFrame::ReflowChildren [d:\builds\seamonkey\mozilla\layout\html\table\
src\nsTableRowFrame.cpp, line 1039]
nsTableRowFrame::Reflow [d:\builds\seamonkey\mozilla\layout\html\table\src\
nsTableRowFrame.cpp, line 1427]
nsContainerFrame::ReflowChild [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsContainerFrame.cpp, line 771]
nsTableRowGroupFrame::ReflowChildren [d:\builds\seamonkey\mozilla\layout\html\
table\src\nsTableRowGroupFrame.cpp, line 453]
nsTableRowGroupFrame::Reflow [d:\builds\seamonkey\mozilla\layout\html\table\src\
nsTableRowGroupFrame.cpp, line 1155]
nsContainerFrame::ReflowChild [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsContainerFrame.cpp, line 771]
nsTableFrame::ReflowChildren [d:\builds\seamonkey\mozilla\layout\html\table\src\
nsTableFrame.cpp, line 3137]
nsTableFrame::Reflow [d:\builds\seamonkey\mozilla\layout\html\table\src\
nsTableFrame.cpp, line 1934]
nsContainerFrame::ReflowChild [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsContainerFrame.cpp, line 771]
nsTableOuterFrame::OuterReflowChild [d:\builds\seamonkey\mozilla\layout\html\
table\src\nsTableOuterFrame.cpp, line 979]
nsTableOuterFrame::IR_InnerTableReflow [d:\builds\seamonkey\mozilla\layout\html\
table\src\nsTableOuterFrame.cpp, line 1296]
nsTableOuterFrame::IR_TargetIsMe [d:\builds\seamonkey\mozilla\layout\html\table\
src\nsTableOuterFrame.cpp, line 1245]
nsTableOuterFrame::IncrementalReflow [d:\builds\seamonkey\mozilla\layout\html\
table\src\nsTableOuterFrame.cpp, line 1029]
nsTableOuterFrame::Reflow [d:\builds\seamonkey\mozilla\layout\html\table\src\
nsTableOuterFrame.cpp, line 1531]
nsBlockReflowContext::DoReflowBlock [d:\builds\seamonkey\mozilla\layout\html\
base\src\nsBlockReflowContext.cpp, line 581]
nsBlockReflowContext::ReflowBlock [d:\builds\seamonkey\mozilla\layout\html\base\
src\nsBlockReflowContext.cpp, line 359]
nsBlockFrame::ReflowBlockFrame [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsBlockFrame.cpp, line 3230]
nsBlockFrame::ReflowLine [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsBlockFrame.cpp, line 2506]
nsBlockFrame::ReflowDirtyLines [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsBlockFrame.cpp, line 2279]
nsBlockFrame::Reflow [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsBlockFrame.cpp, line 846]
nsContainerFrame::ReflowChild [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsContainerFrame.cpp, line 771]
nsTableCellFrame::Reflow [d:\builds\seamonkey\mozilla\layout\html\table\src\
nsTableCellFrame.cpp, line 943]
nsContainerFrame::ReflowChild [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsContainerFrame.cpp, line 771]
nsTableRowFrame::IR_TargetIsChild [d:\builds\seamonkey\mozilla\layout\html\table\
src\nsTableRowFrame.cpp, line 1261]
nsTableRowFrame::IncrementalReflow [d:\builds\seamonkey\mozilla\layout\html\
table\src\nsTableRowFrame.cpp, line 1156]
nsTableRowFrame::Reflow [d:\builds\seamonkey\mozilla\layout\html\table\src\
nsTableRowFrame.cpp, line 1431]
nsContainerFrame::ReflowChild [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsContainerFrame.cpp, line 771]
nsTableRowGroupFrame::IR_TargetIsChild [d:\builds\seamonkey\mozilla\layout\html\
table\src\nsTableRowGroupFrame.cpp, line 1555]
nsTableRowGroupFrame::IncrementalReflow [d:\builds\seamonkey\mozilla\layout\html\
table\src\nsTableRowGroupFrame.cpp, line 1232]
nsTableRowGroupFrame::Reflow [d:\builds\seamonkey\mozilla\layout\html\table\src\
nsTableRowGroupFrame.cpp, line 1142]
nsContainerFrame::ReflowChild [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsContainerFrame.cpp, line 771]
nsTableFrame::IR_TargetIsChild [d:\builds\seamonkey\mozilla\layout\html\table\
src\nsTableFrame.cpp, line 2856]
nsTableFrame::IncrementalReflow [d:\builds\seamonkey\mozilla\layout\html\table\
src\nsTableFrame.cpp, line 2695]
nsTableFrame::Reflow [d:\builds\seamonkey\mozilla\layout\html\table\src\
nsTableFrame.cpp, line 1950]
nsContainerFrame::ReflowChild [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsContainerFrame.cpp, line 771]
nsTableOuterFrame::OuterReflowChild [d:\builds\seamonkey\mozilla\layout\html\
table\src\nsTableOuterFrame.cpp, line 979]
nsTableOuterFrame::IR_InnerTableReflow [d:\builds\seamonkey\mozilla\layout\html\
table\src\nsTableOuterFrame.cpp, line 1296]
nsTableOuterFrame::IR_TargetIsInnerTableFrame [d:\builds\seamonkey\mozilla\
layout\html\table\src\nsTableOuterFrame.cpp, line 1085]
nsTableOuterFrame::IR_TargetIsChild [d:\builds\seamonkey\mozilla\layout\html\
table\src\nsTableOuterFrame.cpp, line 1075]
nsTableOuterFrame::IncrementalReflow [d:\builds\seamonkey\mozilla\layout\html\
table\src\nsTableOuterFrame.cpp, line 1038]
nsTableOuterFrame::Reflow [d:\builds\seamonkey\mozilla\layout\html\table\src\
nsTableOuterFrame.cpp, line 1531]
nsBlockReflowContext::DoReflowBlock [d:\builds\seamonkey\mozilla\layout\html\
base\src\nsBlockReflowContext.cpp, line 581]
nsBlockReflowContext::ReflowBlock [d:\builds\seamonkey\mozilla\layout\html\base\
src\nsBlockReflowContext.cpp, line 359]
nsBlockFrame::ReflowBlockFrame [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsBlockFrame.cpp, line 3230]
nsBlockFrame::ReflowLine [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsBlockFrame.cpp, line 2506]
nsBlockFrame::ReflowDirtyLines [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsBlockFrame.cpp, line 2279]
nsBlockFrame::Reflow [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsBlockFrame.cpp, line 846]
nsBlockReflowContext::DoReflowBlock [d:\builds\seamonkey\mozilla\layout\html\
base\src\nsBlockReflowContext.cpp, line 581]
nsBlockReflowContext::ReflowBlock [d:\builds\seamonkey\mozilla\layout\html\base\
src\nsBlockReflowContext.cpp, line 359]
nsBlockFrame::ReflowBlockFrame [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsBlockFrame.cpp, line 3230]
nsBlockFrame::ReflowLine [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsBlockFrame.cpp, line 2506]
nsBlockFrame::ReflowDirtyLines [d:\builds\seamonkey\mozilla\layout\html\base\src\
nsBlockFrame.cpp, line 2279]
Updated•24 years ago
|
Whiteboard: [driver:brendan]
Comment 19•24 years ago
|
||
*** Bug 117080 has been marked as a duplicate of this bug. ***
Comment 20•24 years ago
|
||
It's weird. Looks like I sometimes can reproduce the problem which is similar
to bug# 117080 (windows 98: 2002-01-17-09-trunk).While switching themes by
selecting View > Apply themes...continuously for serveral time, the navigation
toolbar is in classic skin mixing with the menu bar in modern skin. Screen shot
is coming...
It also occurs on linux and Mac OS 10.1 (2002-01-18-08-trunk) as well while
switching themes, the composer toolbar is not correct, missing spell or image
icons, etc...
Comment 21•24 years ago
|
||
Many of these "wrong parent style context" warnings should be bogus, since the
framechange hasn't happened yet when VerifyStyleTree is called. However, the
root cause of this bug seems to be that the framechange *isn't* happening, so
we're stuck with orphaned style contexts. Still have to figure out why that
happens, though.
The basic causes of this problem are both related to our rather bizarre (despite
agreement with the incorrect examples in the CSS2 spec) handling of :before and
:after generated content on leaf frames (which we *use* for HR elements). We
put the :before and :after as siblings of the frame, rather than first and last
child.
In this case we generate three FRAMECHANGE hints for the HR -- one for its
:before, one for the HR itself, and one for its :after. (I'm not exactly sure
*why* -- there really shouldn't be any change.)
This led me to discover that nsStyleChangeList::AppendChange collapses multiple
changes for the same content node. At first, I thought this was the real problem.
However, I think the real problem is that handling of a FRAMECHANGE hint calls
RecreateFramesForContent on the content node, which calls GetPrimaryFrameFor to
get the primary frame, and somehow manages not to destroy the old generated
:before and :after content. Now I have to figure out why *that* happens.
*** Bug 116022 has been marked as a duplicate of this bug. ***
This patch fixes the crash, and is a real fix for a real problem. However,
there's a second real problem lurking, which is that we're getting FRAMECHANGE
hints when we shouldn't be. I believe that's because quirks.css is being
removed on a theme change, which is a bug in itself and is why I'm calling this
#1.
What was happening is that rules for hr:before and hr:after were being removed.
However, RemoveGeneratedContentFrameSiblings checked for the presence of
:before and :after pseudos with ProbePseudoStyleContext before attempting to
remove generated content frames. This is (1) an invalid optimization since (as
in this case) if the pseudo-element rules are *removed* we end up with a
framechange notification that requires that we remove the frames and (2) an
"optimization" that probably (IMO) makes things slower, since poking around in
the frame tree should usually usually faster than doing selector matching.
This version is for testing, the diff -uw will be much clearer for review. I
un-indented a good bit of code.
Attachment #65493 -
Attachment is obsolete: true
Diff ignoring un-indenting, for review.
A little debugging code that I stuck in CaptureChange to print out the rules
matched by the old style context and the new one for any hr:before style context
showed that the old contexts are matching the hr:before rule in quirk.css and
the new contexts are not. I have no idea why quirk.css was being applied before
the change, though. (mQuirkStyleSheet->GetEnabled shows that it's not, although
maybe I didn't call it soon enough)
Assignee | ||
Comment 28•24 years ago
|
||
Well, we shouldn't have any <hr> in XUL. We should be using <separator/>
instead, so you could switch over to that to work around the crash. Still it's
crazy that quirks would be applying to XUL at all.
Comment 29•24 years ago
|
||
maybe "quirks mode" needs its own namespace?
Assignee | ||
Comment 30•24 years ago
|
||
Ok, got it, and - well - if I understand it correctly, the implications are
quite astonishing. It appears that whether or not to apply the quirks
stylesheets is essentially a *global* variable across all documents. I'm not
kidding.
Every style set (for each document) gets the user agent style sheet inserted
into its set of agent sheets. That ua.css sheet is *the same sheet*. It
imports quirks.css, which is also *the same sheet* across every style set.
When one style set is told to enable the quirks sheet, it goes and looks up
the sheet and sets its disabled state. When it does this, it has effectively
just changed the state for all other current open documents (XUL/HTML/XML) in
all other windows)!
This leads to the possibility that the quirks mode can be incorrectly applied
whenever multiple windows are loading and resolving style concurrently.
Assignee | ||
Comment 31•24 years ago
|
||
My fix for this problem is to Clone the user agent style sheet, so that each
doc viewer receives its own clone of the sheet. Since disabled state is held
outside of the shared portion, there is no fault.
This could spike page load though by a few ms, depending on how expensive
cloning a sheet is.
Assignee | ||
Updated•24 years ago
|
Status: NEW → ASSIGNED
Target Milestone: --- → mozilla1.0
Assignee | ||
Updated•24 years ago
|
Target Milestone: mozilla1.0 → mozilla0.9.8
Comment 32•24 years ago
|
||
One would hope that cloning takes microseconds (dozens to hundreds of
instructions), not milliseconds.
/be
Comment 33•24 years ago
|
||
I say get r= and sr= on attachment 65808 [details] [diff] [review], and I'll a= it for checkin to the
0.9.8 trunk. We can monitor pageload perf and take action only if needed --
let's optimize here.
/be
Assignee | ||
Comment 34•24 years ago
|
||
I'd like to get some agreement that my theory is correct first before landing.
It doesn't seem to fix the removal of the quirk.css rules. I also needed an
additonal patch to nsContentDLF.{h,cpp} to get the browser to start up, since it
was passing in a null UA stylesheet in some cases.
Assignee | ||
Comment 37•24 years ago
|
||
Seems like this patch might be simpler.
Attachment #65808 -
Attachment is obsolete: true
Attachment #65848 -
Attachment is obsolete: true
That would work, but I think it's wrong that some documents aren't getting a UA
stylesheet and it also doesn't solve the problem that the patch doesn't fix the
quirk.css problem (assuming I tested it right).
Assignee | ||
Comment 39•24 years ago
|
||
A couple of questions:
(1) How are you getting a null stylesheet? Just starting up normally? I
don't see that on Win32.
(2) What are your steps to reproduce the case where quirks.css is being
removed? Which of these crashing test cases are you using?
Assignee | ||
Updated•24 years ago
|
Attachment #65848 -
Attachment is obsolete: false
Attachment #65808 -
Flags: review+
Assignee | ||
Comment 40•24 years ago
|
||
Ok, so we basically have three patches, all of which should land for this bug
I think. I have un-obsoleted the DLF patch to make that clear.
Assignee | ||
Comment 41•24 years ago
|
||
Comment on attachment 65848 [details] [diff] [review]
patch to nsContentDLF that I needed to use attachment 65808 [details] [diff] [review] without crashing on startup
r=hyatt on dbaron's patches.
Attachment #65848 -
Flags: review+
Assignee | ||
Comment 42•24 years ago
|
||
Comment on attachment 65799 [details] [diff] [review]
real fix #1 (diff -uw)
r=hyatt
Attachment #65799 -
Flags: review+
Attachment #65850 -
Flags: review+
I'm not sure whether we want the null-check or not, although if we want it, we
probably want to ensure that mUAStyleSheet is null if the null check fails. I
noted review for both versions, though (attachment 65808 [details] [diff] [review] and attachment 65850 [details] [diff] [review]).
Assignee | ||
Comment 44•24 years ago
|
||
Brendan, care to sr all patches?
Comment 45•24 years ago
|
||
Attachment #65799 -
Flags: superreview+
Comment 46•24 years ago
|
||
Comment on attachment 65848 [details] [diff] [review]
patch to nsContentDLF that I needed to use attachment 65808 [details] [diff] [review] without crashing on startup
why nsresult rather than void EnsureUAStyleSheet, if the r.v. is always
ignored? Either way, sr=brendan@mozilla.org.
/be
Attachment #65848 -
Flags: superreview+
Comment 47•24 years ago
|
||
Comment on attachment 65850 [details] [diff] [review]
A simpler way to avoid the crash?
Ok, I sr'd all three patches. I can probably take the risk of lack of driver
peer review by a='ing too, as asa would rubber-stamp-a=, and dbaron is a driver
too.
a=brendan@mozilla.org for all three patches to get into the frozen 0.9.8 trunk.
/be
Attachment #65850 -
Flags: superreview+
Assignee | ||
Comment 48•24 years ago
|
||
All patches checked in.
Status: ASSIGNED → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
Comment 49•24 years ago
|
||
Verified the patch. Also, no crash occurs on windows 98, linux redhat 6.2, and
Mac OS 9.2(2002-01-24-08-trunk)
Status: RESOLVED → VERIFIED
Updated•17 years ago
|
Product: Core → Core Graveyard
Updated•14 years ago
|
Crash Signature: [@ nsLineLayout::IsPercentageUnitSides]
You need to log in
before you can comment on or make changes to this bug.
Description
•