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