Bug#789529: gnome-settings-daemon: Segfault when usb headset is plugged in
Christian Weeks
cpw at weeksfamily.ca
Sun Jun 21 22:15:46 UTC 2015
Package: gnome-settings-daemon
Version: 3.16.2-3
Severity: important
Tags: upstream
Dear Maintainer,
*** Reporter, please consider answering these questions, where appropriate ***
* What led up to the situation?
Upgrading from jessie to sid
* What exactly did you do (or not do) that was effective (or
ineffective)?
Unplugged my usb headset
* What was the outcome of this action?
gnome-settings-daemon didn't segfault on startup
*** End of the template - remove these template lines ***
I spent a fair bit of time diagnosing this issue. I suspect it's an upstream bug.
The input to output mapping layer seems to misidentify the input (there's a couple of buttons)
section of my usb headset (logitech H800) as a touchscreen input, and tries to map it into
the gsettings layer, where the gsettings layer crashes because I suspect it's not got a proper
GSETTINGS schema.
Attached is a gdb backtrace (with full variables showing) showing where the gsettings set
value is called with a usb id of my headset. (046d:0a29)
Key things to notice:
1. There seem to be no debugging symbols for the gsd plugins. I had to build my own to get them. (backtrace
here is from the packaged gsd).
2. g_settings_set_value is being called (it's not called in many places. Here it's being called by
settings_set_display, from the input_info_remap function. It's clear that the device code here believes
my headset is a touchscreen input device.)
3. The path being set is "/org/gnome/desktop/peripherals/touchscreens/046d:0a29/display". I don't know
why this is failing, but it is. I suspect that other parts realize that my headset is NOT a touchscreen
so the path is never initialized.
Hope this helps, and thanks!
Christian
-- System Information:
Debian Release: stretch/sid
APT prefers unstable
APT policy: (501, 'unstable'), (500, 'stable'), (499, 'testing'), (399, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 4.0.0-2-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_CA.utf8, LC_CTYPE=en_CA.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages gnome-settings-daemon depends on:
ii dconf-gsettings-backend [gsettings-backend] 0.24.0-2
ii gsettings-desktop-schemas 3.16.1-1
ii libc6 2.19-18
ii libcairo2 1.14.2-2
ii libcanberra-gtk3-0 0.30-2.1
ii libcanberra0 0.30-2.1
ii libcolord2 1.2.1-1+b2
ii libcups2 1.7.5-12
ii libfontconfig1 2.11.0-6.3
ii libgdk-pixbuf2.0-0 2.31.4-2
ii libgeocode-glib0 3.16.2-1
ii libglib2.0-0 2.44.1-1
ii libgnome-desktop-3-10 3.16.2-2
ii libgtk-3-0 3.16.4-2
ii libgudev-1.0-0 230-1
ii libgweather-3-6 3.16.1-1
ii liblcms2-2 2.6-3+b3
ii libnm-glib4 1.0.2-2
ii libnm-util2 1.0.2-2
ii libnotify4 0.7.6-2
ii libnspr4 2:4.10.8-2
ii libnspr4-0d 2:4.10.8-2
ii libnss3 2:3.19.2-1
ii libnss3-1d 2:3.19.2-1
ii libpackagekit-glib2-18 1.0.6-1
ii libpam-systemd 220-7
ii libpango-1.0-0 1.36.8-3
ii libpangocairo-1.0-0 1.36.8-3
ii libpolkit-gobject-1-0 0.112-5
ii libpulse-mainloop-glib0 6.0-2
ii libpulse0 6.0-2
ii librsvg2-2 2.40.9-2
ii libupower-glib3 0.99.3-1+b1
ii libwacom2 0.8-1
ii libwayland-client0 1.8.1-1
ii libx11-6 2:1.6.3-1
ii libxext6 2:1.3.3-1
ii libxi6 2:1.7.4-1+b2
ii libxtst6 2:1.2.2-1+b1
ii nautilus-data 3.14.2-1
Versions of packages gnome-settings-daemon recommends:
ii pulseaudio 6.0-2
Versions of packages gnome-settings-daemon suggests:
ii gnome-screensaver 3.6.1-4
ii kde-window-manager [x-window-manager] 4:4.11.13-2
ii metacity [x-window-manager] 1:3.17.2-3+b1
ii mutter [x-window-manager] 3.16.2-2
ii x11-xserver-utils 7.7+4
-- no debconf information
-------------- next part --------------
#0 0x00007ffff6102f78 in g_bit_lock (address=address at entry=0x20, lock_bit=lock_bit at entry=0) at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gbitlock.c:214
#1 0x00007ffff61682c8 in g_variant_fill_gvs (value=0x0)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-core.c:221
value = 0x0
__FUNCTION__ = "g_variant_fill_gvs"
#2 0x00007ffff61682c8 in g_variant_fill_gvs (serialised=0x7fffffffd940, data=0x0) at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-core.c:399
value = 0x0
__FUNCTION__ = "g_variant_fill_gvs"
#3 0x00007ffff616d74d in g_variant_serialiser_needed_size (n_children=3, children=0x6ca320, gvs_filler=0x7ffff61682b0 <g_variant_fill_gvs>, type_info=<optimized out>)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-serialiser.c:709
child = {type_info = 0x0, data = 0x0, size = 0}
alignment = 0
offset = 0
i = 0
fixed_size = 0
__FUNCTION__ = "g_variant_serialiser_needed_size"
#4 0x00007ffff616d74d in g_variant_serialiser_needed_size (type_info=<optimized out>, gvs_filler=0x7ffff61682b0 <g_variant_fill_gvs>, children=0x6ca320, n_children=3)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-serialiser.c:1434
fixed_size = 0
__FUNCTION__ = "g_variant_serialiser_needed_size"
#5 0x00007ffff6167997 in g_variant_ensure_size (value=0x7fffe40524d0)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-core.c:338
children = <optimized out>
n_children = <optimized out>
#6 0x00007ffff61682d0 in g_variant_fill_gvs (serialised=0x7fffffffda00, data=0x7fffe40524d0)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-core.c:400
value = 0x7fffe40524d0
__FUNCTION__ = "g_variant_fill_gvs"
#7 0x00007ffff616d94f in g_variant_serialiser_needed_size (type_info=0x7ffff61d0780 <g_variant_type_info_basic_table+320>, children=0xed99a0, n_children=1, gvs_filler=0x7ffff61682b0 <g_variant_fill_gvs>)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-serialiser.c:1206
child = {type_info = 0x0, data = 0x0, size = 0}
type_string = <optimized out>
__FUNCTION__ = "g_variant_serialiser_needed_size"
#8 0x00007ffff616d94f in g_variant_serialiser_needed_size (type_info=0x7ffff61d0780 <g_variant_type_info_basic_table+320>, gvs_filler=0x7ffff61682b0 <g_variant_fill_gvs>, children=0xed99a0, n_children=1)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-serialiser.c:1434
__FUNCTION__ = "g_variant_serialiser_needed_size"
#9 0x00007ffff6167997 in g_variant_ensure_size (value=0x7fffe4052500)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-core.c:338
children = <optimized out>
n_children = <optimized out>
#10 0x00007ffff61682d0 in g_variant_fill_gvs (serialised=0x7fffffffdac0, data=0x7fffe4052500)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-core.c:400
value = 0x7fffe4052500
__FUNCTION__ = "g_variant_fill_gvs"
#11 0x00007ffff616d9c0 in g_variant_serialiser_needed_size (type_info=0x7fffe4052560, n_children=1, children=0xef99e0, gvs_filler=0x7ffff61682b0 <g_variant_fill_gvs>)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-serialiser.c:363
child = {type_info = 0x0, data = 0x0, size = 0}
fixed_size = 0
__FUNCTION__ = "g_variant_serialiser_needed_size"
#12 0x00007ffff616d9c0 in g_variant_serialiser_needed_size (type_info=0x7fffe4052560, gvs_filler=0x7ffff61682b0 <g_variant_fill_gvs>, children=0xef99e0, n_children=1)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-serialiser.c:1434
fixed_size = 0
__FUNCTION__ = "g_variant_serialiser_needed_size"
#13 0x00007ffff6167997 in g_variant_ensure_size (value=0x7fffe4052530)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-core.c:338
children = <optimized out>
n_children = <optimized out>
#14 0x00007ffff61682d0 in g_variant_fill_gvs (serialised=0x7fffffffdb80, data=0x7fffe4052530)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-core.c:400
value = 0x7fffe4052530
__FUNCTION__ = "g_variant_fill_gvs"
#15 0x00007ffff616d868 in g_variant_serialiser_needed_size (n_children=2, children=0xeed620, gvs_filler=0x7ffff61682b0 <g_variant_fill_gvs>, type_info=0x7fffe4052c00)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-serialiser.c:968
child = {type_info = 0x0, data = 0x0, size = 0}
alignment = 7
member_info = <optimized out>
fixed_size = 0
offset = 64
i = 1
__FUNCTION__ = "g_variant_serialiser_needed_size"
#16 0x00007ffff616d868 in g_variant_serialiser_needed_size (type_info=0x7fffe4052c00, gvs_filler=0x7ffff61682b0 <g_variant_fill_gvs>, children=0xeed620, n_children=2)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-serialiser.c:1434
__FUNCTION__ = "g_variant_serialiser_needed_size"
#17 0x00007ffff6167997 in g_variant_ensure_size (value=0x7fffe4051030)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-core.c:338
children = <optimized out>
n_children = <optimized out>
#18 0x00007ffff61682d0 in g_variant_fill_gvs (serialised=0x7fffffffdc40, data=0x7fffe4051030)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-core.c:400
value = 0x7fffe4051030
__FUNCTION__ = "g_variant_fill_gvs"
#19 0x00007ffff616d74d in g_variant_serialiser_needed_size (n_children=1, children=0xeec9f0, gvs_filler=0x7ffff61682b0 <g_variant_fill_gvs>, type_info=<optimized out>)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-serialiser.c:709
child = {type_info = 0x0, data = 0x0, size = 0}
alignment = 7
offset = 0
i = 0
fixed_size = 0
__FUNCTION__ = "g_variant_serialiser_needed_size"
#20 0x00007ffff616d74d in g_variant_serialiser_needed_size (type_info=<optimized out>, gvs_filler=0x7ffff61682b0 <g_variant_fill_gvs>, children=0xeec9f0, n_children=1)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-serialiser.c:1434
fixed_size = 0
__FUNCTION__ = "g_variant_serialiser_needed_size"
#21 0x00007ffff6167997 in g_variant_ensure_size (value=0x7fffe4052c90)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-core.c:338
children = <optimized out>
n_children = <optimized out>
#22 0x00007ffff6167fcf in g_variant_get_size (value=0x7fffe4052c90)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gvariant-core.c:817
#23 0x00007fffe960b70f in ()
at /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so
#24 0x00007fffe960b7ff in ()
at /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so
#25 0x00007fffe960c4e1 in ()
at /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so
#26 0x00007fffe960aeac in ()
at /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so
#27 0x00007ffff66ff734 in g_settings_backend_write (backend=0x89d190 [DConfSettingsBackend], key=key at entry=0x6eed10 "/org/gnome/desktop/peripherals/touchscreens/046d:0a29/display", value=value at entry=0x7fffe40524d0, origin_tag=origin_tag at entry=0x0)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./gio/gsettingsbackend.c:783
success = <optimized out>
#28 0x00007ffff6704153 in g_settings_write_to_backend (settings=0xe894d0 [GSettings], value=0x7fffe40524d0, key=<optimized out>)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./gio/gsettings.c:1077
success = <optimized out>
path = 0x6eed10 "/org/gnome/desktop/peripherals/touchscreens/046d:0a29/display"
#29 0x00007ffff6705565 in g_settings_set_value (settings=0xe894d0 [GSettings], key=0x7fffe89f5c2c "display", value=0x7fffe40524d0)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./gio/gsettings.c:1537
skey =
{schema = 0xe894f0, name = 0x7ffff6a47885 "display", is_flags = 0, is_enum = 0, strinfo = 0x0, strinfo_length = 0, unparsed = 0x0, lc_char = 0 '\000', type = 0x7fffe40067b0, minimum = 0x0, maximum = 0x0, default_value = 0x7fffe4052380, ref_count = 0}
success = 1
__FUNCTION__ = "g_settings_set_value"
#30 0x00007fffe89efafc in ()
at /usr/lib/gnome-settings-daemon-3.0/libpower.so
#31 0x00007fffe89f0139 in ()
at /usr/lib/gnome-settings-daemon-3.0/libpower.so
#32 0x00007fffe89f0277 in ()
at /usr/lib/gnome-settings-daemon-3.0/libpower.so
#33 0x00007fffe89f0a87 in ()
at /usr/lib/gnome-settings-daemon-3.0/libpower.so
#34 0x00007fffe89f0b6b in ()
at /usr/lib/gnome-settings-daemon-3.0/libpower.so
#35 0x00007ffff66ca3c3 in g_task_return_now (task=0x93b500 [GTask])
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./gio/gtask.c:1088
#36 0x00007ffff66caa5e in g_task_return (task=0x93b500 [GTask], type=<optimized out>) at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./gio/gtask.c:1146
source = 0x6f5e00
#37 0x00007ffff759888f in ()
at /usr/lib/x86_64-linux-gnu/libgnome-desktop-3.so.10
#38 0x00007ffff66b9df7 in g_simple_async_result_complete (simple=0x8422c0 [GSimpleAsyncResult])
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./gio/gsimpleasyncresult.c:763
current_source = 0x6f5e00
current_context = <optimized out>
__FUNCTION__ = "g_simple_async_result_complete"
#39 0x00007ffff66b9e59 in complete_in_idle_cb (data=<optimized out>)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./gio/gsimpleasyncresult.c:775
simple = <optimized out>
#40 0x00007ffff612cb4d in g_main_context_dispatch (context=0x649ea0)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gmain.c:3122
dispatch = 0x7ffff6129610 <g_idle_dispatch>
prev_source = 0x0
was_in_call = 0
user_data = 0x8422c0
callback = 0x7ffff66b9e50 <complete_in_idle_cb>
cb_funcs = <optimized out>
cb_data = 0xec85d0
need_destroy = <optimized out>
source = 0x6f5e00
current = 0x62c150
i = 1
#41 0x00007ffff612cb4d in g_main_context_dispatch (context=context at entry=0x649ea0) at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gmain.c:3737
#42 0x00007ffff612cf20 in g_main_context_iterate (context=0x649ea0, block=block at entry=1, dispatch=dispatch at entry=1, self=<optimized out>)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gmain.c:3808
max_priority = 0
timeout = 0
some_ready = 1
nfds = <optimized out>
allocated_nfds = 7
fds = 0xe7b8a0
#43 0x00007ffff612d242 in g_main_loop_run (loop=0x79f190)
at /build/glib2.0-NiYzoW/glib2.0-2.44.1/./glib/gmain.c:4002
__FUNCTION__ = "g_main_loop_run"
#44 0x00007ffff6e93a85 in gtk_main ()
at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#45 0x0000000000403700 in main ()
A debugging session is active.
Inferior 1 [process 4478] will be killed.
Quit anyway? (y or n)
More information about the pkg-gnome-maintainers
mailing list