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

NEW
Assigned to

Status

()

--
critical
12 years ago
12 years ago

People

(Reporter: rodriguj, Assigned: dbaron)

Tracking

1.8 Branch
x86
Windows XP
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

(URL)

(Reporter)

Description

12 years ago
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
(Reporter)

Comment 1

12 years ago
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
You need to log in before you can comment on or make changes to this bug.