Closed
Bug 153429
Opened 22 years ago
Closed 22 years ago
CPU goes up to 100% when this page loads
Categories
(Core :: Layout, defect, P1)
Core
Layout
Tracking
()
RESOLVED
FIXED
mozilla1.2alpha
People
(Reporter: garth, Assigned: dbaron)
References
()
Details
(Keywords: hang, Whiteboard: [patch])
Attachments
(4 files, 4 obsolete files)
444 bytes,
text/html
|
Details | |
326 bytes,
text/html
|
Details | |
1.90 KB,
patch
|
roc
:
review+
bzbarsky
:
superreview+
|
Details | Diff | Splinter Review |
823 bytes,
text/html
|
Details |
From Bugzilla Helper: User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-TW; rv:1.1a) Gecko/20020611 BuildID: 2002061104 CPU maxes out and browser is hung when I try to view this page http://www.td.com/hr/it.html Works ok in IE5 Reproducible: Always Steps to Reproduce: 1. open Mozilla 2. go to http://www.td.com/hr/it.html 3. kill, rest, repeat
Comment 1•22 years ago
|
||
Confirming 100% CPU and hang, 20020617 trunk, winXP. There's a fair bit of javascript in there, including a fairly serious attempt at browser sniffing. My _guess_ is that there's something nasty in the javascript going into some kind of infinite loop
Comment 2•22 years ago
|
||
conmfirming with win2k build 20020620 (my debug crashes and my optimized hangs) WARNING: NS_ENSURE_TRUE(NS_SUCCEEDED(result)) failed, file d:/moz_source/gmake/m ozilla/htmlparser/src/nsHTMLTokens.cpp, line 342 WARNING: NS_ENSURE_TRUE(NS_SUCCEEDED(result)) failed, file d:/moz_source/gmake/m ozilla/htmlparser/src/nsHTMLTokenizer.cpp, line 799 Block(td)(0)@05F86234: yikes! spinning on a line over 1000 times! nsDebug::Abort(const char * 0x021675b8, int 3469) line 413 + 3 bytes nsBlockFrame::ReflowInlineFrames(nsBlockReflowState & {...}, nsLineList_iterator {...}, int * 0x00127e6c, int 0, int 0) line 3469 + 16 bytes nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineList_iterator {...}, int * 0x00127e6c, int 0) line 2609 + 33 bytes nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2253 + 31 bytes nsBlockFrame::Reflow(nsBlockFrame * const 0x05f86234, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 949 + 15 bytes nsContainerFrame::ReflowChild(nsIFrame * 0x05f86234, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 15, int 15, unsigned int 0, unsigned int & 0) line 802 + 31 bytes nsTableCellFrame::Reflow(nsTableCellFrame * const 0x05f861d4, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 946 nsContainerFrame::ReflowChild(nsIFrame * 0x05f861d4, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 0, unsigned int 0, unsigned int & 0) line 802 + 31 bytes nsTableRowFrame::ReflowChildren(nsTableRowFrame * const 0x05f860bc, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, nsTableFrame & {...}, unsigned int & 0, int 0) line 1041 + 45 bytes nsTableRowFrame::Reflow(nsTableRowFrame * const 0x05f860bc, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 1448 + 37 bytes nsContainerFrame::ReflowChild(nsIFrame * 0x05f860bc, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 0, unsigned int 0, unsigned int & 0) line 802 + 31 bytes nsTableRowGroupFrame::ReflowChildren(nsTableRowGroupFrame * const 0x05f11c7c, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, nsRowGroupReflowState & {...}, unsigned int & 0, nsTableRowFrame * 0x00000000, int 0, nsTableRowFrame * * 0x00000000, int * 0x00128be4) line 444 + 45 bytes nsTableRowGroupFrame::Reflow(nsTableRowGroupFrame * const 0x05f11c7c, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 1214 + 35 bytes nsContainerFrame::ReflowChild(nsIFrame * 0x05f11c7c, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 0, unsigned int 0, unsigned int & 0) line 802 + 31 bytes nsTableFrame::ReflowChildren(nsTableFrame * const 0x05f85f6c, nsIPresContext * 0x03bdd798, nsTableReflowState & {...}, int 1, int 0, unsigned int & 0, nsIFrame * & 0x00000000, int * 0x00000000) line 3311 + 53 bytes nsTableFrame::ReflowTable(nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 1073741824, nsReflowReason eReflowReason_Resize, nsIFrame * & 0x00000000, int & 0, int & 1, unsigned int & 0) line 2207 nsTableFrame::Reflow(nsTableFrame * const 0x05f85f6c, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 2073 nsContainerFrame::ReflowChild(nsIFrame * 0x05f85f6c, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 0, unsigned int 3, unsigned int & 0) line 802 + 31 bytes nsTableOuterFrame::OuterReflowChild(nsTableOuterFrame * const 0x05f85da0, nsIPresContext * 0x03bdd798, nsIFrame * 0x05f85f6c, const nsHTMLReflowState & {...}, nsHTMLReflowMetrics & {...}, int * 0x00000000, nsSize & {...}, nsMargin & {...}, nsMargin & {...}, nsMargin & {...}, nsReflowReason eReflowReason_Resize, unsigned int & 0) line 1026 + 47 bytes nsTableOuterFrame::Reflow(nsTableOuterFrame * const 0x05f85da0, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 1611 + 72 bytes nsBlockReflowContext::DoReflowBlock(nsHTMLReflowState & {...}, nsReflowReason eReflowReason_Resize, nsIFrame * 0x05f85da0, const nsRect & {...}, int 1, nsCollapsingMargin & {...}, int 1, nsMargin & {...}, unsigned int & 0) line 569 + 36 bytes nsBlockReflowContext::ReflowBlock(nsIFrame * 0x05f85da0, const nsRect & {...}, int 1, nsCollapsingMargin & {...}, int 1, nsMargin & {...}, unsigned int & 0) line 345 + 50 bytes nsBlockFrame::ReflowFloater(nsBlockReflowState & {...}, nsPlaceholderFrame * 0x05f90b08, nsRect & {...}, nsMargin & {...}, nsMargin & {...}, unsigned int & 0) line 5311 + 49 bytes nsBlockReflowState::FlowAndPlaceFloater(nsFloaterCache * 0x05f62790, int * 0x00129a80, unsigned int & 0) line 882 nsBlockReflowState::AddFloater(nsLineLayout & {...}, nsPlaceholderFrame * 0x05f90b08, int 0, unsigned int & 0) line 684 nsLineLayout::AddFloater(nsPlaceholderFrame * 0x05f90b08, unsigned int & 0) line 235 nsLineLayout::ReflowFrame(nsIFrame * 0x05f90b08, unsigned int & 0, nsHTMLReflowMetrics * 0x00000000, int & 0) line 1173 nsBlockFrame::ReflowInlineFrame(nsBlockReflowState & {...}, nsLineLayout & {...}, nsLineList_iterator {...}, nsIFrame * 0x05f90b08, unsigned char * 0x00129d4c) line 3749 + 22 bytes nsBlockFrame::DoReflowInlineFrames(nsBlockReflowState & {...}, nsLineLayout & {...}, nsLineList_iterator {...}, int * 0x0012a470, unsigned char * 0x0012a248, int 0, int 0) line 3625 + 32 bytes nsBlockFrame::DoReflowInlineFramesAuto(nsBlockReflowState & {...}, nsLineList_iterator {...}, int * 0x0012a470, unsigned char * 0x0012a248, int 0, int 0) line 3515 + 46 bytes nsBlockFrame::ReflowInlineFrames(nsBlockReflowState & {...}, nsLineList_iterator {...}, int * 0x0012a470, int 0, int 0) line 3459 + 36 bytes nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineList_iterator {...}, int * 0x0012a470, int 0) line 2609 + 33 bytes nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2253 + 31 bytes nsBlockFrame::Reflow(nsBlockFrame * const 0x05f85b10, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 949 + 15 bytes nsContainerFrame::ReflowChild(nsIFrame * 0x05f85b10, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 0, unsigned int 0, unsigned int & 0) line 802 + 31 bytes nsTableCellFrame::Reflow(nsTableCellFrame * const 0x05f85ab0, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 946 nsContainerFrame::ReflowChild(nsIFrame * 0x05f85ab0, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 2355, int 0, unsigned int 0, unsigned int & 0) line 802 + 31 bytes nsTableRowFrame::ReflowChildren(nsTableRowFrame * const 0x05f3ad9c, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, nsTableFrame & {...}, unsigned int & 0, int 0) line 1041 + 45 bytes nsTableRowFrame::Reflow(nsTableRowFrame * const 0x05f3ad9c, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 1448 + 37 bytes nsContainerFrame::ReflowChild(nsIFrame * 0x05f3ad9c, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 0, unsigned int 0, unsigned int & 0) line 802 + 31 bytes nsTableRowGroupFrame::ReflowChildren(nsTableRowGroupFrame * const 0x05f11c04, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, nsRowGroupReflowState & {...}, unsigned int & 0, nsTableRowFrame * 0x00000000, int 0, nsTableRowFrame * * 0x00000000, int * 0x0012b1e8) line 444 + 45 bytes nsTableRowGroupFrame::Reflow(nsTableRowGroupFrame * const 0x05f11c04, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 1214 + 35 bytes nsContainerFrame::ReflowChild(nsIFrame * 0x05f11c04, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 0, unsigned int 0, unsigned int & 0) line 802 + 31 bytes nsTableFrame::ReflowChildren(nsTableFrame * const 0x05f3aca4, nsIPresContext * 0x03bdd798, nsTableReflowState & {...}, int 1, int 0, unsigned int & 0, nsIFrame * & 0x00000000, int * 0x00000000) line 3311 + 53 bytes nsTableFrame::ReflowTable(nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 1073741824, nsReflowReason eReflowReason_Resize, nsIFrame * & 0x00000000, int & 0, int & 1, unsigned int & 0) line 2207 nsTableFrame::Reflow(nsTableFrame * const 0x05f3aca4, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 2073 nsContainerFrame::ReflowChild(nsIFrame * 0x05f3aca4, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 0, unsigned int 3, unsigned int & 0) line 802 + 31 bytes nsTableOuterFrame::OuterReflowChild(nsTableOuterFrame * const 0x05f3ac58, nsIPresContext * 0x03bdd798, nsIFrame * 0x05f3aca4, const nsHTMLReflowState & {...}, nsHTMLReflowMetrics & {...}, int * 0x00000000, nsSize & {...}, nsMargin & {...}, nsMargin & {...}, nsMargin & {...}, nsReflowReason eReflowReason_Initial, unsigned int & 0) line 1026 + 47 bytes nsTableOuterFrame::Reflow(nsTableOuterFrame * const 0x05f3ac58, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 1611 + 72 bytes nsBlockReflowContext::DoReflowBlock(nsHTMLReflowState & {...}, nsReflowReason eReflowReason_Resize, nsIFrame * 0x05f3ac58, const nsRect & {...}, int 1, nsCollapsingMargin & {...}, int 1, nsMargin & {...}, unsigned int & 0) line 569 + 36 bytes nsBlockReflowContext::ReflowBlock(nsIFrame * 0x05f3ac58, const nsRect & {...}, int 1, nsCollapsingMargin & {...}, int 1, nsMargin & {...}, unsigned int & 0) line 345 + 50 bytes nsBlockFrame::ReflowBlockFrame(nsBlockReflowState & {...}, nsLineList_iterator {...}, int * 0x0012c25c) line 3221 + 59 bytes nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineList_iterator {...}, int * 0x0012c25c, int 1) line 2471 + 27 bytes nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2253 + 31 bytes nsBlockFrame::Reflow(nsBlockFrame * const 0x05f2cabc, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 949 + 15 bytes nsContainerFrame::ReflowChild(nsIFrame * 0x05f2cabc, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 0, unsigned int 0, unsigned int & 0) line 802 + 31 bytes nsTableCellFrame::Reflow(nsTableCellFrame * const 0x05f2ca5c, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 946 nsContainerFrame::ReflowChild(nsIFrame * 0x05f2ca5c, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 0, unsigned int 0, unsigned int & 0) line 802 + 31 bytes nsTableRowFrame::IR_TargetIsChild(nsTableRowFrame * const 0x05f2c99c, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, nsTableFrame & {...}, unsigned int & 0, nsIFrame * 0x05f2ca5c) line 1299 + 45 bytes nsTableRowFrame::IncrementalReflow(nsTableRowFrame * const 0x05f2c99c, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, nsTableFrame & {...}, unsigned int & 0) line 1189 + 46 bytes nsTableRowFrame::Reflow(nsTableRowFrame * const 0x05f2c99c, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 1452 + 35 bytes nsContainerFrame::ReflowChild(nsIFrame * 0x05f2c99c, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 585, unsigned int 0, unsigned int & 0) line 802 + 31 bytes nsTableRowGroupFrame::IR_TargetIsChild(nsTableRowGroupFrame * const 0x05ef79c8, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, nsRowGroupReflowState & {...}, unsigned int & 0, nsIFrame * 0x05f2c99c) line 1627 + 45 bytes nsTableRowGroupFrame::IncrementalReflow(nsTableRowGroupFrame * const 0x05ef79c8, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, nsRowGroupReflowState & {...}, unsigned int & 0) line 1296 + 42 bytes nsTableRowGroupFrame::Reflow(nsTableRowGroupFrame * const 0x05ef79c8, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 1205 + 31 bytes nsContainerFrame::ReflowChild(nsIFrame * 0x05ef79c8, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 15, int 15, unsigned int 0, unsigned int & 0) line 802 + 31 bytes nsTableFrame::IR_TargetIsChild(nsTableFrame * const 0x05f02ce0, nsIPresContext * 0x03bdd798, nsTableReflowState & {...}, unsigned int & 0, nsIFrame * 0x05ef79c8) line 3042 + 50 bytes nsTableFrame::IncrementalReflow(nsTableFrame * const 0x05f02ce0, nsIPresContext * 0x03bdd798, const nsHTMLReflowState & {...}, unsigned int & 0) line 2770 + 38 bytes nsTableFrame::Reflow(nsTableFrame * const 0x05f02ce0, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 2023 + 27 bytes nsContainerFrame::ReflowChild(nsIFrame * 0x05f02ce0, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 0, unsigned int 3, unsigned int & 0) line 802 + 31 bytes nsTableOuterFrame::OuterReflowChild(nsTableOuterFrame * const 0x05f02ac8, nsIPresContext * 0x03bdd798, nsIFrame * 0x05f02ce0, const nsHTMLReflowState & {...}, nsHTMLReflowMetrics & {...}, int * 0x00000000, nsSize & {...}, nsMargin & {...}, nsMargin & {...}, nsMargin & {...}, nsReflowReason eReflowReason_Incremental, unsigned int & 0) line 1026 + 47 bytes nsTableOuterFrame::IR_InnerTableReflow(nsTableOuterFrame * const 0x05f02ac8, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 1340 + 66 bytes nsTableOuterFrame::IR_TargetIsInnerTableFrame(nsTableOuterFrame * const 0x05f02ac8, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 1125 + 31 bytes nsTableOuterFrame::IR_TargetIsChild(nsTableOuterFrame * const 0x05f02ac8, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0, nsIFrame * 0x05f02ce0) line 1097 + 31 bytes nsTableOuterFrame::IncrementalReflow(nsTableOuterFrame * const 0x05f02ac8, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 1077 + 42 bytes nsTableOuterFrame::Reflow(nsTableOuterFrame * const 0x05f02ac8, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 1579 + 31 bytes nsBlockReflowContext::DoReflowBlock(nsHTMLReflowState & {...}, nsReflowReason eReflowReason_Incremental, nsIFrame * 0x05f02ac8, const nsRect & {...}, int 0, nsCollapsingMargin & {...}, int 1, nsMargin & {...}, unsigned int & 0) line 569 + 36 bytes nsBlockReflowContext::ReflowBlock(nsIFrame * 0x05f02ac8, const nsRect & {...}, int 0, nsCollapsingMargin & {...}, int 1, nsMargin & {...}, unsigned int & 0) line 345 + 50 bytes nsBlockFrame::ReflowBlockFrame(nsBlockReflowState & {...}, nsLineList_iterator {...}, int * 0x0012de84) line 3221 + 59 bytes nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineList_iterator {...}, int * 0x0012de84, int 1) line 2471 + 27 bytes nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2253 + 31 bytes nsBlockFrame::Reflow(nsBlockFrame * const 0x05f02520, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 949 + 15 bytes nsBlockReflowContext::DoReflowBlock(nsHTMLReflowState & {...}, nsReflowReason eReflowReason_Incremental, nsIFrame * 0x05f02520, const nsRect & {...}, int 1, nsCollapsingMargin & {...}, int 1, nsMargin & {...}, unsigned int & 0) line 569 + 36 bytes nsBlockReflowContext::ReflowBlock(nsIFrame * 0x05f02520, const nsRect & {...}, int 1, nsCollapsingMargin & {...}, int 1, nsMargin & {...}, unsigned int & 0) line 345 + 50 bytes nsBlockFrame::ReflowBlockFrame(nsBlockReflowState & {...}, nsLineList_iterator {...}, int * 0x0012eaf8) line 3221 + 59 bytes nsBlockFrame::ReflowLine(nsBlockReflowState & {...}, nsLineList_iterator {...}, int * 0x0012eaf8, int 1) line 2471 + 27 bytes nsBlockFrame::ReflowDirtyLines(nsBlockReflowState & {...}) line 2253 + 31 bytes nsBlockFrame::Reflow(nsBlockFrame * const 0x05effbf8, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 949 + 15 bytes nsContainerFrame::ReflowChild(nsIFrame * 0x05effbf8, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 0, unsigned int 0, unsigned int & 0) line 802 + 31 bytes CanvasFrame::Reflow(CanvasFrame * const 0x05ef7170, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 563 nsBoxToBlockAdaptor::Reflow(nsBoxLayoutState & {...}, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0, int 0, int 0, int 15360, int 9555, int 1) line 882 nsBoxToBlockAdaptor::DoLayout(nsBoxToBlockAdaptor * const 0x05effb5c, nsBoxLayoutState & {...}) line 625 + 46 bytes nsBox::Layout(nsBox * const 0x05effb5c, nsBoxLayoutState & {...}) line 1062 nsScrollBoxFrame::DoLayout(nsScrollBoxFrame * const 0x05ef7640, nsBoxLayoutState & {...}) line 394 nsBox::Layout(nsBox * const 0x05ef7640, nsBoxLayoutState & {...}) line 1062 nsContainerBox::LayoutChildAt(nsBoxLayoutState & {...}, nsIBox * 0x05ef7640, const nsRect & {...}) line 645 + 16 bytes nsGfxScrollFrameInner::LayoutBox(nsBoxLayoutState & {...}, nsIBox * 0x05ef7640, const nsRect & {...}) line 1081 + 17 bytes nsGfxScrollFrameInner::Layout(nsBoxLayoutState & {...}) line 1236 nsGfxScrollFrame::DoLayout(nsGfxScrollFrame * const 0x05ef7448, nsBoxLayoutState & {...}) line 1089 + 15 bytes nsBox::Layout(nsBox * const 0x05ef7448, nsBoxLayoutState & {...}) line 1062 nsBoxFrame::Reflow(nsBoxFrame * const 0x05ef7410, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 1002 nsGfxScrollFrame::Reflow(nsGfxScrollFrame * const 0x05ef7410, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 776 + 25 bytes nsContainerFrame::ReflowChild(nsIFrame * 0x05ef7410, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, int 0, int 0, unsigned int 0, unsigned int & 0) line 802 + 31 bytes ViewportFrame::Reflow(ViewportFrame * const 0x05ef7134, nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int & 0) line 577 IncrementalReflow::Dispatch(nsIPresContext * 0x03bdd798, nsHTMLReflowMetrics & {...}, const nsSize & {...}, nsIRenderingContext & {...}) line 942 PresShell::ProcessReflowCommands(int 1) line 6434 ReflowEvent::HandleEvent() line 6291 HandlePLEvent(ReflowEvent * 0x05f8df30) line 6305 PL_HandleEvent(PLEvent * 0x05f8df30) line 596 + 10 bytes PL_ProcessPendingEvents(PLEventQueue * 0x00fded70) line 526 + 9 bytes _md_EventReceiverProc(HWND__ * 0x000f013c, unsigned int 49407, unsigned int 0, long 16641392) line 1077 + 9 bytes USER32! 77e01b60() USER32! 77e01cca() USER32! 77e083f1() nsAppShellService::Run(nsAppShellService * const 0x039f90d8) line 458 main1(int 2, char * * 0x00283160, nsISupports * 0x00000000) line 1456 + 32 bytes main(int 2, char * * 0x00283160) line 1805 + 37 bytes mainCRTStartup() line 338 + 17 bytes KERNEL32! 77e7d326() -> Layout
Assignee: Matti99 → attinasi
Component: Browser-General → Layout
QA Contact: imajes-qa → petersen
Comment 3•22 years ago
|
||
worksforme, linux trunk build 20020620
Updated•22 years ago
|
QA Contact: petersen → moied
Using 20020625 trunk build on winXP, Visting URL cause CPU 100% and hang.
Priority: -- → P2
Updated•22 years ago
|
Keywords: mozilla1.1,
perf
I think we can set a limit for break the loop like the debug version. Maybe, It is not a best patch, but it can avoid hang(release version) and crash(debug version) really.
Assignee | ||
Comment 6•22 years ago
|
||
Comment on attachment 89910 [details] [diff] [review] a proposed patch I'm against this change. We should figure out what the real problem is.
Updated•22 years ago
|
Target Milestone: --- → Future
Comment 7•22 years ago
|
||
dbaron, any idea?
Assignee | ||
Comment 8•22 years ago
|
||
There was a bug karnaze was fixing recently that this might have been a duplicate of.
I want to know why to set the frameReflowStatus to break-before in nsLineLayout::CanPlaceFrame when return false. I think it is the reason causeed endless loop. frameReflowStatus=break-before ----> lineReflowStaus=LINE_REFLOW_REDO ^ ^ | | ------------------------------------------ I think seting the frameReflowStatus to break-before is useless, so I give a patch to cut the code and the test page present correctly.
Attachment #89910 -
Attachment is obsolete: true
Assignee | ||
Comment 10•22 years ago
|
||
Have you looked through the history (cvs ann, or the cvs blame available off of LXR) to figure out why that line was added?
Comment 11•22 years ago
|
||
Computing the text width is bigger than availwidth. it cause the function canplaceframe return false, it return a error demension width, finally caused a endless loop.
Attachment #92494 -
Attachment is obsolete: true
Assignee | ||
Comment 12•22 years ago
|
||
This is a somewhat simplified testcase of the problem, reduced from http://www.td.com/hr/it.html . I can reproduce the problem on Linux as well.
Assignee | ||
Comment 13•22 years ago
|
||
Attachment #94855 -
Attachment is obsolete: true
Assignee | ||
Updated•22 years ago
|
OS: Windows 2000 → All
Hardware: PC → All
Assignee | ||
Comment 14•22 years ago
|
||
Note that in the original URL, http://www.td.com/hr/it.html , the hang symptom requires a large font size. In the simplified testcases I just attached, the hang should be less dependent on having a large font size (i.e., the threshhold should be lower, and in the second, perhaps even nonexistant).
Assignee | ||
Comment 15•22 years ago
|
||
This is a testcase for regression testing. We probably don't want to change the behavior of this testcase without an explicit decision to do so.
Assignee | ||
Comment 16•22 years ago
|
||
I believe this patch is the correct fix.
When we have text that must wrap around floaters, and a single word within that
text is too small to fit, our strategy (this is, I think, ambiguous in the CSS
spec) is to push the word to where it does fit (or at a minimum, to clear it
past all floaters if it doesn't fit in its containing block) to reduce the
amount of overlap. (See attachment 94867 [details] for an example of this behavior.)
We implement this behavior by making |DoReflowInlineFrames| return the REDO
status and make |ReflowInlineFrames| call it again. Before
|DoReflowInlineFrames| returns, it moves the current vertical position into the
next band in the space manager, i.e., the next top or bottom edge of a float,
which is the next point where the amount of available space (for inlines) might
be different.
However, the beginning of |DoReflowInlineFrames| applies the carried out margin
from the previous block (the collapsed margin) every time it is called. This
is a bug. In the normal case, the bug isn't all that serious -- we'll end up
putting the collapsed margin from the bottom of the block between the bottom of
the floater that we need to clear and the beginning of the line.
However, this case is more serious, since the carried out bottom margin is a
*negative* margin. This puts us into an infinite loop, since we keep applying
this negative margin to push us back into the band in which we didn't fit, and
then we move down to the next band, and the negative margin pushes us back into
the band where we didn't fit.
The solution to this problem is to zero the carried-out bottom margin once we
have modified the current vertical position in order to clear floaters (and we
are thus no longer adjacent to the block). This is the correct thing to do and
fixes the infinite loop.
(Note that simplification of the testcase helped considerably in finding the
bug. Trying to simplify the testcase to the smallest possible testcase often
helps to see where the bug is. That said, this is a bug that requires
considerable knowledge of the CSS spec (collapsing margins, flow around floats)
to understand clearly.)
Attachment #94821 -
Attachment is obsolete: true
Assignee | ||
Comment 17•22 years ago
|
||
Taking bug.
Assignee | ||
Comment 18•22 years ago
|
||
This demonstrates the layout correctness bug also fixed by the patch (attachment 94869 [details] [diff] [review]), which I mentioned in the third of the six long paragraphs in comment 16.
Assignee | ||
Updated•22 years ago
|
Attachment #94870 -
Attachment mime type: text/plain → text/html
Assignee | ||
Comment 19•22 years ago
|
||
One more point that's good to make: the reason I put the |Zero|-ing of the margin within the redo case rather than where we read the margin is that it isn't until we hit the redo case that we're no longer adjacent to the bottom of the previous block. In particular, we can't zero when we read the margin at the beginning of |DoReflowInlineFrames| because it's possible that the line is empty, in which case |nsBlockFrame::PlaceLine| would undo the advance by the amount of the collapsed margin. This is also where, if the line is not empty, it will |Zero| the bottom margin. However, it's outside of the loop in |ReflowInlineFrames|, so we need this additional call to |Zero|.
Comment 20•22 years ago
|
||
Comment on attachment 94869 [details] [diff] [review] patch (dbaron) sr=bzbarsky
Attachment #94869 -
Flags: superreview+
Comment on attachment 94869 [details] [diff] [review] patch (dbaron) makes sense to me r=roc+moz
Attachment #94869 -
Flags: review+
Assignee | ||
Comment 22•22 years ago
|
||
Fix checked in to trunk, 2002-08-14 05:44 PDT.
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Reporter | ||
Comment 23•22 years ago
|
||
Tested it in the nightly build: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1b) Gecko/20020814 and it appears fixed (page renders, cpu normal). Too bad so much other stuff broke in that build (tabbed browsing, back button)... Thanks for fixing this one though!
You need to log in
before you can comment on or make changes to this bug.
Description
•