Closed Bug 733323 Opened 12 years ago Closed 12 years ago

Crash in nsAppShell::ProcessNextNativeEvent with abort message: "X_CopyArea: BadDrawable (invalid Pixmap or Window parameter)"

Categories

(Core Graveyard :: Plug-ins, defect)

13 Branch
x86_64
Linux
defect
Not set
critical

Tracking

(firefox15 affected, firefox16+ affected, firefox17+ verified)

VERIFIED FIXED
mozilla17
Tracking Status
firefox15 --- affected
firefox16 + affected
firefox17 + verified

People

(Reporter: scoobidiver, Assigned: mattwoodrow)

References

Details

(Keywords: crash, regression, topcrash)

Crash Data

Attachments

(3 files)

Signature 	TouchBadMemory More Reports Search
UUID	3dfe7622-7a21-4b13-8112-5be412120226
Date Processed	2012-02-26 05:05:05
Uptime	82
Last Crash	1.6 minutes before submission
Install Age	2.5 minutes since version was first installed.
Install Time	2012-02-26 05:02:31
Product	Firefox
Version	13.0a1
Build ID	20120225031723
Release Channel	nightly
OS	Linux
OS Version	0.0.0 Linux 2.6.32-1-mepis64-smp #1 SMP PREEMPT Wed Oct 20 18:35:31 EDT 2010 x86_64
Build Architecture	amd64
Build Architecture Info	family 16 model 6 stepping 3
Crash Reason	SIGSEGV
Crash Address	0x0
App Notes 	
OpenGL: NVIDIA Corporation -- GeForce 6150SE nForce 430/integrated/SSE2 -- 2.1.2 NVIDIA 295.20 -- texture_from_pixmap
X_CopyArea: BadDrawable (invalid Pixmap or Window parameter); 4 requests agoxpcom_runtime_abort(###!!! ABORT: X_CopyArea: BadDrawable (invalid Pixmap or Window parameter); 4 requests ago: file /builds/slave/m-cen-lnx64-ntly/build/toolkit/xre/nsX11ErrorHandler.cpp, line 190)
EMCheckCompatibility	True

Frame 	Module 	Signature 	Source
0 	libmozalloc.so 	TouchBadMemory 	memory/mozalloc/mozalloc_abort.cpp:68
1 	libmozalloc.so 	mozalloc_abort 	memory/mozalloc/mozalloc_abort.cpp:89
2 	libxul.so 	NS_DebugBreak_P 	xpcom/base/nsDebugImpl.cpp:388
3 	libxul.so 	X11Error 	toolkit/xre/nsX11ErrorHandler.cpp:190
4 	libX11.so.6.2.0 	libX11.so.6.2.0@0x4735b 	
5 	libXext.so.6.4.0 	libXext.so.6.4.0@0x210fff 	
6 	ld-2.7.so 	ld-2.7.so@0xd1f9 	
7 	libX11.so.6.2.0 	libX11.so.6.2.0@0x8f17 	
8 	ld-2.7.so 	ld-2.7.so@0x12f21 	
9 	libX11.so.6.2.0 	libX11.so.6.2.0@0x4ed4e 	
10 	libpthread-2.7.so 	libpthread-2.7.so@0x9fdf 	
11 	libX11.so.6.2.0 	libX11.so.6.2.0@0x4f615 	
12 	libX11.so.6.2.0 	libX11.so.6.2.0@0x37d6c 	
13 	libgdk-x11-2.0.so.0.2000.1 	libgdk-x11-2.0.so.0.2000.1@0x5abf5 	
14 	libgdk-x11-2.0.so.0.2000.1 	libgdk-x11-2.0.so.0.2000.1@0x5ab8f 	
15 	libglib-2.0.so.0.2400.2 	libglib-2.0.so.0.2400.2@0x42617 	
16 	libpthread-2.7.so 	libpthread-2.7.so@0x9fdf 	
17 	libglib-2.0.so.0.2400.2 	libglib-2.0.so.0.2400.2@0x2dc5ff 	
18 	libglib-2.0.so.0.2400.2 	libglib-2.0.so.0.2400.2@0x42a24 	
19 	libpthread-2.7.so 	libpthread-2.7.so@0x848f 	
20 	libglib-2.0.so.0.2400.2 	libglib-2.0.so.0.2400.2@0x68178 	
21 	libpthread-2.7.so 	libpthread-2.7.so@0x848f 	
22 	libglib-2.0.so.0.2400.2 	libglib-2.0.so.0.2400.2@0x2dc5ff 	
23 	libglib-2.0.so.0.2400.2 	libglib-2.0.so.0.2400.2@0x42fea 	
24 	libxul.so 	nsAppShell::ProcessNextNativeEvent 	widget/gtk2/nsAppShell.cpp:162
25 	libxul.so 	nsBaseAppShell::OnProcessNextEvent 	widget/xpwidgets/nsBaseAppShell.cpp:171
26 	libxul.so 	nsThread::ProcessNextEvent 	xpcom/threads/nsThread.cpp:619
27 	libxul.so 	NS_ProcessNextEvent_P 	obj-firefox/xpcom/build/nsThreadUtils.cpp:245
28 	libxul.so 	mozilla::ipc::MessagePump::Run 	ipc/glue/MessagePump.cpp:110
29 	libxul.so 	MessageLoop::Run 	ipc/chromium/src/base/message_loop.cc:208
30 	libxul.so 	nsBaseAppShell::Run 	widget/xpwidgets/nsBaseAppShell.cpp:189
31 	libxul.so 	nsAppStartup::Run 	toolkit/components/startup/nsAppStartup.cpp:295
32 	libxul.so 	XRE_main 	toolkit/xre/nsAppRunner.cpp:3564
33 	firefox 	main 	browser/app/nsBrowserApp.cpp:190
34 	libc-2.7.so 	libc-2.7.so@0x1e1a5 	
35 	firefox 	firefox@0x1c9f 	
36 	firefox 	firefox@0x1c9f 	

More reports at:
https://crash-stats.mozilla.com/report/list?signature=TouchBadMemory
Crash Signature: [@ TouchBadMemory] [@ mozalloc_abort | NS_DebugBreak_P | X11Error] → [@ mozalloc_abort | NS_DebugBreak_P | X11Error] [@ TouchBadMemory | mozalloc_abort | NS_DebugBreak_P | X11Error]
Crash Signature: [@ mozalloc_abort | NS_DebugBreak_P | X11Error] [@ TouchBadMemory | mozalloc_abort | NS_DebugBreak_P | X11Error] → [@ mozalloc_abort | NS_DebugBreak_P | X11Error] [@ TouchBadMemory] [@ TouchBadMemory | mozalloc_abort | NS_DebugBreak_P | X11Error]
Crash Signature: [@ mozalloc_abort | NS_DebugBreak_P | X11Error] [@ TouchBadMemory] [@ TouchBadMemory | mozalloc_abort | NS_DebugBreak_P | X11Error] → [@ mozalloc_abort | NS_DebugBreak_P | X11Error] [@ TouchBadMemory] [@ TouchBadMemory | mozalloc_abort | NS_DebugBreak_P | X11Error ]
I get this message just trying to access mozilla sites like https://quality.mozilla.org/teams/
Bill, are you able to provide a stack with system library symbols, please?
It likely needs to be from a run with MOZ_X_SYNC=1 in the environment to be helpful.
I run into a similar problem when I open this link: "http://www.boadica.com.br/pesquisa/multi_placavideo/precos?ClasseProdutoX=2&CodCategoriaX=7&XG=3&XJ=2&modelo=EVGA|04G-P4-2690-KR&regiao=&em_box=&preco_min=&preco_max="

then try to change the field "Modelo:" to anything. It crashes and dumps:

###!!! ABORT: X_CopyArea: BadDrawable (invalid Pixmap or Window parameter); 84 requests ago: file /build/src/mozilla-release/toolkit/xre/nsX11ErrorHandler.cpp, line 190

Segmentation Fault
Whiteboard: [need stack trace]
I'll leave gdb open overnight, let me know if you want any other values
from it.  (mozilla-release debug build on Linux x86-64)
Thanks, Mats.

Can you look at the XCopyArea call in _cairo_xlib_surface_composite, please, to see whether either the source or destination drawables or both match XID 0x1e00392?

Beyond that, I'd try to track the bad drawable xid up the stack to find where it might have been created.  The BadDrawable error may be because the Pixmap or Window has been destroyed.
Component: Widget: Gtk → Graphics: Layers
QA Contact: gtk → graphics-layers
Whiteboard: [need stack trace]
> mIsDestroyed = false,

aWidgetToPaint at least doesn't think it has been destroyed.
Attached file XCopyArea data
Yes, source is 0x1e00392.  Destination is 0x54017b2.
This action crashes Firefox basically every time on my laptop:
1. start Firefox
2. go to http://www.ai.rug.nl/robocupathome/ (page has embedded Youtube videos)
3. select "Mexico 2012" (see left side, new tab will open)
4. on new tab hover "Competitions" (see top), select "RoboCup@home"
5. if it hasn't crashed yet: click "Results" (left side)

I can not reproduce this with plugins.click_to_play=true though.
(Not sure if that pref is fully implemented in Firefox 13.0.1 at all.)
Christian, it sounds like your issue is plugin related, which would be a different cause of similar symptoms.
If you look in about:config and search for dom.ipc.plugins, is dom.ipc.plugins.enabled set to true?
Are there any non-default (bold) dom.ipc.plugins.something settings?
Hmm.  Maybe Mats' crash is plugin-related too, with the BasicShadowableImageLayer.
0x1e00392 looks like it is from a different X connection (likely different process) to 0x54017b2.  If the plugin process has deleted that drawable, then that would cause this error.  (We could also get this error if the X server hasn't processed the request to create the drawable, but MOZ_X_SYNC=1 should rule out that possibility.)
(In reply to Karl Tomlinson (:karlt) from comment #9)
> it sounds like your issue is plugin related, which would be a
> different cause of similar symptoms.

This is one of my crash reports, and it is how I found this bug:
bp-5dce8d32-8830-491d-bdfa-63dcd2120621

> If you look in about:config and search for dom.ipc.plugins, is
> dom.ipc.plugins.enabled set to true?

yes

> Are there any non-default (bold) dom.ipc.plugins.something settings?

no
Given bug 745488, there is a good chance this is an image layer bug.
Depends on: 745488
Version: 11 Branch → 13 Branch
Since http://hg.mozilla.org/mozilla-central/rev/1a345b043b47
container->SetCurrentImage(nsnull) is no longer called if
PluginInstanceParent::GetImageContainer() fails due to a NULL mFrontSurface.

Not clear exactly how a subsequent transaction would manage to still paint the
old image container after the NPP_Destroy is called on the plugin instance.
Perhaps that might be related to the container's oldSize now no longer being
invalidated in nsPluginInstanceOwner::InvalidateRect().
Blocks: 724886
Component: Graphics: Layers → Plug-ins
Keywords: regression
Bug 745488 happens after test_flush_on_paint.html which uses a windowless plugin.
Blocks: 745488, 733325
No longer depends on: 745488
Actually, nsNPAPIPluginInstance::InvalidateRect() does nothing when
RUNNING != mRunning and would have behaved the same even before 1a345b043b47.

mRunning == DESTROYING while NPP_Destroy is being called.

This means that the surface in the ImageContainer can get out of sync
with mFrontBuffer through a RecvShow from a Child::ShowPluginFrame even before
the child processes the NPP_Destroy.

The ImageContainer and its CairoImage with destroyed Pixmap stays alive well
after the plugin is destroyed until the next
FrameLayerBuilder::WillEndTransaction UpdateDisplayItemDataForFrame but I
don't know whether or not it can actually be used before then.
No longer blocks: 724886
Attached patch Prevent crashSplinter Review
Patches from bug 539359 make this reproducible on linux 32 tp4.

The attached patch fixes the crash at least, not sure if it's exactly what we want though.

Maybe always updating the ImageContainer (if a cached one exists) when we receive a new surface would be preferable.
Attachment #646795 - Flags: review?(karlt)
https://hg.mozilla.org/mozilla-central/rev/5d8b73612d33
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla17
No longer blocks: 733325
It accounts for 27% of Linux crashes in case 16.0.2 is planned.
Matt - how risky is this patch? I'm very hesitant to take a patch here if there is any chance of regression.
Assignee: nobody → matt.woodrow
It's very low risk, just makes sure we let go of the plugin surface immediately.
Marking this bug verified based on crash-stats. I'm not seeing any instances of this crash signature for Firefox 17 on Socorro in the last month.
Status: RESOLVED → VERIFIED
(In reply to Anthony Hughes, Mozilla QA (:ashughes) from comment #26)
> I'm not seeing any instances of this crash signature for Firefox 17 on Socorro
> in the last month.
I guess you meant crash signature AND abort message: https://crash-stats.mozilla.com/report/list?product=Firefox&version=Firefox%3A17.0b1&signature=mozalloc_abort%20|%20NS_DebugBreak_P%20|%20X11Error
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: