Closed Bug 360879 Opened 18 years ago Closed 3 years ago

firefox locks for more than a minute when a cell within a table has a lot of <br>

Categories

(Core :: Layout, defect)

1.8 Branch
x86
Windows XP
defect
Not set
critical

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: rodriguj, Unassigned)

References

()

Details

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1) Gecko/20061010 Firefox/2.0
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1) Gecko/20061010 Firefox/2.0

Tested on Firefox 2.0 . If a plain HTML web page is loaded in which there is a table with a cell with a lot of <br> tags, Firefox get stuck for more than a minute or so. Then it resumes working.

Reproducible: Always

Steps to Reproduce:
1. USe the attached URL to load a proof-of-concept HTML code.
2.
3.

Actual Results:  
FireFox loads the page, starts to render it, and then, it stops reacting at mouse clics and keyboard presses. Mouse pointer changes to hourglass, and the whole application stops responding. After a few minutes, it resumes working.

Expected Results:  
While it may take some time to render such a web page, it shouldn't lock the whole application while doing that. User should be able to open new tabs to continue browsing while the render is in progress.

Microsoft Internet Explorer 6.0 is also affected.
Component: General → Layout
Product: Firefox → Core
QA Contact: general → layout
Version: unspecified → 1.8 Branch
The URL posted in the bug description is now online. Sorry for forgetting that!
This is not a true hang, just inefficient at resizing the table.

It's doing tons of reflow. Here's one sample stack most are similar, with variations on the nsFrame/nsFrameList stuff below the nsInlineFrame::Reflow.  Have not tested on the trunk after the reflow-branch landing, could be quite different there.

>	nsFrameList::CheckForLoops()	C++
 	nsFrameList::SetFrames()	C++
 	nsInlineFrame::Reflow()	C++
 	nsLineLayout::ReflowFrame()	C++
 	nsInlineFrame::ReflowInlineFrame()	C++
 	nsInlineFrame::ReflowFrames()	C++
 	nsInlineFrame::Reflow()	C++
 	nsLineLayout::ReflowFrame()	C++
 	nsBlockFrame::ReflowInlineFrame()	C++
 	nsBlockFrame::DoReflowInlineFrames()	C++
 	nsBlockFrame::ReflowInlineFrames()	C++
 	nsBlockFrame::ReflowLine()	C++
 	nsBlockFrame::ReflowDirtyLines()	C++
 	nsBlockFrame::Reflow()	C++
 	nsContainerFrame::ReflowChild()	C++
 	nsTableCellFrame::Reflow()	C++
 	nsContainerFrame::ReflowChild()	C++
 	nsTableRowFrame::IR_TargetIsChild()	C++
 	nsTableRowFrame::IncrementalReflow()	C++
 	nsTableRowFrame::Reflow()	C++
 	nsContainerFrame::ReflowChild()	C++
 	nsTableRowGroupFrame::IR_TargetIsChild()	C++
 	nsTableRowGroupFrame::IncrementalReflow()	C++
 	nsTableRowGroupFrame::Reflow()	C++
 	nsContainerFrame::ReflowChild()	C++
 	nsTableFrame::IR_TargetIsChild()	C++
 	nsTableFrame::IncrementalReflow()	C++
 	nsTableFrame::Reflow()	C++
 	nsContainerFrame::ReflowChild()	C++
 	nsTableOuterFrame::OuterReflowChild()	C++
 	nsTableOuterFrame::IR_InnerTableReflow()	C++
 	nsTableOuterFrame::IR_TargetIsInnerTableFrame()	C++
 	nsTableOuterFrame::IR_TargetIsChild()	C++
 	nsTableOuterFrame::IncrementalReflow()	C++
 	nsTableOuterFrame::Reflow()	C++
 	nsBlockReflowContext::ReflowBlock()	C++
 	nsBlockFrame::ReflowBlockFrame()	C++
 	nsBlockFrame::ReflowLine()	C++
 	nsBlockFrame::ReflowDirtyLines()	C++
 	nsBlockFrame::Reflow()	C++
 	nsBlockReflowContext::ReflowBlock()	C++
 	nsBlockFrame::ReflowBlockFrame()	C++
 	nsBlockFrame::ReflowLine()	C++
 	nsBlockFrame::ReflowDirtyLines()	C++
 	nsBlockFrame::Reflow()	C++
 	nsContainerFrame::ReflowChild()	C++
 	CanvasFrame::Reflow()	C++
 	nsContainerFrame::ReflowChild()	C++
 	nsHTMLScrollFrame::ReflowScrolledFrame()	C++
 	nsHTMLScrollFrame::ReflowContents()	C++
 	nsHTMLScrollFrame::Reflow()	C++
 	nsContainerFrame::ReflowChild()	C++
 	ViewportFrame::Reflow()	C++
 	IncrementalReflow::Dispatch()	C++
 	PresShell::ProcessReflowCommands()	C++
 	ReflowEvent::HandleEvent()	C++
 	HandlePLEvent()	C++
 	PL_HandleEvent()	C
 	PL_ProcessPendingEvents()	C
 	nsEventQueueImpl::ProcessPendingEvents()	C++
 	nsWindow::DispatchPendingEvents()	C++
 	nsWindow::ProcessMessage()	C++
 	nsWindow::WindowProc()	C++
 	77d48744	
 	77d48826	
 	77d489dd	
 	77d49412	
 	77d48a20	
 	nsAppShell::Run()	C++
 	nsAppStartup::Run()	C++
 	XRE_main()	C++
 	main()	C++
 	mainCRTStartup()	C
 	7c816fd7
Assignee: nobody → dbaron
Group: security
Status: UNCONFIRMED → NEW
Ever confirmed: true

Hi Daniel, should we close this issue as works for me or does it still occur ?

Flags: needinfo?(dveditz)

The testcase is gone and we didn't save a copy. hope for the best?

Status: NEW → RESOLVED
Closed: 3 years ago
Flags: needinfo?(dveditz)
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.