After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 660930 - Totem crashes on start (SEGFAULT)
Totem crashes on start (SEGFAULT)
Status: RESOLVED NOTGNOME
Product: cogl
Classification: Platform
Component: general
unspecified
Other Linux
: Normal critical
: ---
Assigned To: Cogl maintainer(s)
Cogl maintainer(s)
Depends on:
Blocks:
 
 
Reported: 2011-10-04 20:46 UTC by Matteo Drera
Modified: 2011-10-06 22:51 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Trace of Totem session. (4.46 KB, text/plain)
2011-10-04 20:46 UTC, Matteo Drera
Details

Description Matteo Drera 2011-10-04 20:46:31 UTC
Created attachment 198254 [details]
Trace of Totem session.

Totem crashes instantly after startup.

Clutter-GST/Cogl is probably the cause in conjunction with the Nouveau driver.


+++ Packages version(s):
- totem-3.2.0
- totem-plugin-3.2.0
- clutter-gst-1.4.2
- gtk3-3.2.0
- glib2-2.30.0


+++ Totem output:
(totem:16072): Clutter-CRITICAL **: Unable to initialize Clutter: Unable to find suitable fbconfig for the GLX context: Unable to find fbconfig with rgba visual
(totem:16072): Clutter-WARNING **: Unable to create a new stage: the glx backend does not support multiple stages.
(totem:16072): GLib-GObject-CRITICAL **: g_object_set_data: assertion `G_IS_OBJECT (object)' failed
(totem:16072): GLib-GObject-WARNING **: invalid (NULL) pointer instance
(totem:16072): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
(totem:16072): Clutter-CRITICAL **: clutter_stage_set_color: assertion `CLUTTER_IS_STAGE (stage)' failed
Segmentation fault.


+++ gdb trace: attached.
(All packages named above have been rebuilt with debuggin symbols)


+++ Hardware (as reported by lspci & glxinfo):
- 01:00.0 VGA compatible controller: nVidia Corporation NV17 [GeForce4 MX 420] (rev a3)
- OpenGL vendor string: Nouveau
- OpenGL renderer string: Mesa DRI nv17 x86/MMX/SSE2
- OpenGL version string: 1.2 Mesa 7.11
- direct rendering: Yes


+++ Steps to reproduce:
- Launch Totem on a certain hardware


+++ Proposed workaround:
"export CLUTTER_DISABLE_ARGB_VISUAL=1" before launch Totem.
This avoids SEGFAULT but video playback is still totally unusable.
Comment 1 Philip Withnall 2011-10-05 23:00:08 UTC
Relevant part of the backtrace:

Thread 1 (Thread 0xb65b0830 (LWP 16072))

  • #0 cogl_context_get_display_EXP
    from /usr/lib/libcogl.so.5
  • #1 get_n_fragment_texture_units
    at ./clutter-gst-video-sink.c line 395
  • #2 clutter_gst_build_renderers_list
    at ./clutter-gst-video-sink.c line 829
  • #3 clutter_gst_video_sink_init
    at ./clutter-gst-video-sink.c line 991
  • #4 g_type_create_instance
    at gtype.c line 1885
  • #5 g_object_constructor
    at gobject.c line 1629
  • #6 g_object_newv
    at gobject.c line 1493
  • #7 g_object_new_valist
    at gobject.c line 1610
  • #8 g_object_new
    at gobject.c line 1325
  • #9 clutter_gst_video_sink_new
    at ./clutter-gst-video-sink.c line 1359
  • #10 bacon_video_widget_new
    at bacon-video-widget-gst-0.10.c line 6057
  • #11 video_widget_create
    at totem-object.c line 4222
  • #12 app_init
    at totem.c line 136
  • #13 app_command_line
    at totem.c line 223
  • #14 ffi_call_SYSV
    from /usr/lib/libffi.so.5
  • #15 ffi_call
    from /usr/lib/libffi.so.5
  • #16 g_cclosure_marshal_generic
    at gclosure.c line 1147
  • #17 g_closure_invoke
    at gclosure.c line 774
  • #18 signal_emit_unlocked_R
    at gsignal.c line 3272
  • #19 g_signal_emit_valist
    at gsignal.c line 3013
  • #20 g_signal_emit
    at gsignal.c line 3060
  • #21 g_application_run
    at gapplication.c line 1301
  • #22 main
    at totem.c line 280

Comment 2 Emmanuele Bassi (:ebassi) 2011-10-06 12:36:15 UTC
this is not a Cogl bug; Clutter could not initialize, and if that happens, any further call will have undefined behaviour — including, but not limited to, segfaults.

the failure to initialize without ARGB visual means that either the driver or the GPU does not have 32 bit visual support, which are currently required by Clutter-GTK (GLX decides which kinds of visuals are available, and you can only select on before creating the GL context).

the fact that video playback did not work even without ARGB visuals means that yhe driver or the GPU do not provide enough support to run Clutter-Gst. digging a bit, the GPU in question is a NV17:

  http://en.wikipedia.org/wiki/GeForce_4_Series

from 2002, and it's the nvidia equivalent of the intel 8xx GPU series; it supports the D3D 7.0 shader model. it looks like this GPU simply falls out of the supported hardware matrix, as it's nearly 10 years old.

I'm sorry, but I'll have to close this as NOTGNOME; it might be worthy to open a bug against the nouveau driver to see if they can improve support for that particular GPU.
Comment 3 Balló György 2011-10-06 22:51:17 UTC
I have a very similar video card, and the video playback works even if it has very bad performance, if I export CLUTTER_DISABLE_ARGB_VISUAL=1. Without this setting I get the same segfault.

My questions are:

1. Why unable clutter to fallback to work without ARGB visuals? Why should I set this explicitly?

2. Why does totem not show an error message dialog about this failure? Totem segfaults with software rasterizer also, it would be useful to display an error message something like: "Sorry, Totem unable to initialize. Please check that your video card is properly configured."

3. Why does totem not fallback to work with the old pure GStreamer-based backend if clutter fails to initialize?