GNOME Bugzilla – Bug 783338
random crash (SIGSEGV)
Last modified: 2021-07-05 14:10:22 UTC
Created attachment 353041 [details] gdb backtrace of the crash I got a random crash (SIGSEGV) in gnome-shell. I am using gnome-shell 3.22.3-3, Xorg and GNOME 3.22 on Debian stretch. If the below gdb backtrace and the attached full gdb backtrace isn't useful, please close this bug. Core was generated by `gnome-shell --replace'. Program terminated with signal SIGSEGV, Segmentation fault.
+ Trace 237536
The function in question seems to be in the package libclutter-1.0-0 1.26.0+dfsg-3. Unfortunately, the line number 1911 [1] doesn’t match with the function `_clutter_input_device_reset_scroll_info` [2]. Patches touching this file are also not applied [3]. So function looks like below. ``` void _clutter_input_device_reset_scroll_info (ClutterInputDevice *device) { guint i; if (device->scroll_info == NULL) return; for (i = 0; i < device->scroll_info->len; i++) { ClutterScrollInfo *info = &g_array_index (device->scroll_info, ClutterScrollInfo, i); info->last_value_valid = FALSE; } } ``` Maybe some GNOME Shell or Clutter developer has an idea. [1] https://sources.debian.net/src/clutter-1.0/1.26.0%2Bdfsg-3/clutter/clutter-input-device.c/#L1911 [2] https://sources.debian.net/src/clutter-1.0/1.26.0%2Bdfsg-3/clutter/clutter-input-device.c/#L1805 [3]
(In reply to Paul Menzel from comment #1) > The function in question seems to be in the package libclutter-1.0-0 > 1.26.0+dfsg-3. No, since 3.22 mutter/gnome-shell use an in-tree fork of cogl and clutter: https://git.gnome.org//browse/mutter/tree/clutter
(In reply to Florian Müllner from comment #2) > (In reply to Paul Menzel from comment #1) > > The function in question seems to be in the package libclutter-1.0-0 > > 1.26.0+dfsg-3. > > No, since 3.22 mutter/gnome-shell use an in-tree fork of cogl and clutter: > https://git.gnome.org//browse/mutter/tree/clutter Ah, then all this makes sense [1]. ``` void _clutter_input_device_reset_scroll_info (ClutterInputDevice *device) { guint i; → if (device->scroll_info == NULL) return; for (i = 0; i < device->scroll_info->len; i++) { ClutterScrollInfo *info = &g_array_index (device->scroll_info, ClutterScrollInfo, i); info->last_value_valid = FALSE; } } ``` So I guess, `CLUTTER_IS_INPUT_DEVICE (device)` could be added to the if condition to avoid the segmentation fault. But, that of course doesn’t fix the root cause, why an invalid “clutter input device” is passed. ``` if (CLUTTER_IS_INPUT_DEVICE (device) && device->scroll_info == NULL) return; ``` [1] https://sources.debian.net/src/mutter/3.22.4-1/clutter/clutter/clutter-input-device.c/?hl=1907#L1911
GNOME is going to shut down bugzilla.gnome.org in favor of gitlab.gnome.org. As part of that, we are mass-closing older open tickets in bugzilla.gnome.org which have not seen updates for a longer time (resources are unfortunately quite limited so not every ticket can get handled). If you can still reproduce the situation described in this ticket in a recent and supported software version, then please follow https://wiki.gnome.org/GettingInTouch/BugReportingGuidelines and create a new ticket at https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/ Thank you for your understanding and your help.