SIGSEGV, after error in 'GfCrtcMode' land?
This is with up-to-date 32-bit x86 Debian GNU/Linux testing, running on a IBM ThinkPad T42. :-) (Yes, that's a few years old.)
Current GNOME is "a bit slow" on that one, so I thought I'd give gnome-flashback a try.
With Debian gnome-flashback 3.38.0-1 I immediately run into a SIGSEGV, after what seems to be an "error in GfCrtcMode
land"?
Reproduced when rebuilt that from sources, and gnome-flashback-dbgsym installed:
$ gdb -q /usr/bin/gnome-flashback
Reading symbols from /usr/bin/gnome-flashback...
Reading symbols from /usr/lib/debug/.build-id/4c/c91e7308a1debe17c8c18495bb1db881b4b89d.debug...
(gdb) r
Starting program: /usr/bin/gnome-flashback
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
[New Thread 0xb37ccb40 (LWP 10305)]
[New Thread 0xb2fcbb40 (LWP 10306)]
[New Thread 0xb23ffb40 (LWP 10307)]
(gnome-flashback:10286): gnome-flashback-WARNING **: 21:24:03.564: Failed to check if session has entered the Running phase: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files
[New Thread 0xb1bfeb40 (LWP 10308)]
(gnome-flashback:10286): GLib-GObject-CRITICAL **: 21:24:03.691: g_object_new_is_valid_property: object class 'GfCrtcMode' has no property named '1024x768'
(gnome-flashback:10286): GLib-CRITICAL **: 21:24:03.692: g_ref_count_inc: assertion 'rc != NULL' failed
(gnome-flashback:10286): GLib-GObject-CRITICAL **: 21:24:03.692: g_object_new_is_valid_property: object class 'GfCrtcMode' has no property named '800x600'
(gnome-flashback:10286): GLib-CRITICAL **: 21:24:03.693: g_ref_count_inc: assertion 'rc != NULL' failed
(gnome-flashback:10286): GLib-GObject-CRITICAL **: 21:24:03.694: g_object_new_is_valid_property: object class 'GfCrtcMode' has no property named '848x480'
(gnome-flashback:10286): GLib-CRITICAL **: 21:24:03.694: g_ref_count_inc: assertion 'rc != NULL' failed
(gnome-flashback:10286): GLib-GObject-CRITICAL **: 21:24:03.695: g_object_new_is_valid_property: object class 'GfCrtcMode' has no property named '720x480'
(gnome-flashback:10286): GLib-CRITICAL **: 21:24:03.695: g_ref_count_inc: assertion 'rc != NULL' failed
(gnome-flashback:10286): GLib-GObject-CRITICAL **: 21:24:03.696: g_object_new_is_valid_property: object class 'GfCrtcMode' has no property named '640x480'
(gnome-flashback:10286): GLib-CRITICAL **: 21:24:03.696: g_ref_count_inc: assertion 'rc != NULL' failed
(gnome-flashback:10286): GLib-GObject-CRITICAL **: 21:24:03.697: g_object_new_is_valid_property: object class 'GfCrtcXrandr' has no property named 'P\u000fY'
(gnome-flashback:10286): GLib-GObject-CRITICAL **: 21:24:03.697: g_object_new_is_valid_property: object class 'GfCrtcXrandr' has no property named 'P\u000fY'
(gnome-flashback:10286): GLib-GObject-CRITICAL **: 21:24:03.700: g_object_new_is_valid_property: object class 'GfOutputXrandr' has no property named 'P\u000fY'
(gnome-flashback:10286): GLib-CRITICAL **: 21:24:03.700: g_ref_count_inc: assertion 'rc != NULL' failed
Thread 1 "gnome-flashback" received signal SIGSEGV, Segmentation fault.
0x0041b734 in gf_gpu_get_backend (self=0x0) at gf-gpu.c:202
warning: Source file is more recent than executable.
202 return priv->backend;
(gdb) print priv
$1 = (GfGpuPrivate *) 0xfffffff0
(gdb) list
197 {
198 GfGpuPrivate *priv;
199
200 priv = gf_gpu_get_instance_private (self);
201
202 return priv->backend;
203 }
[...]
(gdb) print priv
$1 = (GfGpuPrivate *) 0xfffffff0
(gdb) bt
#0 0x0041b734 in gf_gpu_get_backend (self=0x0) at gf-gpu.c:202
#1 0x0043209e in xdisplay_from_gpu (gpu=<optimized out>) at gf-output-xrandr.c:51
#2 xdisplay_from_output (output=output@entry=0x543ee8) at gf-output-xrandr.c:61
#3 0x004328ae in output_get_boolean_property (propname=0x4a6c44 "_GNOME_FLASHBACK_PRESENTATION_OUTPUT", output=0x543ee8) at gf-output-xrandr.c:600
#4 output_get_presentation_xrandr (output=0x543ee8) at gf-output-xrandr.c:624
#5 gf_output_xrandr_new (gpu_xrandr=<optimized out>, xrandr_output=<optimized out>, output_id=<optimized out>, primary_output=<optimized out>) at gf-output-xrandr.c:890
#6 0x004292b3 in gf_gpu_xrandr_read_current (gpu=0x582410, error=0xbfffe4f8) at gf-gpu-xrandr.c:206
#7 0x0041b689 in gf_gpu_read_current (gpu=0x582410, error=0xbfffe4f8) at gf-gpu-private.h:29
#8 0x0041b92c in gf_monitor_manager_real_read_current_state (manager=0x5a2040) at gf-monitor-manager.c:2035
#9 0x0043075a in gf_monitor_manager_xrandr_read_current_state (manager=0x5a2040) at gf-monitor-manager-xrandr.c:796
#10 0x0041cc28 in gf_monitor_manager_setup (manager=0x5a2040) at gf-monitor-manager.c:2312
#11 0x0041aed2 in gf_backend_real_post_init (backend=0x529fd0) at gf-backend.c:133
#12 0x0041b129 in gf_backend_new (type=GF_BACKEND_TYPE_X11_CM) at gf-backend.c:199
#13 0x004194dc in gf_application_init (application=0x53b9f0) at gf-application.c:322
#14 0xb6c7859f in g_type_create_instance () at /lib/i386-linux-gnu/libgobject-2.0.so.0
#15 0xb6c5e7cf in () at /lib/i386-linux-gnu/libgobject-2.0.so.0
#16 0xb6c5fc0c in g_object_new_with_properties () at /lib/i386-linux-gnu/libgobject-2.0.so.0
#17 0xb6c604d7 in g_object_new () at /lib/i386-linux-gnu/libgobject-2.0.so.0
#18 0x0041983f in gf_application_new () at gf-application.c:359
#19 0x00419f3a in session_ready_cb (session=0x54ec90, is_session_running=1, main_data=0xbfffebc0) at gf-main.c:146
#20 0xb6c5970a in () at /lib/i386-linux-gnu/libgobject-2.0.so.0
#21 0xb6c71c2c in g_signal_emit_valist () at /lib/i386-linux-gnu/libgobject-2.0.so.0
#22 0xb6c71db5 in g_signal_emit () at /lib/i386-linux-gnu/libgobject-2.0.so.0
#23 0x0041a9e6 in is_session_running_cb (source_object=0x53b9d8, res=0x57fe00, user_data=0x54ec90) at gf-session.c:236
#24 0xb6d4ebe2 in () at /lib/i386-linux-gnu/libgio-2.0.so.0
#25 0xb6d4f92b in () at /lib/i386-linux-gnu/libgio-2.0.so.0
#26 0xb6db9a77 in () at /lib/i386-linux-gnu/libgio-2.0.so.0
#27 0xb6d4ebe2 in () at /lib/i386-linux-gnu/libgio-2.0.so.0
#28 0xb6d4f92b in () at /lib/i386-linux-gnu/libgio-2.0.so.0
#29 0xb6dae252 in () at /lib/i386-linux-gnu/libgio-2.0.so.0
#30 0xb6d4ebe2 in () at /lib/i386-linux-gnu/libgio-2.0.so.0
#31 0xb6d4ec3b in () at /lib/i386-linux-gnu/libgio-2.0.so.0
#32 0xb6b4d7a4 in g_main_context_dispatch () at /lib/i386-linux-gnu/libglib-2.0.so.0
#33 0xb6b4db69 in () at /lib/i386-linux-gnu/libglib-2.0.so.0
#34 0xb6b4dec1 in g_main_loop_run () at /lib/i386-linux-gnu/libglib-2.0.so.0
#35 0x0041856a in main (argc=<optimized out>, argv=<optimized out>) at gf-main.c:203
If I hack around this with return NULL
for self == NULL
, a similar crash happens elsewhere, and so on. So it seems we simple aren't meant to see self == NULL
, etc. -- something seems to go wrong earlier ("error in GfCrtcMode
land?"), and we then work here in some inconsistent/invalid state.
I'll try to work though this, but as I have no GNOME etc. sources experience, I'll appreciate any pointers and help.