Bug#932561: cinnamon-settings-daemon: csd-backlight-helper segfaults on get and set
Control: tags -1 + upstream fixed-upstream
Dear Maintainer,
I could reproduce a crash in csd-backlight-helper too.
Had not installed a complete cinnamon desktop - just the
cinnamon-settings-daemon package, running a plasma desktop.
It looks like upstream handled the issue already in [1] [2].
Kind regards,
Bernhard
[1] https://github.com/linuxmint/cinnamon-settings-daemon/pull/255
[2] https://github.com/linuxmint/cinnamon-settings-daemon/commit/48156a7a2b1b0515fe2ef9f5d1201e158d5bd948.patch
(gdb) bt
#0 0x00005621c6970384 in csd_backlight_helper_get_best_backlight (preference_list=0x0) at csd-backlight-helper.c:69
#1 0x00005621c6970384 in main (argc=<optimized out>, argv=<optimized out>) at csd-backlight-helper.c:178
68 /* setup our gsettings interface */
69 if (preference_list[0] == NULL)
70 g_print("%s\n%s\n",
# Buster/stable amd64 qemu VM 2019-07-21
apt update
apt dist-upgrade
apt install systemd-coredump task-cinnamon-desktop fakeroot gdb cinnamon-settings-daemon-dbgsym
apt build-dep cinnamon-settings-daemon
reboot
# login
export DISPLAY=:0
/usr/lib/x86_64-linux-gnu/cinnamon-settings-daemon/csd-backlight-helper --get-max-brightness
Could not get or set the value of the backlight: No backlight devices present
mkdir /home/benutzer/source/cinnamon-settings-daemon/orig -p
cd /home/benutzer/source/cinnamon-settings-daemon/orig
apt source cinnamon-settings-daemon
cd
##########
##########
##########
# Buster/stable amd64 real hardware trekstor twin 10 2019-07-21, running plasma
apt update
apt dist-upgrade
apt install cinnamon-settings-daemon cinnamon-settings-daemon-dbgsym
Die folgenden NEUEN Pakete werden installiert:
cinnamon-desktop-data cinnamon-l10n cinnamon-settings-daemon gir1.2-cvc-1.0 hwdata libcanberra-gtk3-0 libcanberra-gtk3-module libcinnamon-desktop4 libcvc0 libgnomekbd-common libgnomekbd8 libxklavier16 cinnamon-settings-daemon-dbgsym
# logged in in plasma session
export DISPLAY=:0
/usr/lib/x86_64-linux-gnu/cinnamon-settings-daemon/csd-backlight-helper --get-max-brightness
#########
benutzer@trekstor:~$ /usr/lib/x86_64-linux-gnu/cinnamon-settings-daemon/csd-backlight-helper --get-max-brightness
Speicherzugriffsfehler (Speicherabzug geschrieben)
dmesg:
[ 196.280350] show_signal_msg: 7 callbacks suppressed
[ 196.280355] csd-backlight-h[1538]: segfault at 0 ip 00005621c6970384 sp 00007fff5dc2fc90 error 4 in csd-backlight-helper[5621c6970000+1000]
[ 196.280368] Code: d2 02 00 00 31 ff 48 8b 5c 24 38 e8 26 fd ff ff 48 8d 35 2d 0d 00 00 48 89 c7 49 89 c6 e8 54 fd ff ff 49 89 c4 48 85 c0 74 59 <4c> 8b 2b 4d 85 ed 0f 84 c4 02 00 00 48 83 c3 08 4c 8d 3d 14 0d 00
root@trekstor:~# coredumpctl list
TIME PID UID GID SIG COREFILE EXE
Sun 2019-07-21 14:43:34 CEST 1538 1000 1000 11 present /usr/lib/x86_64-linux-gnu/cinnamon-settings-daemon/csd-backlight-helper
root@trekstor:~# coredumpctl gdb 1538
PID: 1538 (csd-backlight-h)
UID: 1000 (benutzer)
GID: 1000 (benutzer)
Signal: 11 (SEGV)
Timestamp: Sun 2019-07-21 14:43:31 CEST (1min 18s ago)
Command Line: /usr/lib/x86_64-linux-gnu/cinnamon-settings-daemon/csd-backlight-helper --get-max-brightness
Executable: /usr/lib/x86_64-linux-gnu/cinnamon-settings-daemon/csd-backlight-helper
Control Group: /user.slice/user-1000.slice/session-4.scope
Unit: session-4.scope
Slice: user-1000.slice
Session: 4
Owner UID: 1000 (benutzer)
Boot ID: f451c990d14044f48c70e2b2dd67d139
Machine ID: f7ce6d39c23c4076a7a150787341adb3
Hostname: trekstor
Storage: /var/lib/systemd/coredump/core.csd-backlight-h.1000.f451c990d14044f48c70e2b2dd67d139.1538.1563713011000000.lz4
Message: Process 1538 (csd-backlight-h) of user 1000 dumped core.
Stack trace of thread 1538:
#0 0x00005621c6970384 n/a (csd-backlight-helper)
#1 0x00007f6b2372b09b __libc_start_main (libc.so.6)
#2 0x00005621c697074a n/a (csd-backlight-helper)
GNU gdb (Debian 8.2.1-2) 8.2.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/lib/x86_64-linux-gnu/cinnamon-settings-daemon/csd-backlight-helper...(no debugging symbols found)...done.
warning: core file may not match specified executable file.
[New LWP 1538]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/lib/x86_64-linux-gnu/cinnamon-settings-daemon/csd-backlight-helper --get-m'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00005621c6970384 in ?? ()
(gdb) set width 0
(gdb) set pagination off
(gdb) bt
#0 0x00005621c6970384 in ()
#1 0x00007f6b2372b09b in __libc_start_main (main=0x5621c69701e0, argc=2, argv=0x7fff5dc2fee8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff5dc2fed8) at ../csu/libc-start.c:308
#2 0x00005621c697074a in ()
Core was generated by `/usr/lib/x86_64-linux-gnu/cinnamon-settings-daemon/csd-backlight-helper --get-m'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 csd_backlight_helper_get_best_backlight (preference_list=0x0) at csd-backlight-helper.c:69
69 csd-backlight-helper.c: Datei oder Verzeichnis nicht gefunden.
(gdb) set width 0
(gdb) set pagination off
(gdb) bt
#0 0x00005621c6970384 in csd_backlight_helper_get_best_backlight (preference_list=0x0) at csd-backlight-helper.c:69
#1 0x00005621c6970384 in main (argc=<optimized out>, argv=<optimized out>) at csd-backlight-helper.c:178
(gdb) list csd-backlight-helper.c:55,88
55
56 static gchar *
57 csd_backlight_helper_get_best_backlight (gchar** preference_list)
58 {
59 gchar *path = NULL;
60 GList *devices;
61 GUdevClient *client;
62
63 client = g_udev_client_new (NULL);
64 devices = g_udev_client_query_by_subsystem (client, "backlight");
65 if (devices == NULL)
66 goto out;
67
68 /* setup our gsettings interface */
69 if (preference_list[0] == NULL)
70 g_print("%s\n%s\n",
71 "Warning: no backlight sources have been configured.",
72 "Check " CSD_POWER_SETTINGS_SCHEMA " to configure some.");
73
74 int i = 0;
75 for (i=0; preference_list[i] != NULL; i++) {
76 path = csd_backlight_helper_get_type
77 (devices, preference_list[i]);
78 if (path != NULL)
79 goto out;
80 }
81
82 out:
83 g_object_unref (client);
84 g_list_foreach (devices, (GFunc) g_object_unref, NULL);
85 g_list_free (devices);
86 return path;
87 }
88
(gdb) print preference_list
$1 = (gchar **) 0x0
set width 0
set pagination off
directory /home/benutzer/source/cinnamon-settings-daemon/orig/cinnamon-settings-daemon-3.8.4/plugins/power
########
https://github.com/linuxmint/cinnamon-settings-daemon/pull/255
https://github.com/linuxmint/cinnamon-settings-daemon/commit/48156a7a2b1b0515fe2ef9f5d1201e158d5bd948#diff-b731402d7aeb8415543f911107d7bf51
https://github.com/linuxmint/cinnamon-settings-daemon/commit/48156a7a2b1b0515fe2ef9f5d1201e158d5bd948.patch
Reply to: