Closed Bug 318138 Opened 19 years ago Closed 18 years ago

browser hangup/freeze in print preview if table exceeds page size

Categories

(Core :: Layout: Tables, defect)

x86
All
defect
Not set
critical

Tracking

()

RESOLVED DUPLICATE of bug 344883

People

(Reporter: public, Assigned: bernd_mozilla)

References

()

Details

(Keywords: hang)

Attachments

(2 files)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051114 Firefox/1.5
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051114 Firefox/1.5

If a table exceeds the (vertical) page size, browser will hang in print preview.
This is also seen if table css properties (page-break-inside etc) are not set
(http://www.theresia.name/crashme2.html).

Seen on XP as well as Linux. Also seen with latest nightly build (Nov 29)
of Firefox/XP.


Reproducible: Always

Steps to Reproduce:
1. Load url http://www.theresia.name/crashme.html
2. Select "Print preview"
3. If it does not hang immediately, switch between landscape and portrait mode.

Actual Results:  
Browser hangs and must be killed.


Expected Results:  
Browser should not hang.
Also occurs with Firefox 1.5 release image:

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5
Version: unspecified → 1.5 Branch
Also occurs if Firefox is started in safe mode.
Problem is caused by "<table border=4>". Same html with "<table border=2>"
works. "<table border=3>" fails as well.
Attached file test case
Talkback incident TB12751647M, created on Linux using "kill -SEGV <pid>" after the freeze.

Stack traceback:
nsSplittableFrame::GetFirstInFlow()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsSplittableFrame.cpp, line 107]
nsTableFrame::GetCellMap()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/tables/nsTableFrame.cpp, line 763]
nsTableFrame::GetEffectiveRowSpan()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/tables/nsTableFrame.cpp, line 568]
nsTableRowGroupFrame::SplitSpanningCells()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/tables/nsTableRowGroupFrame.cpp, line 896]
nsTableRowGroupFrame::SplitRowGroup()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/tables/nsTableRowGroupFrame.cpp, line 1112]
nsTableRowGroupFrame::Reflow()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/tables/nsTableRowGroupFrame.cpp, line 1271]
nsContainerFrame::ReflowChild()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsContainerFrame.cpp, line 919]
nsTableFrame::ReflowChildren()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/tables/nsTableFrame.cpp, line 3197]
nsTableFrame::ReflowTable()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/tables/nsTableFrame.cpp, line 2139]
nsTableFrame::Reflow()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/tables/nsTableFrame.cpp, line 1976]
nsContainerFrame::ReflowChild()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsContainerFrame.cpp, line 919]
nsTableOuterFrame::OuterReflowChild()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/tables/nsTableOuterFrame.cpp, line 1315]
nsTableOuterFrame::Reflow()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/tables/nsTableOuterFrame.cpp, line 1968]
nsBlockReflowContext::ReflowBlock()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsBlockReflowContext.cpp, line 605]
nsBlockFrame::ReflowBlockFrame()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsBlockFrame.cpp, line 104]
nsBlockFrame::ReflowLine()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsBlockFrame.cpp, line 587]
nsBlockFrame::ReflowDirtyLines()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsBlockFrame.cpp, line 2263]
nsBlockFrame::Reflow()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsBlockFrame.cpp, line 902]
nsBlockReflowContext::ReflowBlock()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsBlockReflowContext.cpp, line 605]
nsBlockFrame::ReflowBlockFrame()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsBlockFrame.cpp, line 104]
nsBlockFrame::ReflowLine()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsBlockFrame.cpp, line 587]
nsBlockFrame::ReflowDirtyLines()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsBlockFrame.cpp, line 2263]
nsBlockFrame::Reflow()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsBlockFrame.cpp, line 902]
nsContainerFrame::ReflowChild()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsContainerFrame.cpp, line 919]
nsPageContentFrame::Reflow()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsPageContentFrame.cpp, line 51]
nsContainerFrame::ReflowChild()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsContainerFrame.cpp, line 919]
nsPageFrame::Reflow()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsPageFrame.cpp, line 210]
nsContainerFrame::ReflowChild()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsContainerFrame.cpp, line 919]
nsSimplePageSequenceFrame::Reflow()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsSimplePageSequence.cpp, line 54]
nsContainerFrame::ReflowChild()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsContainerFrame.cpp, line 919]
nsHTMLScrollFrame::ReflowScrolledFrame()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsGfxScrollFrame.cpp, line 406]
nsHTMLScrollFrame::ReflowContents()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsGfxScrollFrame.cpp, line 571]
nsHTMLScrollFrame::Reflow()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsGfxScrollFrame.cpp, line 769]
nsContainerFrame::ReflowChild()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsContainerFrame.cpp, line 919]
ViewportFrame::Reflow()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/generic/nsViewportFrame.cpp, line 243]
PresShell::InitialReflow()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/base/nsPresShell.cpp, line 668]
nsPrintEngine::ReflowPrintObject()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/printing/nsPrintEngine.cpp, line 848]
nsPrintEngine::ReflowDocList()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/printing/nsPrintEngine.cpp, line 2498]
nsPrintEngine::SetupToPrintContent()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/printing/nsPrintEngine.cpp, line 2308]
nsPrintEngine::DocumentReadyForPrinting()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/printing/nsPrintEngine.cpp, line 2135]
nsPrintEngine::FinishPrintPreview()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/printing/nsPrintEngine.cpp, line 4465]
nsPrintEngine::PrintPreview()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/printing/nsPrintEngine.cpp, line 1233]
DocumentViewerImpl::PrintPreview()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/layout/base/nsDocumentViewer.cpp, line 3419]
XPTC_InvokeByIndex()
XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode)()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/js/src/xpconnect/src/xpcwrappednative.cpp, line 2138]
XPC_WN_CallMethod()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/js/src/xpconnect/src/xpcwrappednativejsops.cpp, line 1444]
js_Invoke()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/js/src/jsinterp.c, line 1177]
js_InternalInvoke()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/js/src/jsinterp.c, line 1275]
JS_CallFunctionValue()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/js/src/jsapi.c, line 4159]
XPC_NW_FunctionWrapper()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/js/src/xpconnect/src/XPCNativeWrapper.cpp, line 1823]
js_Invoke()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/js/src/jsinterp.c, line 1177]
js_Interpret()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/js/src/jsinterp.c, line 3523]
js_Invoke()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/js/src/jsinterp.c, line 1197]
js_InternalInvoke()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/js/src/jsinterp.c, line 1275]
JS_CallFunctionValue()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/js/src/jsapi.c, line 4159]
nsJSContext::CallEventHandler()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/dom/src/base/nsJSEnvironment.cpp, line 1413]
nsGlobalWindow::RunTimeout()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/dom/src/base/nsGlobalWindow.cpp, line 848]
nsGlobalWindow::TimerCallback()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/dom/src/base/nsGlobalWindow.cpp, line 6656]
nsTimerImpl::Fire()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/xpcom/threads/nsTimerImpl.cpp, line 395]
handleTimerEvent()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/xpcom/threads/nsTimerImpl.cpp, line 462]
PL_HandleEvent()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/xpcom/threads/plevent.c, line 689]
PL_ProcessPendingEvents()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/xpcom/threads/plevent.c, line 623]
nsEventQueueImpl::ProcessPendingEvents()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/xpcom/threads/nsEventQueue.cpp, line 421]
event_processor_callback()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/widget/src/gtk2/nsAppShell.cpp, line 67]
libglib-2.0.so.0 + 0x40913 (0xb70a6913)
libglib-2.0.so.0 + 0x20803 (0xb7086803)
libglib-2.0.so.0 + 0x2185d (0xb708785d)
libglib-2.0.so.0 + 0x21b87 (0xb7087b87)
libglib-2.0.so.0 + 0x22162 (0xb7088162)
libgtk-x11-2.0.so.0 + 0xd445f (0xb72e245f)
nsAppShell::Run()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/widget/src/gtk2/nsAppShell.cpp, line 141]
nsAppStartup::Run()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/toolkit/components/startup/src/nsAppStartup.cpp, line 151]
XRE_main()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/toolkit/xre/nsAppRunner.cpp, line 2315]
main()  [/builds/tinderbox/Fx-Mozilla1.8/Linux_2.4.21-27.0.4.ELsmp_Depend/mozilla/browser/app/nsBrowserApp.cpp, line 62]
libc.so.6 + 0x15748 (0xb6bb4748)
WFM XP + FF 1.5 and Deer Park Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20051216 Firefox/1.6a1

for me only FAILS in w2k FF1.5 (didn't test DP).  

but it fails (comment 1) for you in XP?

gotta be a dup - over to printing component
Component: General → Print Preview
Keywords: hang
Product: Firefox → Core
Whiteboard: dupeme
Version: 1.5 Branch → 1.8 Branch
Still fails with:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20051216 Firefox/1.6a1

OS in above test is XP SP2.

Select print preview, then select "Landscape", and the browser will hang.
Only reason for not failing in portrait mode is that the table size 
does not exceed the page size.
I'd be happy to create a talkback report for XP if someone tells me how to create one from a hangup condition.

Guenter
http://md5deep.sourceforge.net/

There is a table on that site but i'm not sure if it is the same error. border is set to "1" in this case (see comment 3)
Same bug on sourceforge.net, as far as I can say. At least appearance is the same. Looks like my comment #3 is wrong, and the border is not the root cause.
Attached file second test case
Another test case, with border=1. If it does not hang immediately in print preview, make sure that the table size is larger than one page. 
Changing output to Landscape usually does the trick.
It took me some time to reproduce it. I had to choose a size of 200%.

(Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.8) Gecko/20051111 Firefox/1.5)

Important observation I made:
It's not a hang-up! The task manager shows 99% CPU use and the memory use was incresed steadily (~120 KB/s).
> 
> Important observation I made:
> It's not a hang-up! The task manager shows 99% CPU use and the memory use was
> incresed steadily (~120 KB/s).
> 
Guess that depends on the definition of "hang". It does no longer respond to keyboard input, it has to be killed using the task manager, and it does not recover (at least not within the 30+ minutes I let it run before I killed it). And, yes, it keeps consuming more and more memory.
The table gets reflown over and over again. Its a loop.

Martijn, is this recent? At least the second testcase does the job in horizontal layout.
Status: UNCONFIRMED → NEW
Component: Print Preview → Layout: Tables
Ever confirmed: true
Version: 1.8 Branch → Trunk
>Likely candidate, bug 272830.

...,3,2,1, meins
Assignee: nobody → bernd_mozilla
QA Contact: general → layout.tables
Just for the statistics, time between checkin and filing the bug 11 months and the checkin is also on the 1.8 branch aka ff1.5
Depends on: 344883

*** This bug has been marked as a duplicate of 344883 ***
Status: NEW → RESOLVED
Closed: 18 years ago
Resolution: --- → DUPLICATE
Although this bug has been marked as RESOLVED, as well as 344883, the problem persists even in FF 2.0.0.6.

To duplicate results:

Visit Guenter's "test case" URL above (see attachments). You may need to toggle between landscape and portrait in Print Preview mode.

-- OR -- 

Try to do a Print Preview while browsing at http://md5deep.sourceforge.net/
I can see the hang in in FF 2.0.0.6 with http://md5deep.sourceforge.net/
Can you also see the hang in current trunk build?
http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/
With the current trunk build - the sourceforge page does not hang in print preview, but it does still hang while printing. 

There are problems rendering tables that span page-breaks: in print preview, some cells go missing; while it's the tables that seem to hang printing.

The test case URL does not hang in print preview (though the landscape rendering needs work, where the table spans 2 pages). But it also still hangs while printing.

Hope this helps
Whiteboard: dupeme
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: