[gnome-flashback] SIGSEGV, after error in 'GfCrtcMode' land? (#72)



Hi!

I'm certainly able to compile code, operate a debugger, etc. -- but I
don't have any meaningful experience with GNOME internals, so I'd
appreciate any input you may have about how to start debugging this
issue.  Thanks!


Grüße
 Thomas


| Date: Wed, 17 Feb 2021 21:25:39 +0000
| From: Thomas Schwinge <gitlab-issues gnome org>
| To: thomas schwinge name
| Subject: gnome-flashback | SIGSEGV, after error in 'GfCrtcMode' land? (#72)
| 
| Thomas Schwinge created an issue: https://gitlab.gnome.org/GNOME/gnome-flashback/-/issues/72
| 
| 
| 
| 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.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]