Closed Bug 22012 Opened 26 years ago Closed 26 years ago

[CRASH][DOGFOOD] Printing pull-down menu crashes browser

Categories

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

x86
Linux
defect

Tracking

()

VERIFIED WORKSFORME

People

(Reporter: shrir, Assigned: slogan)

References

Details

(Keywords: crash, Whiteboard: [PDT+])

Attachments

(2 files)

I used today's commercial build on linux. To recreate the problem, please do the following steps 1.Copy the following text and save as a html file on your machine. --------------here--------------- <html> <form method=POST action="print"> <select name="pizza"> <option>Three Cheeses <option>Vegetarian <option>Pepperoni </select> </form> </html> --------here---------- 3. Open this saved file in mozilla. 4. Once the page loads, use the "File|Print" menu option to print. 5. Observe that browser crashes.
Attached file Attached stack trace
Assignee: dcone → syd
Can you look at this
Severity: major → critical
Attached file Attached test case
Priority: P3 → P1
Summary: [CRASH] Printing pull-down menu crashes browser → [CRASH][DOGFOOD] Printing pull-down menu crashes browser
Made dogfood since this is a crasher.
Whiteboard: [PDT+]
Putting on PDT+ radar.
Blocks: 21657
Assignee: syd → troy
Asked to reassign this. Perhaps troy is the best person.
Assignee: troy → dcone
Don, I get a different stack trace that shows converting from DDB to DIB? Why would we be doing that? Wouldn't we just use the DIB data the image library gave us NTDLL! 77f9d715() nsDebug::Assertion(const char * 0x10034af4, const char * 0x10034ae8, const char * 0x10034abc, int 773) line 186 + 13 bytes BuildDIB(tagBITMAPINFOHEADER * * 0x0221e1a4, int 7, int 4, int 32, char * 0x0221e168) line 773 + 35 bytes nsImageWin::ConvertDDBtoDIB(int 22, int 12) line 737 + 48 bytes nsImageWin::PrintDDB(void * 0x021a4758, int 348, int 52, int 22, int 12) line 699 nsImageWin::Draw(nsImageWin * const 0x0221e160, nsIRenderingContext & {...}, void * 0x021a4758, int 348, int 52, int 22, int 12) line 555 nsRenderingContextWin::DrawImage(nsRenderingContextWin * const 0x021a4618, nsIImage * 0x0221e160, const nsRect & {...}) line 2166 nsRenderingContextWin::DrawImage(nsRenderingContextWin * const 0x021a4618, nsIImage * 0x0221e160, int -14, int 98, int 105, int 60) line 2143 nsCSSRendering::PaintBackground(nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, nsIFrame * 0x02197d10, const nsRect & {...}, const nsRect & {...}, const nsStyleColor & {...}, const nsStyleSpacing & {...}, int 0, int 0) line 2185 nsButtonFrameRenderer::PaintBorderAndBackground(nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay, const nsRect & {...}) line 198 + 40 bytes nsButtonFrameRenderer::PaintButton(nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay, const nsRect & {...}) line 123 nsHTMLButtonControlFrame::Paint(nsHTMLButtonControlFrame * const 0x02197d10, nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay) line 449 nsContainerFrame::PaintChild(nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsIFrame * 0x02197d10, nsFramePaintLayer eFramePaintLayer_Underlay) line 221 nsBlockFrame::PaintChildren(nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay) line 5818 nsBlockFrame::Paint(nsBlockFrame * const 0x0219786c, nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay) line 5696 nsContainerFrame::PaintChild(nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsIFrame * 0x0219786c, nsFramePaintLayer eFramePaintLayer_Underlay) line 221 nsBlockFrame::PaintChildren(nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay) line 5818 nsBlockFrame::Paint(nsBlockFrame * const 0x021977f8, nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay) line 5696 nsContainerFrame::PaintChild(nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsIFrame * 0x021977f8, nsFramePaintLayer eFramePaintLayer_Underlay) line 221 nsBlockFrame::PaintChildren(nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay) line 5818 nsBlockFrame::Paint(nsBlockFrame * const 0x021977b0, nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay) line 5696 nsContainerFrame::PaintChild(nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsIFrame * 0x021977b0, nsFramePaintLayer eFramePaintLayer_Underlay) line 221 nsBlockFrame::PaintChildren(nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay) line 5818 nsBlockFrame::Paint(nsBlockFrame * const 0x02197728, nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay) line 5696 nsContainerFrame::PaintChild(nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsIFrame * 0x02197728, nsFramePaintLayer eFramePaintLayer_Underlay) line 221 nsContainerFrame::PaintChildren(nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay) line 160 nsContainerFrame::Paint(nsContainerFrame * const 0x021976f0, nsIPresContext * 0x0217d528, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Underlay) line 127 PresShell::Paint(PresShell * const 0x02183fec, nsIView * 0x02199a88, nsIRenderingContext & {...}, const nsRect & {...}) line 2626 + 34 bytes nsView::Paint(nsView * const 0x02199a88, nsIRenderingContext & {...}, const nsRect & {...}, unsigned int 0, int & 0) line 632 nsViewManager::Display(nsViewManager * const 0x02184190, nsIView * 0x02199a88) line 2413 nsSimplePageSequenceFrame::Print(nsSimplePageSequenceFrame * const 0x021976ec, nsIPresContext * 0x0217d528, const nsPrintOptions & {...}, nsIPrintStatusCallback * 0x00000000) line 437 DocumentViewerImpl::PrintContent(DocumentViewerImpl * const 0x013ef4f8, nsIWebShell * 0x01366688, nsIDeviceContext * 0x02120f50) line 653 DocumentViewerImpl::DocumentReadyForPrinting() line 915 + 32 bytes DocumentViewerImpl::Print(DocumentViewerImpl * const 0x013ef4f8) line 1167 nsBrowserWindow::DoPrint() line 2424
Status: NEW → ASSIGNED
The DIB is converted to a DDB (this was a MP thing), I had it so it could be optimized and the DIB was not deleted until we worked out the issues. MP put in code so all non-animated images are converted and the DDB is deleted. Inorder to print I needed to convert the DDB to a DIB. Other options would be to leave it a DIB, which according to my tests are not slower on the 10 or so machines I tested on. Size may be an issue depending on the graphics card I think (but not sure). We could use a DIB section which is a DDB and DIB all in one. The size is larger, but you get the advantage of using both. This is better than keeping both a DDB and DIB so we can print or have access to bits for things like blending and animations. Very managable format. I personally would suggest that if size is not an issue we use a DIB or DIBSection. Speed issues from what I have experimented with show me that the DIB is a good choice. A DIBSection is good if you think speed could be an issue and you just want to make sure it is optimized for all graphics cards.
Target Milestone: M13
This works on my windows build... I thought this was a Linux problem? Does this break on your Windows build Troy? I printed on both printers here and it prints just fine for Windows.
I see a crash on MAC commercial build for today(2000011314). Windows build prints this fine without a crash.
Crashed using today's Linux commercial build # 2000011313
Assignee: dcone → syd
Status: ASSIGNED → NEW
this is fixed on the Mac, I will have a checkin for this Monday. Syd, can you see whats up on Linux with this crash. The Mac was using a native window.. when it printed.. and of course there are not native windows for printing. Windows works fine.
Target Milestone: M13 → M14
*** Bug 24726 has been marked as a duplicate of this bug. ***
Adding "crash" keyword to all known open crasher bugs.
Keywords: crash
Works fine for me.
Status: NEW → RESOLVED
Closed: 26 years ago
Resolution: --- → WORKSFORME
verified (2000071208)
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: