Closed Bug 54004 Opened 24 years ago Closed 24 years ago

Crashes while printing page [@nsWindow::Create]

Categories

(Core :: Printing: Output, defect, P3)

x86
Windows NT
defect

Tracking

()

VERIFIED FIXED

People

(Reporter: rods, Assigned: dcone)

References

()

Details

(Keywords: crash, topcrash, Whiteboard: [rtm-])

Crash Data

Attachments

(1 file)

If I load the URL above and then print the page as soon as possible it crashes 
(I add stack trace soon). If I wait for 30 seconds to a minute, then it prints 
fine.
This does not crash in printing.. this crashes in the notifications while 
loading all the URL's.  I think this is a Necko problem...
This is the Stack trace I got... 




NTDLL! 77f7629c()
nsWindow::Create(nsWindow * const 0x032074a4, nsIWidget * 0x00000000, const 
nsRect & {...}, nsEventStatus (nsGUIEvent *)* 0x024b39f4 HandleEvent(nsGUIEvent 
*), nsIDeviceContext * 0x03230f60, nsIAppShell * 0x00000000, nsIToolkit * 
0x00000000, nsWidgetInitData * 0x00000000) line 1081
nsView::CreateWidget(nsView * const 0x032075e0, const nsID & {...}, 
nsWidgetInitData * 0x00000000, void * 0x00000000, int 1) line 965
DocumentViewerImpl::MakeWindow(nsIWidget * 0x035b6a34, const nsRect & {...}) 
line 1173 + 47 bytes
DocumentViewerImpl::Init(DocumentViewerImpl * const 0x031d6900, nsIWidget * 
0x035b6a34, nsIDeviceContext * 0x03230f60, const nsRect & {...}) line 537 + 16 
bytes
nsDocShell::SetupNewViewer(nsDocShell * const 0x035b5730, nsIContentViewer * 
0x031d6900) line 2775 + 66 bytes
nsWebShell::SetupNewViewer(nsWebShell * const 0x035b5730, nsIContentViewer * 
0x031d6900) line 350 + 13 bytes
nsDocShell::Embed(nsDocShell * const 0x035b5750, nsIContentViewer * 0x031d6900, 
const char * 0x01cdf624, nsISupports * 0x00000000) line 2409 + 23 bytes
nsWebShell::Embed(nsWebShell * const 0x035b5750, nsIContentViewer * 0x031d6900, 
const char * 0x01cdf624, nsISupports * 0x00000000) line 383
nsDocShell::CreateContentViewer(nsDocShell * const 0x035b5730, const char * 
0x0012f8ec, nsIChannel * 0x035b4340, nsIStreamListener * * 0x0012f940) line 2588 
+ 32 bytes
nsDSURIContentListener::DoContent(nsDSURIContentListener * const 0x035b5370, 
const char * 0x0012f8ec, int 0, const char * 0x100a56c8 gCommonEmptyBuffer, 
nsIChannel * 0x035b4340, nsIStreamListener * * 0x0012f940, int * 0x0012f8d0) 
line 106 + 33 bytes
nsDocumentOpenInfo::DispatchContent(nsIChannel * 0x035b4340, nsISupports * 
0x00000000) line 359 + 109 bytes
nsDocumentOpenInfo::OnStartRequest(nsDocumentOpenInfo * const 0x035b70e0, 
nsIChannel * 0x035b4340, nsISupports * 0x00000000) line 233 + 16 bytes
nsHTTPFinalListener::OnStartRequest(nsHTTPFinalListener * const 0x035b7080, 
nsIChannel * 0x035b4340, nsISupports * 0x00000000) line 1122
InterceptStreamListener::OnStartRequest(InterceptStreamListener * const 
0x031d5470, nsIChannel * 0x035b4340, nsISupports * 0x00000000) line 1178
nsHTTPServerListener::FinishedResponseHeaders() line 1047 + 48 bytes
nsHTTPServerListener::OnDataAvailable(nsHTTPServerListener * const 0x035c67d0, 
nsIChannel * 0x03578c24, nsISupports * 0x035b4340, nsIInputStream * 0x035c6710, 
unsigned int 0, unsigned int 379) line 427 + 8 bytes
nsOnDataAvailableEvent::HandleEvent(nsOnDataAvailableEvent * const 0x035c7ad0) 
line 400 + 47 bytes
nsStreamListenerEvent::HandlePLEvent(PLEvent * 0x035c7a80) line 97 + 12 bytes
PL_HandleEvent(PLEvent * 0x035c7a80) line 575 + 10 bytes
PL_ProcessPendingEvents(PLEventQueue * 0x00ac71b0) line 508 + 9 bytes
_md_EventReceiverProc(HWND__ * 0x0b9f01d2, unsigned int 49340, unsigned int 0, 
long 11301296) line 1044 + 9 bytes
USER32! 77e71820()
00
Do you know who would get this bug Rick... I watched this bug.. and it registers 
a listener in the DocumentViewerImpl::Print.. then before it gets back into 
printing.. it crashes..
Assignee: dcone → rpotts
*spam*

adding crash keyword...
Keywords: crash
I get a crash when printing from Win32 in 2000100808 under Windows95 OSR1.
Does not leave stack trace - windows crashes.
Crash happens after pressing print button in print dialog.
Happens multiple times from various URLs
2000100808 win32 on win95OSR1 - see my last comment: confirm crashes regardless 
of page being printed. - including mozilla.org homepage. crash after pressing 
print button in print dialog. can ctrl-tab for a few seconds then total system 
lock apart from mouse.
I got the following stack trace
when running the chofmann's browser buster and pressing print while the page is
not loaded completely
KERNEL32! bff768a0()
nsWindow::Create(nsWindow * const 0x038016c4, nsIWidget * 0x00000000, const
nsRect & {...}, nsEventStatus (nsGUIEvent *)* 0x02813a04 HandleEvent(nsGUIEvent
*), nsIDeviceContext * 0x011674d0, nsIAppShell * 0x00000000, nsIToolkit *
0x00000000, nsWidgetInitData * 0x00000000) line 1149
nsView::CreateWidget(nsView * const 0x03806110, const nsID & {...},
nsWidgetInitData * 0x00000000, void * 0x00000000, int 1) line 965
DocumentViewerImpl::MakeWindow(nsIWidget * 0x0117b5b4, const nsRect & {...})
line 1243 + 47 bytes
DocumentViewerImpl::Init(DocumentViewerImpl * const 0x0118b8d0, nsIWidget *
0x0117b5b4, nsIDeviceContext * 0x011674d0, const nsRect & {...}) line 542 + 16 bytes
nsDocShell::SetupNewViewer(nsDocShell * const 0x0117bb80, nsIContentViewer *
0x0118b8d0) line 2865 + 66 bytes
nsWebShell::SetupNewViewer(nsWebShell * const 0x0117bb80, nsIContentViewer *
0x0118b8d0) line 350 + 13 bytes
nsDocShell::Embed(nsDocShell * const 0x0117bba0, nsIContentViewer * 0x0118b8d0,
const char * 0x01db227c, nsISupports * 0x00000000) line 2497 + 23 bytes
nsWebShell::Embed(nsWebShell * const 0x0117bba0, nsIContentViewer * 0x0118b8d0,
const char * 0x01db227c, nsISupports * 0x00000000) line 383
nsDocShell::CreateContentViewer(nsDocShell * const 0x0117bb80, const char *
0x007acd2c, nsIChannel * 0x0117e4d0, nsIStreamListener * * 0x007acd80) line 2678
+ 32 bytes
nsDSURIContentListener::DoContent(nsDSURIContentListener * const 0x0117b880,
const char * 0x007acd2c, int 0, const char * 0x100a66c8 gCommonEmptyBuffer,
nsIChannel * 0x0117e4d0, nsIStreamListener * * 0x007acd80, int * 0x007acd10)
line 103 + 33 bytes
nsDocumentOpenInfo::DispatchContent(nsIChannel * 0x0117e4d0, nsISupports *
0x00000000) line 359 + 109 bytes
nsDocumentOpenInfo::OnStartRequest(nsDocumentOpenInfo * const 0x0117e050,
nsIChannel * 0x0117e4d0, nsISupports * 0x00000000) line 233 + 16 bytes
nsHTTPFinalListener::OnStartRequest(nsHTTPFinalListener * const 0x0117cfc0,
nsIChannel * 0x0117e4d0, nsISupports * 0x00000000) line 1122
nsHTTPCacheListener::OnStartRequest(nsHTTPCacheListener * const 0x0117c3b0,
nsIChannel * 0x0117c280, nsISupports * 0x00000000) line 150
nsDiskCacheRecordChannel::OnStartRequest(nsDiskCacheRecordChannel * const
0x0117c284, nsIChannel * 0x011799d0, nsISupports * 0x00000000) line 704
nsOnStartRequestEvent::HandleEvent(nsOnStartRequestEvent * const 0x01179670)
line 210 + 26 bytes
nsStreamListenerEvent::HandlePLEvent(PLEvent * 0x01179620) line 97 + 12 bytes
PL_HandleEvent(PLEvent * 0x01179620) line 576 + 10 bytes
PL_ProcessPendingEvents(PLEventQueue * 0x00b8b330) line 509 + 9 bytes
_md_EventReceiverProc(HWND__ * 0x00000a34, unsigned int 55666, unsigned int 0,
long 12104496) line 1054 + 9 bytes
KERNEL32! bff7363b()
KERNEL32! bff94407()
Summary: Crashes while printing page → Crashes while printing page [@nsWindow::Create]
My last attached stack trace has only two more lines than a topcrash
unidentified yet in the ns6analysis.html file. (DocumentViewerImpl::MakeWindow).
Adding keyword topcrash and namachi@netscape.com to check whether it is really a
topcrash.
Keywords: topcrash
resource:///res/samples/test9.html
 is another great page to print out and to crash. I think this should be fixed
before rtm, so I nominate this bug for rtm.
Keywords: rtm
Rick,
I saw docone's question about who you thought should get this bug.. but didn't
hear back.  Any comments?  Do you think this is yours... but are you too overloaded?
Thanks,
Jim
I get a crash about 80% of the time on Win98, printing web pages and email messages.
If I create a printer on WinNT that prints to a PostScript file, the attached 
testcase (unzip it) will crash everytime in nsWindow::Create

I am not sure if this is exactly the same bug or not.
I haven't been able to reproduce the crash yet, but I can get into an annoying 
infinite loop of assertions by hitting print button and OK during loading.

BuildDIB complains that it is passed a 32 bit bitmap. It complains once for 
every view while painting the frame.

NTDLL! 77f7629c()
nsDebug::Assertion(const char * 0x013a29b0, const char * 0x013a29a4, const char 
* 0x013a2970, int 1138) line 256 + 13 bytes
BuildDIB(tagBITMAPINFOHEADER * * 0x0407924c, int 132, int 66, int 32, char * 
0x040791fc) line 1138 + 35 bytes
nsImageWin::ConvertDDBtoDIB(int 660, int 330) line 1103 + 48 bytes
nsImageWin::PrintDDB(void * 0x03a27a30, int 40, int 40, int 660, int 330, 
unsigned int 13369376) line 1066
nsImageWin::Draw(nsImageWin * const 0x040791f0, nsIRenderingContext & {...}, 
void * 0x03a27a30, int 40, int 40, int 660, int 330) line 706
nsRenderingContextWin::DrawImage(nsRenderingContextWin * const 0x03a24590, 
nsIImage * 0x040791f0, const nsRect & {...}) line 2836
nsImageFrame::Paint(nsImageFrame * const 0x012cfa44, nsIPresContext * 
0x05495110, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 648
nsContainerFrame::PaintChild(nsIPresContext * 0x05495110, nsIRenderingContext & 
{...}, const nsRect & {...}, nsIFrame * 0x012cfa44, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 211
nsContainerFrame::PaintChildren(nsIPresContext * 0x05495110, nsIRenderingContext 
& {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay) line 
155
nsHTMLContainerFrame::Paint(nsHTMLContainerFrame * const 0x012cfa0c, 
nsIPresContext * 0x05495110, nsIRenderingContext & {...}, const nsRect & {...}, 
nsFramePaintLayer eFramePaintLayer_Overlay) line 108
nsContainerFrame::PaintChild(nsIPresContext * 0x05495110, nsIRenderingContext & 
{...}, const nsRect & {...}, nsIFrame * 0x012cfa0c, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 211
nsBlockFrame::PaintChildren(nsIPresContext * 0x05495110, nsIRenderingContext & 
{...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay) line 
6403
nsBlockFrame::Paint(nsBlockFrame * const 0x012cf9c0, nsIPresContext * 
0x05495110, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 6281
nsContainerFrame::PaintChild(nsIPresContext * 0x05495110, nsIRenderingContext & 
{...}, const nsRect & {...}, nsIFrame * 0x012cf9c0, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 211
nsContainerFrame::PaintChildren(nsIPresContext * 0x05495110, nsIRenderingContext 
& {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay) line 
155
nsTableCellFrame::Paint(nsTableCellFrame * const 0x012cf960, nsIPresContext * 
0x05495110, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 366
nsTableRowFrame::PaintChildren(nsIPresContext * 0x05495110, nsIRenderingContext 
& {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay) line 
599
nsTableRowFrame::Paint(nsTableRowFrame * const 0x012cf910, nsIPresContext * 
0x05495110, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 552
nsTableRowGroupFrame::PaintChildren(nsIPresContext * 0x05495110, 
nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 273
nsTableRowGroupFrame::Paint(nsTableRowGroupFrame * const 0x012cf8cc, 
nsIPresContext * 0x05495110, nsIRenderingContext & {...}, const nsRect & {...}, 
nsFramePaintLayer eFramePaintLayer_Overlay) line 227
nsContainerFrame::PaintChild(nsIPresContext * 0x05495110, nsIRenderingContext & 
{...}, const nsRect & {...}, nsIFrame * 0x012cf8cc, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 211
nsContainerFrame::PaintChildren(nsIPresContext * 0x05495110, nsIRenderingContext 
& {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay) line 
155
nsTableFrame::Paint(nsTableFrame * const 0x012cf864, nsIPresContext * 
0x05495110, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 1370
nsContainerFrame::PaintChild(nsIPresContext * 0x05495110, nsIRenderingContext & 
{...}, const nsRect & {...}, nsIFrame * 0x012cf864, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 211
nsTableOuterFrame::Paint(nsTableOuterFrame * const 0x012cf810, nsIPresContext * 
0x05495110, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 352
nsContainerFrame::PaintChild(nsIPresContext * 0x05495110, nsIRenderingContext & 
{...}, const nsRect & {...}, nsIFrame * 0x012cf810, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 211
nsBlockFrame::PaintChildren(nsIPresContext * 0x05495110, nsIRenderingContext & 
{...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay) line 
6403
nsBlockFrame::Paint(nsBlockFrame * const 0x012cf710, nsIPresContext * 
0x05495110, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 6281
nsContainerFrame::PaintChild(nsIPresContext * 0x05495110, nsIRenderingContext & 
{...}, const nsRect & {...}, nsIFrame * 0x012cf710, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 211
nsBlockFrame::PaintChildren(nsIPresContext * 0x05495110, nsIRenderingContext & 
{...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay) line 
6403
nsBlockFrame::Paint(nsBlockFrame * const 0x012cf688, nsIPresContext * 
0x05495110, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 6281
nsContainerFrame::PaintChild(nsIPresContext * 0x05495110, nsIRenderingContext & 
{...}, const nsRect & {...}, nsIFrame * 0x012cf688, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 211
nsContainerFrame::PaintChildren(nsIPresContext * 0x05495110, nsIRenderingContext 
& {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay) line 
155
nsContainerFrame::Paint(nsContainerFrame * const 0x012cf650, nsIPresContext * 
0x05495110, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 134
PresShell::Paint(PresShell * const 0x05496914, nsIView * 0x03a26a80, 
nsIRenderingContext & {...}, const nsRect & {...}) line 4662 + 34 bytes
nsView::Paint(nsView * const 0x03a26a80, nsIRenderingContext & {...}, const 
nsRect & {...}, unsigned int 128, int & 268600437) line 284
nsViewManager2::RenderDisplayListElement(DisplayListElement2 * 0x03a256c0, 
nsIRenderingContext & {...}) line 859
nsViewManager2::RenderViews(nsIView * 0x03a26a80, nsIRenderingContext & {...}, 
const nsRect & {...}, int & 0) line 806
nsViewManager2::Display(nsViewManager2 * const 0x05496820, nsIView * 0x03a26a80) 
line 2312
nsSimplePageSequenceFrame::Print(nsSimplePageSequenceFrame * const 0x012cf64c, 
nsIPresContext * 0x05495110, const nsPrintOptions & {...}, 
nsIPrintStatusCallback * 0x00000000) line 438
DocumentViewerImpl::PrintContent(DocumentViewerImpl * const 0x053239d8, 
nsIWebShell * 0x03a00abc, nsIDeviceContext * 0x053812e0) line 1051
DocumentViewerImpl::DocumentReadyForPrinting() line 1368 + 32 bytes
DocumentViewerImpl::Print(DocumentViewerImpl * const 0x053239d8, int 0, _iobuf * 
0x00000000, nsIPrintListener * 0x00000000) line 1693
nsBrowserInstance::Print(nsBrowserInstance * const 0x03a72520) line 1478 + 29 
bytes
XPTC_InvokeByIndex(nsISupports * 0x03a72520, unsigned int 33, unsigned int 0, 
nsXPTCVariant * 0x0012dc0c) line 139
nsXPCWrappedNativeClass::CallWrappedMethod(JSContext * 0x01847690, 
nsXPCWrappedNative * 0x03a73b40, const XPCNativeMemberDescriptor * 0x03a73f24, 
nsXPCWrappedNativeClass::CallMode CALL_METHOD, unsigned int 0, long * 
0x0124ff08, long * 0x0012ddc0) line 913 + 43 bytes
WrappedNative_CallMethod(JSContext * 0x01847690, JSObject * 0x00ff1438, unsigned 
int 0, long * 0x0124ff08, long * 0x0012ddc0) line 228 + 34 bytes
js_Invoke(JSContext * 0x01847690, unsigned int 0, unsigned int 0) line 790 + 23 
bytes
js_Interpret(JSContext * 0x01847690, long * 0x0012e8d0) line 2589 + 15 bytes
js_Invoke(JSContext * 0x01847690, unsigned int 1, unsigned int 2) line 807 + 13 
bytes
js_InternalInvoke(JSContext * 0x01847690, JSObject * 0x00ff0d78, long 19558480, 
unsigned int 0, unsigned int 1, long * 0x0012ea68, long * 0x0012e9f8) line 879 + 
20 bytes
JS_CallFunctionValue(JSContext * 0x01847690, JSObject * 0x00ff0d78, long 
19558480, unsigned int 1, long * 0x0012ea68, long * 0x0012e9f8) line 3193 + 31 
bytes
nsJSContext::CallEventHandler(nsJSContext * const 0x01847840, void * 0x00ff0d78, 
void * 0x012a7050, unsigned int 1, void * 0x0012ea68, int * 0x0012ea64, int 0) 
line 907 + 33 bytes
nsJSEventListener::HandleEvent(nsIDOMEvent * 0x052ac5f4) line 154 + 64 bytes
nsEventListenerManager::HandleEventSubType(nsListenerStruct * 0x03a8add0, 
nsIDOMEvent * 0x052ac5f4, nsIDOMEventTarget * 0x03a89618, unsigned int 8, 
unsigned int 7) line 788 + 19 bytes
nsEventListenerManager::HandleEvent(nsIPresContext * 0x026f3dc0, nsEvent * 
0x0012f2cc, nsIDOMEvent * * 0x0012f264, nsIDOMEventTarget * 0x03a89618, unsigned 
int 7, nsEventStatus * 0x0012f310) line 1670 + 39 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x03a89610, nsIPresContext * 
0x026f3dc0, nsEvent * 0x0012f2cc, nsIDOMEvent * * 0x0012f264, unsigned int 1, 
nsEventStatus * 0x0012f310) line 3305
PresShell::HandleDOMEventWithTarget(PresShell * const 0x026f3060, nsIContent * 
0x03a89610, nsEvent * 0x0012f2cc, nsEventStatus * 0x0012f310) line 4963 + 39 
bytes
nsButtonBoxFrame::MouseClicked(nsIPresContext * 0x026f3dc0, nsGUIEvent * 
0x0012f498) line 138
nsButtonBoxFrame::HandleEvent(nsButtonBoxFrame * const 0x011ce050, 
nsIPresContext * 0x026f3dc0, nsGUIEvent * 0x0012f498, nsEventStatus * 
0x0012f7b8) line 99
PresShell::HandleEventInternal(nsEvent * 0x0012f498, nsIView * 0x00000000, 
unsigned int 1, nsEventStatus * 0x0012f7b8) line 4931 + 38 bytes
PresShell::HandleEventWithTarget(PresShell * const 0x026f3060, nsEvent * 
0x0012f498, nsIFrame * 0x011ce050, nsIContent * 0x03a89610, unsigned int 1, 
nsEventStatus * 0x0012f7b8) line 4897 + 22 bytes
nsEventStateManager::CheckForAndDispatchClick(nsEventStateManager * const 
0x03825dc0, nsIPresContext * 0x026f3dc0, nsMouseEvent * 0x0012f8c8, 
nsEventStatus * 0x0012f7b8) line 1863 + 61 bytes
nsEventStateManager::PostHandleEvent(nsEventStateManager * const 0x03825dc8, 
nsIPresContext * 0x026f3dc0, nsEvent * 0x0012f8c8, nsIFrame * 0x011ce050, 
nsEventStatus * 0x0012f7b8, nsIView * 0x026f36f0) line 940 + 28 bytes
PresShell::HandleEventInternal(nsEvent * 0x0012f8c8, nsIView * 0x026f36f0, 
unsigned int 1, nsEventStatus * 0x0012f7b8) line 4936 + 43 bytes
PresShell::HandleEvent(PresShell * const 0x026f3064, nsIView * 0x026f36f0, 
nsGUIEvent * 0x0012f8c8, nsEventStatus * 0x0012f7b8, int 1, int & 1) line 4851 + 
25 bytes
nsView::HandleEvent(nsView * const 0x026f36f0, nsGUIEvent * 0x0012f8c8, unsigned 
int 28, nsEventStatus * 0x0012f7b8, int 1, int & 1) line 379
nsViewManager2::DispatchEvent(nsViewManager2 * const 0x026f38d0, nsGUIEvent * 
0x0012f8c8, nsEventStatus * 0x0012f7b8) line 1439
HandleEvent(nsGUIEvent * 0x0012f8c8) line 68
nsWindow::DispatchEvent(nsWindow * const 0x026f35b4, nsGUIEvent * 0x0012f8c8, 
nsEventStatus & nsEventStatus_eIgnore) line 682 + 10 bytes
nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012f8c8) line 703
nsWindow::DispatchMouseEvent(unsigned int 301, nsPoint * 0x00000000) line 3903 + 
21 bytes
ChildWindow::DispatchMouseEvent(unsigned int 301, nsPoint * 0x00000000) line 
4113
nsWindow::ProcessMessage(unsigned int 514, unsigned int 0, long 3146795, long * 
0x0012fc44) line 2973 + 24 bytes
nsWindow::WindowProc(HWND__ * 0x01b10a14, unsigned int 514, unsigned int 0, long 
3146795) line 958 + 27 bytes
USER32! 77e71820()
JS3250! ??_C@_08JKC@crtdll?4c?$AA@ + 7971 bytes
It seems like a few things are going on...

Don, I'm seeing an assert in nsWindow::StandardWindowCreate(...) because the 
call to ::CreateWindowEx(...) fails.

There is also some rather strange code in 
nsDocumentViewerImpl::PrintContent(...).  It looks in rev 1.75 of 
nsDocumentViewer.cpp rods added some code to fix bug #47478.  This code only 
works inside of viewer - not Mozilla :-(  The problem is that 
nsIDocShellTreeItem::GetParent(...) is called.  Unfortunately, this will return 
chrome parents...  So, for Mozilla it will *never* be null.  I believe that it 
should be calling nsIDocShellTreeItem::GetSameTypeParent(...).

However, it looks like the real cause behind the crash is that the PresShell 
created for printing is destroyed when PrintContent(...) returns.

However, it looks like the real cause behind the crash is that PrintContent() 
does not wait for "linked content" (ie. frames and images) to be loaded...
Unless I'm mistaken, PresShell::InitialReflow(...) is not synchronous (when 
frames and images are involved)!
So, what appears to happen is the following:
1. PrintContent(...) Creates a new PresShell for printing...
2. The document is set up inside of the PresShell - along with a new ViewManager 
and everything else it needs...
3. InitialReflow(...) is called on the PresShell - This will cause 
HTMLFrameInnerFrames to create new DocShells and *start* loading their content
4. The PresShell is told to print via its PageSequenceFrame...
5. The PresShell is destroyed (when leaving the scope of PrintContent()).  This 
causes the frame model to be destroyed along with the child DocShells that were 
created...  When the DocShell is destroyed, it "unhooks" itself from its 
nsDSURIContentListener...
6. At some point the data for the frame arrives at the URI loader.
7. The URILoader calls DoContent(...) on the nsDSURIContentListener, but its 
DocShell has already been destroyed - and we crash.
adding dcone and rods to cc list
Rick.. your correct in your description of why this crashes.. but you missed one 
thing... we call InitialRelow 2 times.. the first time we call it you added an 
observer that will tell us when all the URL's are loaded that make up the print 
job.. then and only then should the the PrintContent be called and the 
InitialReflow be called and Reflowed without the need to load any URL's.  This 
will insure that the PresShell is created, used and destroyed in the proper 
order.  What I think broke it the mechanism that observes the loading.  When I 
go to print a document with a large image.. the observer will never get 
started.. and that is a problem.. it always was started before..then the 
printing waited for the image to load before anything started.  Now it just 
falls thru and printing always starts when all the URL's are not loaded, 
printing will not support this incremental reflow.. I know tables will choke (or 
used to until karnaze checked for Null pointers there).  

On another issue.. Rod did change his code to what you suggested and this did 
not stop the crash.  Another way to do what Rod did would be to remove all that 
code and print all the WebShell no matter if it is a leaf or not.  This would 
print the FrameSet pages as well.. a few wasted pieces of paper until Frame Sets 
could print.
So don,
I looked at the code again and I don't understand what is going on...

As you said, in nsDocumentViewer::Print() we create the following components and 
then add ourselves as an ImageGroupObserver...
- DeviceContext (mPrintDC)
- PrintContext  (mPrintPC)
- StyleSet      (mPrintSS)
- PresShell     (mPrintPS)
- ViewManager   (mPrintVM)
- View          (mPrintView)

Then, once InitialReflow has finished (ie. the image observer is fired) 
PrintContent(...) is called.  However, the following components are created 
locally a *second* time:
- PrintContext (cx)
- StyleSet     (ss)
- PresShell    (ps)
- ViewManager  (vm)
- View         (view)

InitialRefow() is then called on the new PresShell (ps).  Unfortunately, this 
will cause any images to be fetched from the network a *second* time....

Since nsIPageSequenceFrame::Print() is called immediately after the call to 
ps->InitialReflow() it is unlikely that any images will have been loaded - so, 
they do not appear.

Why must we reflow twice? And create two sets of components?

In my local tree, I hacked PrintContent(...) to print mPrintPS and the images 
showed up fine...

What's going on?
-- rick
On another note...  Being an ImageGroup observer does not insure that the page 
has finished loading in framesets are involved.

Currently, in the frameset case the notification from the image group observer 
will come before the child frames have loaded.  The only way to know that the 
entire document has finished is to observer the nsIWebProgressListener 
notifications...
Unfortunately, since printing causes the document to be loaded via the 
PresShell, the WebProgress component knows nothing about the load, so no 
notifications are fired :-(

However, I don't think that we really *want* to re-create the DocShells 
associated with frames...

it seems to me that we want to force each DocShell (frame) to lay itself out, 
without recreating its children...  I don't know how this would be done :-)
-- rick
That is correct..the first time the:
- DeviceContext (mPrintDC)
- PrintContext  (mPrintPC)
- StyleSet      (mPrintSS)
- PresShell     (mPrintPS)
- ViewManager   (mPrintVM)
- View          (mPrintView)
get created and initialReflow is called is only for loading all the URLS 
(images) into the cache. If the image observer is fired, that is notification  
for printing to wait until we are notified that the images have been loaded.  If 
the image observer did not fire.. then the images are already in the cache and 
printing can proceed.  (the problem now is that the observer NEVER fires even 
when the images are not loaded into the cache)

If printing is notified to proceed, the printContent will construct new 
instances of the above for each invocation.. since this routine can get called 
for each Frame in a frameset.. basically we are laying out new documents for 
each frame in a frameset.  

As I recall.. you helped me with this implementation.. especially the observer 
part (I think you wrote most of it.. and even re-arranged the routines to be 
called at the correct times).  And I know Troy blessed this also.. as the only 
way we could print without any incremental reflows (which printing cannot 
handle).  This was all working great for about a year..until recently the 
observer never gets fired off.. and printing will do incremental reflows.. which 
broke tables (karnaze was not checking for null pointers.. now fixed) and I 
suspect a few other layout areas.  I know images are now broken because my test 
case (a huge image) never fires off this observer.. and the page will print out 
blank.  When all is working.. this image will print.
We can talk on the phone if I am confusing you.
hey don,
So it turns out that most of my image-printing woes were because I had disabled 
my image cache :-(

When the image cache is working correctly, I don;t have any problems printing 
pages without framesets...

Have you talked with rods about calling InitialReflow on frameset pages?

Should I give this bug back to you now?
*** Bug 53456 has been marked as a duplicate of this bug. ***
Is this really still a topcrash?  Isn't using the image cache the default?
Perhaps this could be rtm- then?
Whiteboard: [need minus]
The crash still occures with nice reproducibility on test9.html which is a page
with frames. I think the analysis related to the image cache was misleading and
the original problem including the dupe has not gone away. I think the bug
should be renamed : crash while printing pages with frames. Since the rtm- is
your decision I would like to warn you, that printing pages with frames is not
that seldom.
This crash used to be topcrash in talkback. Use the following URL to verify  
topcrashes for the past ten(10) days.

http://beckett.mcom.com/talkback/rankoutput.html
Marking the status whiteboard with "rtm need info" since the old value of "need
minus" was not searched for, and equivalent to no marking whatever.
IF there is a clearly safe null pointer check (or equivalent provable correction
not requiring a great deal of context), please pose that patch RSN with
approvals and review.  IF this is a complex bug (to avoid the crash) then we
will be sadly stuck with it for RTM.
Whiteboard: [need minus] → [rtm need info]
This bug is *not* related to the image cache.

It is caused by incorrectly calling InitialReflow(...) on frameset documents.

-- rick
rtm-, not stopping for this.
Whiteboard: [rtm need info] → [rtm-]
Hello, I am a user, not developer. I appreciate all the Mozilla voluntary effort
and glad to see your success. So please somebody fix this bug so we can use the
browser fully.  - - John
this is a ping to rpotts:
in

http://www.mozilla.org/status/2000-11-08.html

you wrote:

Bug #54004 - Printing documents with framesets causes random crashes. I tracked
down the cause of this problem and talked with dcone about it... If no progress
is made, I'll submit a patch...

Seems that no progress is made.... Win98 CVS 20001125
Another page with the priting crasher for verification purposes.  Real live URL
that people would probably print.

http://www.mcafee.com/anti-virus/viruses/prolin/default.asp



Is this bug well-assigned?  If it's not rpotts' bug, is it dcones?

/be
I can't tell whether it is the same bug, but I get a crash on printing this 
URL:

http://support.microsoft.com/support/kb/articles/q69/0/13.asp

Is it relevant that many of these problems are on .asp pages?
spam : changing qa to sujay (new qa contact for Printing)
QA Contact: shrir → sujay
Keywords: nsbeta1
Reassigning to dcone.
Don thinks he checked in a fix a few weeks that should fix this bug.
Assignee: rpotts → dcone
both pages print now.. this was fixed the loading problem I fixed a while ago.
Fixed
Status: NEW → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
verified in 2/26 build.
Status: RESOLVED → VERIFIED
Crash Signature: [@nsWindow::Create]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: