After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 749844 - segfault if wacom tablet (BambooFun) is plugged in at login
segfault if wacom tablet (BambooFun) is plugged in at login
Status: RESOLVED FIXED
Product: gnome-settings-daemon
Classification: Core
Component: wacom
3.16.x
Other Linux
: Normal normal
: ---
Assigned To: Carlos Garnacho
gnome-settings-daemon-maint
: 747865 751439 752135 753587 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2015-05-25 15:17 UTC by Alexandre Rostovtsev
Modified: 2015-08-20 10:40 UTC
See Also:
GNOME target: ---
GNOME version: 3.15/3.16


Attachments
proposed patch (1.38 KB, patch)
2015-05-25 16:51 UTC, Alexandre Rostovtsev
reviewed Details | Review
device-mapper: Reset the "display" setting on NULL outputs (2.15 KB, patch)
2015-05-26 13:17 UTC, Carlos Garnacho
committed Details | Review

Description Alexandre Rostovtsev 2015-05-25 15:17:06 UTC
gnome-settings-daemon-3.16.2 reliably crashes when logging into gnome if my BambooFun wacom tablet is plugged in at the time.

If I log in without the tablet and only plug in the tablet afterwards, there is no crash.

This is with dconf-0.24.0, glib-2.44.1, libwacom-0.12.


Backtrace:

  • #0 g_bit_lock
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gbitlock.c line 214
  • #1 g_variant_lock
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-core.c line 221
  • #2 g_variant_fill_gvs
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-core.c line 399
  • #3 gvs_variable_sized_array_needed_size
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-serialiser.c line 709
  • #4 g_variant_serialiser_needed_size
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-serialiser.c line 1434
  • #5 g_variant_ensure_size
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-core.c line 338
  • #6 g_variant_fill_gvs
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-core.c line 400
  • #7 gvs_variant_needed_size
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-serialiser.c line 1206
  • #8 g_variant_serialiser_needed_size
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-serialiser.c line 1434
  • #9 g_variant_ensure_size
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-core.c line 338
  • #10 g_variant_fill_gvs
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-core.c line 400
  • #11 gvs_variable_sized_maybe_needed_size
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-serialiser.c line 363
  • #12 g_variant_serialiser_needed_size
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-serialiser.c line 1434
  • #13 g_variant_ensure_size
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-core.c line 338
  • #14 g_variant_fill_gvs
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-core.c line 400
  • #15 gvs_tuple_needed_size
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-serialiser.c line 968
  • #16 g_variant_serialiser_needed_size
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-serialiser.c line 1434
  • #17 g_variant_ensure_size
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-core.c line 338
  • #18 g_variant_fill_gvs
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-core.c line 400
  • #19 gvs_variable_sized_array_needed_size
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-serialiser.c line 709
  • #20 g_variant_serialiser_needed_size
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-serialiser.c line 1434
  • #21 g_variant_ensure_size
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-core.c line 338
  • #22 g_variant_get_size
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gvariant-core.c line 817
  • #23 dconf_engine_prepare_change
    at dconf-engine.c line 905
  • #24 dconf_engine_manage_queue
    at dconf-engine.c line 1032
  • #25 dconf_engine_change_fast
    at dconf-engine.c line 1145
  • #26 dconf_settings_backend_write
    at dconfsettingsbackend.c line 89
  • #27 g_settings_backend_write
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/gio/gsettingsbackend.c line 783
  • #28 g_settings_write_to_backend
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/gio/gsettings.c line 1077
  • #29 g_settings_set_value
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/gio/gsettings.c line 1537
  • #30 settings_set_display
    at gsd-device-mapper.c line 384
  • #31 input_info_remap
    at gsd-device-mapper.c line 557
  • #32 input_info_remap
    at gsd-device-mapper.c line 553
  • #33 mapper_apply_helper_info
    at gsd-device-mapper.c line 604
  • #34 mapper_recalculate_candidates
    at gsd-device-mapper.c line 631
  • #35 _device_mapper_update_outputs
    at gsd-device-mapper.c line 853
  • #36 on_rr_screen_ready
    at gsd-device-mapper.c line 882
  • #37 g_task_return_now
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/gio/gtask.c line 1088
  • #38 g_task_return
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/gio/gtask.c line 1146
  • #39 on_proxy_acquired
    at gnome-rr.c line 631
  • #40 g_simple_async_result_complete
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/gio/gsimpleasyncresult.c line 763
  • #41 complete_in_idle_cb
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/gio/gsimpleasyncresult.c line 775
  • #42 g_main_dispatch
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gmain.c line 3122
  • #43 g_main_context_dispatch
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gmain.c line 3737
  • #44 g_main_context_iterate
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gmain.c line 3808
  • #45 g_main_loop_run
    at /usr/src/debug/dev-libs/glib-2.44.1/glib-2.44.1/glib/gmain.c line 4002
  • #46 gtk_main
    at /usr/src/debug/x11-libs/gtk+-3.16.3/gtk+-3.16.3/gtk/gtkmain.c line 1219
  • #47 main
    at main.c line 427

Comment 1 Alexandre Rostovtsev 2015-05-25 15:17:48 UTC
Downstream report: https://bugs.gentoo.org/show_bug.cgi?id=550368
Comment 2 Alexandre Rostovtsev 2015-05-25 16:51:32 UTC
Created attachment 303946 [details] [review]
proposed patch

This fixes the crash for me.
Comment 3 Carlos Garnacho 2015-05-26 13:16:28 UTC
Comment on attachment 303946 [details] [review]
proposed patch

Thanks for the patch, I see how it helps fixing the crash, I however think that it's weird to have an array expected to be free()d initialized to const strings, this is IMO easy to go unnoticed as code evolves and changes accumulate.

It looks to me like we could just be resetting the key to its default ['','',''] value in this case, I'm attaching an alternative patch.
Comment 4 Carlos Garnacho 2015-05-26 13:17:02 UTC
Created attachment 304009 [details] [review]
device-mapper: Reset the "display" setting on NULL outputs

We used to attempt to reconstruct the ['','',''] default, although
this failed on NULL outputs as we tried to feed NULLs into "as"
variants/settings.

Fix this by just resetting the key when the device gets a NULL
output, we can also make the other path clearer as we can't get
NULLs in edid[] as we previously might.

Based on a patch by Alexandre Rostovtsev <tetromino@gentoo.org>
Comment 5 Alexandre Rostovtsev 2015-05-26 13:20:25 UTC
Review of attachment 304009 [details] [review]:

Sure, this will also work.
Comment 6 Carlos Garnacho 2015-06-02 16:45:51 UTC
Attachment 304009 [details] pushed as 21d26aa - device-mapper: Reset the "display" setting on NULL outputs
Comment 7 Carlos Garnacho 2015-06-02 16:49:55 UTC
This has been pushed all the way to gnome-3-14. Thanks again for the patch/report!
Comment 8 cpw+bugs 2015-06-24 14:01:54 UTC
*** Bug 751439 has been marked as a duplicate of this bug. ***
Comment 9 Jason Gerecke 2015-06-25 21:08:22 UTC
*** Bug 747865 has been marked as a duplicate of this bug. ***
Comment 10 Bastien Nocera 2015-07-08 15:50:36 UTC
*** Bug 752135 has been marked as a duplicate of this bug. ***
Comment 11 Carlos Garnacho 2015-08-20 10:40:19 UTC
*** Bug 753587 has been marked as a duplicate of this bug. ***