Bug 578782

Summary: Some gnome games crash when started
Product: [Fedora] Fedora Reporter: Joachim Backes <joachim.backes>
Component: mesaAssignee: Adam Jackson <ajax>
Status: CLOSED DUPLICATE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: low    
Version: 13CC: airlied, ajax, bskeggs, mclasen, otaylor, rstrode, sanjay.ankur
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-04-09 14:01:12 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Joachim Backes 2010-04-01 11:26:28 UTC
Description of problem:
When I start the following gnome-games, they crash immediately:

gnibbles
quadrapassel 

Version-Release number of selected component (if applicable):
gnome-games-2.29.92-1.fc13.i686

How reproducible:
Always

Steps to Reproduce:
1.Start the game
2.
3.
  
Actual results:
gnibbles:
=======================
gnibbles
failed to create drawable
failed to create drawable

(gnibbles:11060): ClutterGLX-CRITICAL **: Unable to make the stage window 0x2600046 the current GLX drawable

Gdk-ERROR **: The program 'gnibbles' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadDrawable (invalid Pixmap or Window parameter)'.
  (Details: serial 461 error_code 9 request_code 14 minor_code 0)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)
aborting...
Trace/breakpoint trap

quadrapassel:
===============

quadrapassel
failed to create drawable
failed to create drawable

(quadrapassel:11062): ClutterGLX-CRITICAL **: Unable to make the stage window 0x4600007 the current GLX drawable
failed to create drawable

(quadrapassel:11062): ClutterGLX-CRITICAL **: Unable to make the stage window 0x460000a the current GLX drawable

Gdk-ERROR **: The program 'quadrapassel' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadDrawable (invalid Pixmap or Window parameter)'.
  (Details: serial 55 error_code 9 request_code 14 minor_code 0)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)
aborting...
Trace/breakpoint trap


Expected results:


Additional info: All other games are running!

Comment 1 Joachim Backes 2010-04-01 11:31:08 UTC
Please remove quadrapassel bug; I filed it already in 578777 (network error when submitting 578777, so I repeated it in the submission for 578782)

Comment 2 Joachim Backes 2010-04-02 08:27:21 UTC
After having updated to gnome-games-extra-2.30.0-1.fc13.i686, gnibbles still crashes:

gnibbles
failed to create drawable

(gnibbles:2376): Clutter-WARNING **: Unable to create a new stage: the glx backend does not support multiple stages.

(gnibbles:2376): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(gnibbles:2376): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_stage_set_color: assertion `CLUTTER_IS_STAGE (stage)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_actor_set_size: assertion `CLUTTER_IS_ACTOR (self)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_stage_set_user_resizable: assertion `CLUTTER_IS_STAGE (stage)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_container_add_actor: assertion `CLUTTER_IS_CONTAINER (container)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_actor_set_size: assertion `CLUTTER_IS_ACTOR (self)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_stage_ensure_viewport: assertion `CLUTTER_IS_STAGE (stage)' failed

(gnibbles:2376): ClutterX11-CRITICAL **: clutter_x11_set_stage_foreign: assertion `CLUTTER_IS_STAGE (stage)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_actor_realize: assertion `CLUTTER_IS_ACTOR (self)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_actor_show: assertion `CLUTTER_IS_ACTOR (self)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_actor_set_size: assertion `CLUTTER_IS_ACTOR (self)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_container_add_actor: assertion `CLUTTER_IS_CONTAINER (container)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_actor_map: assertion `CLUTTER_IS_ACTOR (self)' failed

(gnibbles:2376): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(gnibbles:2376): GLib-GObject-CRITICAL **: g_signal_emit_by_name: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_actor_set_size: assertion `CLUTTER_IS_ACTOR (self)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_container_add_actor: assertion `CLUTTER_IS_CONTAINER (container)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_actor_set_size: assertion `CLUTTER_IS_ACTOR (self)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_stage_ensure_viewport: assertion `CLUTTER_IS_STAGE (stage)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_redraw: assertion `CLUTTER_IS_STAGE (stage)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_stage_show_cursor: assertion `CLUTTER_IS_STAGE (stage)' failed

(gnibbles:2376): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(gnibbles:2376): GLib-GObject-CRITICAL **: g_signal_emit_by_name: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_stage_set_key_focus: assertion `CLUTTER_IS_STAGE (stage)' failed

(gnibbles:2376): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(gnibbles:2376): GLib-GObject-CRITICAL **: g_signal_emit_by_name: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed

(gnibbles:2376): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(gnibbles:2376): GLib-GObject-CRITICAL **: g_signal_emit_by_name: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_stage_set_key_focus: assertion `CLUTTER_IS_STAGE (stage)' failed

(gnibbles:2376): Clutter-CRITICAL **: clutter_actor_hide: assertion `CLUTTER_IS_ACTOR (self)' failed

Comment 3 Joachim Backes 2010-04-02 08:40:31 UTC
My video card:

02:00.0 VGA compatible controller: nVidia Corporation NV34 [GeForce FX 5200] (rev a1)

Driver: nouveau

Comment 4 Matthias Clasen 2010-04-06 16:29:36 UTC
Moving to nouveau, test-wise. The games themeselves work fine on e.g. Intel, so this is likely caused by limitations of the gl support in nouveau.

Comment 5 Matthias Clasen 2010-04-06 16:30:54 UTC
*** Bug 578777 has been marked as a duplicate of this bug. ***

Comment 6 Ben Skeggs 2010-04-06 22:53:14 UTC
Not exactly a nouveau "bug".  I can confirm that I see the problem also, and that if you actually install the nouveau 3d drivers (mesa-dri-drivers-experimental) things work fine.

Not sure where exactly this should be assigned, but I fail to see a good reason why clutter shouldn't just use GL software rendering in the absence of hardware accel.  Matthias?

Comment 7 Matthias Clasen 2010-04-06 23:56:28 UTC
Oh, I had no idea that things work fine with mesa-dri-drivers-experimental.
Thats great to know. As for software rendering in clutter, no idea, Owen can probably answer that better than I can.

There are a few questions here, I think:

- Are the mesa-dri-drivers-experimental good enough to install by default ?

- Can clutter detect the lack of suitable GL support in a better way, that we can perhaps handle by offering to install the drivers ?

Comment 8 Ben Skeggs 2010-04-07 00:17:04 UTC
I would be hesitant to install the nouveau 3d drivers by default at this stage, there's still a number of issues in them.  They do work fine for a lot of apps already however.

Every other GL app falls back to software rendering just fine, I have no idea why clutter fails to do so.

Comment 9 Matthias Clasen 2010-04-07 14:35:13 UTC
Owen points out that this might be the same as bug 575825

Comment 10 Matthias Clasen 2010-04-07 14:36:47 UTC
Owen also asks if setting LIBGL_ALWAYS_SOFTWARE=1 works around this problem.

Comment 11 Owen Taylor 2010-04-07 15:03:14 UTC
(In reply to comment #10)
> Owen also asks if setting LIBGL_ALWAYS_SOFTWARE=1 works around this problem.    

Actually, that wasn't my question, my question was whether you could trigger this crash on non-NVIDIA hardware with LIBGL_ALWAYS_SOFTWARE=1.

Comment 12 Matthias Clasen 2010-04-07 22:41:10 UTC
> Actually, that wasn't my question, my question was whether you could trigger
> this crash on non-NVIDIA hardware with LIBGL_ALWAYS_SOFTWARE=1.    

Oh, good point. That is indeed the case. Fails in the same way on my Intel hardware with LIBGL_ALWAYS_SOFTWARE=1.

Comment 13 Owen Taylor 2010-04-09 14:01:12 UTC
Seems almost certainly the same as bug 575825, so marking as a duplicate.

*** This bug has been marked as a duplicate of bug 575825 ***