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 720740 - GSettings binding is not thread safe
GSettings binding is not thread safe
Status: RESOLVED OBSOLETE
Product: glib
Classification: Platform
Component: gsettings
2.38.x
Other Linux
: Normal critical
: ---
Assigned To: Allison Karlitskaya (desrt)
gtkdev
Depends on:
Blocks:
 
 
Reported: 2013-12-19 13:09 UTC by Michael Meeks
Modified: 2018-05-24 16:10 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
minimal test.c (4.21 KB, text/x-csrc)
2014-02-06 18:04 UTC, Milan Crha
Details

Description Michael Meeks 2013-12-19 13:09:03 UTC
[Thread 0x86588b40 (LWP 2992) exited]
**
GLib-GIO:ERROR:gsettings.c:2328:g_settings_binding_free: assertion failed: (!binding->running)

Program received signal SIGABRT, Aborted.
0xb7fdc424 in __kernel_vsyscall ()
(gdb) bt
  • #0 __kernel_vsyscall
  • #1 __GI_raise
    at ../nptl/sysdeps/unix/sysv/linux/raise.c line 56
  • #2 __GI_abort
    at abort.c line 89
  • #3 _g_log_abort
    at gmessages.c line 255
  • #4 g_assertion_message
  • #5 g_assertion_message_expr
    at gtestutils.c line 2293
  • #6 g_settings_binding_free
    at gsettings.c line 2328
  • #7 g_datalist_clear
    at gdataset.c line 277
  • #8 g_object_finalize
    at gobject.c line 1024
  • #9 e_mail_formatter_finalize
    at e-mail-formatter.c line 359
  • #10 g_object_unref
    at gobject.c line 3197
  • #11 g_object_set_property
    at gobject.c line 2331
  • #12 g_settings_binding_key_changed
    at gsettings.c line 2418
  • #13 g_cclosure_marshal_VOID__STRINGv
    at gmarshal.c line 1004
  • #14 _g_closure_invoke_va
    at gclosure.c line 840
  • #15 g_signal_emit_valist
    at gsignal.c line 3238
  • #16 g_signal_emit
    at gsignal.c line 3386
  • #17 g_settings_real_change_event
    at gsettings.c line 288
  • #18 ffi_call_SYSV
    at ../../../libffi/src/x86/sysv.S line 64
  • #19 ffi_call
    at ../../../libffi/src/x86/ffi.c line 413
  • #20 g_cclosure_marshal_generic_va
    at gclosure.c line 1550
  • #21 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #22 _g_closure_invoke_va
    at gclosure.c line 840
  • #23 g_signal_emit_valist
    at gsignal.c line 3238
  • #24 g_signal_emit
    at gsignal.c line 3386
  • #25 settings_backend_path_changed
    at gsettings.c line 363
  • #26 g_settings_backend_invoke_closure
    at gsettingsbackend.c line 271
  • #27 g_idle_dispatch
  • #28 g_main_dispatch
    at gmain.c line 3066
  • #29 g_main_context_dispatch
    at gmain.c line 3642
  • #30 g_main_context_iterate
    at gmain.c line 3713
  • #31 g_main_loop_run
    at gmain.c line 3907
  • #32 gtk_main
    at gtkmain.c line 1158
  • #33 main
    at main.c line 683

No idea what is going on here. I was on another desktop when it happened AFAIK - just arrived back to see Evo. had gone ...

Other threads quiescent, or checking mail ...
Comment 1 Maciej (Matthew) Piechotka 2013-12-31 14:17:26 UTC
[New LWP 28613]
[New LWP 28565]
[New LWP 28564]
[New LWP 28600]
[New LWP 28598]
[New LWP 28601]
[New LWP 28614]
[New LWP 28587]
[New LWP 28605]
[New LWP 28599]
[New LWP 28586]
[New LWP 28597]
[New LWP 28563]
[New LWP 28606]
[New LWP 28604]
[New LWP 28562]
[New LWP 28596]
[New LWP 28560]
[New LWP 28602]
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `evolution'.
Program terminated with signal 6, Aborted.

Thread 1 (Thread 0x7f6b0bfff700 (LWP 28613))

  • #0 __GI_raise
    at ../nptl/sysdeps/unix/sysv/linux/raise.c line 56
  • #1 __GI_abort
    at abort.c line 90
  • #2 _g_log_abort
    at /var/tmp/portage/dev-libs/glib-2.38.2/work/glib-2.38.2/glib/gmessages.c line 255
  • #3 g_assertion_message
  • #4 g_assertion_message_expr
    at /var/tmp/portage/dev-libs/glib-2.38.2/work/glib-2.38.2/glib/gtestutils.c line 2293
  • #5 g_settings_binding_free
    at /var/tmp/portage/dev-libs/glib-2.38.2/work/glib-2.38.2/gio/gsettings.c line 2328
  • #6 g_datalist_clear
    at /var/tmp/portage/dev-libs/glib-2.38.2/work/glib-2.38.2/glib/gdataset.c line 277
  • #7 g_object_unref
    at /var/tmp/portage/dev-libs/glib-2.38.2/work/glib-2.38.2/gobject/gobject.c line 3197
  • #8 handle_mail_request
    at e-mail-request.c line 216
  • #9 run_in_thread
    at /var/tmp/portage/dev-libs/glib-2.38.2/work/glib-2.38.2/gio/gsimpleasyncresult.c line 871
  • #10 io_job_thread
    at /var/tmp/portage/dev-libs/glib-2.38.2/work/glib-2.38.2/gio/gioscheduler.c line 89
  • #11 g_task_thread_pool_thread
    at /var/tmp/portage/dev-libs/glib-2.38.2/work/glib-2.38.2/gio/gtask.c line 1245
  • #12 g_thread_pool_thread_proxy
    at /var/tmp/portage/dev-libs/glib-2.38.2/work/glib-2.38.2/glib/gthreadpool.c line 309
  • #13 g_thread_proxy
    at /var/tmp/portage/dev-libs/glib-2.38.2/work/glib-2.38.2/glib/gthread.c line 798
  • #14 start_thread
    at pthread_create.c line 308
  • #15 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 113
From                To                  Syms Read   Shared Object Library
                                        No          linux-vdso.so.1
0x00007f6b519e0450  0x00007f6b519f3f00  Yes         /usr/lib64/evolution/3.10/libevolution-shell.so
0x00007f6b516524d0  0x00007f6b51752ecc  Yes         /usr/lib64/evolution/3.10/libevolution-util.so
0x00007f6b513a8bc0  0x00007f6b513d1420  Yes         /usr/lib64/libical.so.0
0x00007f6b51176750  0x00007f6b51181f64  Yes         /lib64/libpthread.so.0
0x00007f6b50ef23e0  0x00007f6b50f3e38c  Yes         /usr/lib64/libedataserver-1.2.so.18
0x00007f6b50ba3f60  0x00007f6b50c5244c  Yes         /usr/lib64/libcamel-1.2.so.45
0x00007f6b4efa4b70  0x00007f6b5006f52c  Yes         /usr/lib64/libwebkitgtk-3.0.so.0
0x00007f6b4e52f820  0x00007f6b4e7dd450  Yes         /usr/lib64/libgtk-3.so.0
0x00007f6b4e17ba60  0x00007f6b4e237934  Yes         /usr/lib64/libgio-2.0.so.0
0x00007f6b4df00860  0x00007f6b4df2e318  Yes         /usr/lib64/libgobject-2.0.so.0
0x00007f6b4dbe4010  0x00007f6b4dc797ac  Yes         /usr/lib64/libglib-2.0.so.0
0x00007f6b4d83e5a0  0x00007f6b4d9699f0  Yes         /lib64/libc.so.6
0x00007f6b4d5c77f0  0x00007f6b4d5fa538  Yes         /usr/lib64/libebackend-1.2.so.7
0x00007f6b4d3317f0  0x00007f6b4d37240c  Yes         /usr/lib64/libgdk-3.so.0
0x00007f6b4d0d6d60  0x00007f6b4d0f52a8  Yes         /usr/lib64/libpango-1.0.so.0
0x00007f6b4ceb36f0  0x00007f6b4cec0090  Yes         /usr/lib64/evolution/3.10/libgnomecanvas.so
0x00007f6b4cc90300  0x00007f6b4cc9ffc8  Yes         /usr/lib64/libebook-1.2.so.14
0x00007f6b4ca69830  0x00007f6b4ca76520  Yes         /usr/lib64/libebook-contacts-1.2.so.0
0x00007f6b4c8234a0  0x00007f6b4c8487e8  Yes         /usr/lib64/libecal-1.2.so.16
0x00007f6b4c5c7f10  0x00007f6b4c5f1548  Yes         /usr/lib64/libsecret-1.so.0
0x00007f6b4c286620  0x00007f6b4c364350  Yes         /usr/lib64/libxml2.so.2
0x00007f6b4c024a20  0x00007f6b4c042980  Yes         /usr/lib64/libgnome-desktop-3.so.8
0x00007f6b4bd8b300  0x00007f6b4bdc6ebc  Yes         /usr/lib64/libsoup-2.4.so.1
0x00007f6b4bb26cf0  0x00007f6b4bb3bf88  Yes         /usr/lib64/libgtkhtml-editor-4.0.so.0
0x00007f6b4b86a640  0x00007f6b4b8d5978  Yes         /usr/lib64/libgtkhtml-4.0.so.0
0x00007f6b4b630190  0x00007f6b4b6349e8  Yes         /usr/lib64/libpangocairo-1.0.so.0
0x00007f6b4b412900  0x00007f6b4b41e0e4  Yes         /usr/lib64/libatk-1.0.so.0
0x00007f6b4b1ebaf0  0x00007f6b4b1fd760  Yes         /usr/lib64/libgdk_pixbuf-2.0.so.0
0x00007f6b4afe2390  0x00007f6b4afe3258  Yes         /usr/lib64/libgmodule-2.0.so.0
0x00007f6b4acd9960  0x00007f6b4ad9ec48  Yes         /usr/lib64/libcairo.so.2
0x00007f6b4a9d46f0  0x00007f6b4aa34cf8  Yes         /lib64/libm.so.6
0x00007f6b51c01b60  0x00007f6b51c1b05a  Yes         /lib64/ld-linux-x86-64.so.2
0x00007f6b4a759990  0x00007f6b4a79d014  Yes         /usr/lib64/libgcr-base-3.so.1
0x00007f6b4a4f8040  0x00007f6b4a521930  Yes         /usr/lib64/libssl3.so
0x00007f6b4a2c8d10  0x00007f6b4a2e006c  Yes         /usr/lib64/libsmime3.so
0x00007f6b49f9ac90  0x00007f6b4a079f34  Yes         /usr/lib64/libnss3.so
0x00007f6b49d4fcf0  0x00007f6b49d6e760  Yes         /usr/lib64/libnspr4.so
0x00007f6b49a91060  0x00007f6b49b1b240  Yes         /usr/lib64/libsqlite3.so.0
0x00007f6b49871810  0x00007f6b4987dd40  Yes         /lib64/libz.so.1
0x00007f6b4966c800  0x00007f6b4966d364  Yes         /lib64/libcom_err.so.2
0x00007f6b49432100  0x00007f6b4945d278  Yes         /usr/lib64/libgssapi_krb5.so.2
0x00007f6b48d46e80  0x00007f6b4913933c  Yes         /usr/lib64/libjavascriptcoregtk-3.0.so.0
0x00007f6b48a1a610  0x00007f6b48a1f2f8  Yes         /usr/lib64/libenchant.so.1
0x00007f6b48814c80  0x00007f6b48815198  Yes         /usr/lib64/libharfbuzz-icu.so.0
0x00007f6b485c8040  0x00007f6b485f9a5c  Yes         /usr/lib64/libharfbuzz.so.0
0x00007f6b483b1ad0  0x00007f6b483b8238  Yes         /usr/lib64/libgeoclue.so.0
0x00007f6b4819f660  0x00007f6b481a4724  Yes         /usr/lib64/libgstapp-1.0.so.0
0x00007f6b47f5fb40  0x00007f6b47f86fc4  Yes         /usr/lib64/libgstaudio-1.0.so.0
0x00007f6b47d37020  0x00007f6b47d45a34  Yes         /usr/lib64/libgstpbutils-1.0.so.0
0x00007f6b47af30d0  0x00007f6b47b156c4  Yes         /usr/lib64/libgstvideo-1.0.so.0
0x00007f6b47898e60  0x00007f6b478cdab0  Yes         /usr/lib64/libgstbase-1.0.so.0
0x00007f6b475b08e0  0x00007f6b47639cec  Yes         /usr/lib64/libgstreamer-1.0.so.0
0x00007f6b473374e0  0x00007f6b4736cb50  Yes         /usr/lib64/libjpeg.so.62
0x00007f6b47104520  0x00007f6b47125448  Yes         /usr/lib64/libxslt.so.1
0x00007f6b46eb0780  0x00007f6b46ee2454  Yes         /usr/lib64/libGL.so.1
0x00007f6b46c94090  0x00007f6b46c94b30  Yes         /lib64/libdl.so.2
0x00007f6b46a5de20  0x00007f6b46a7a0d0  Yes         /usr/lib64/libfontconfig.so.1
0x00007f6b467c0cb0  0x00007f6b46829c88  Yes         /usr/lib64/libfreetype.so.6
0x00007f6b46583ca0  0x00007f6b465a57bc  Yes         /usr/lib64/libpng16.so.16
0x00007f6b46217ce0  0x00007f6b4631ad40  Yes         /usr/lib64/libicui18n.so.51
0x00007f6b45e5b2e0  0x00007f6b45f06eb8  Yes         /usr/lib64/libicuuc.so.51
0x00007f6b45bbfb40  0x00007f6b45bf4f04  Yes         /usr/lib64/libwebp.so.4
0x00007f6b459b4e10  0x00007f6b459b57e8  Yes         /usr/lib64/libXcomposite.so.1
0x00007f6b457b1d60  0x00007f6b457b267c  Yes         /usr/lib64/libXdamage.so.1
0x00007f6b455a7fb0  0x00007f6b455adc68  Yes         /usr/lib64/libXrender.so.1
0x00007f6b45353620  0x00007f6b4538d27c  Yes         /usr/lib64/libXt.so.6
0x00007f6b450213a0  0x00007f6b450a380c  Yes         /usr/lib64/libX11.so.6
0x00007f6b44d58530  0x00007f6b44dbb65a  Yes         /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.2/libstdc++.so.6
0x00007f6b44afacd0  0x00007f6b44afb5c4  Yes         /usr/lib64/libXinerama.so.1
0x00007f6b448f2110  0x00007f6b448f7628  Yes         /usr/lib64/libXrandr.so.2
0x00007f6b446e8070  0x00007f6b446ec9d4  Yes         /usr/lib64/libXcursor.so.1
0x00007f6b444d6190  0x00007f6b444df7a0  Yes         /usr/lib64/libXext.so.6
0x00007f6b442c4920  0x00007f6b442ce604  Yes         /usr/lib64/libXi.so.6
0x00007f6b440bd940  0x00007f6b440bfb88  Yes         /usr/lib64/libXfixes.so.3
0x00007f6b43eb6790  0x00007f6b43eb77cc  Yes (*)     /usr/lib64/libcairo-gobject.so.2
0x00007f6b43c91bc0  0x00007f6b43ca3034  Yes         /usr/lib64/libatk-bridge-2.0.so.0
0x00007f6b43a798a0  0x00007f6b43a80f10  Yes         /usr/lib64/libpangoft2-1.0.so.0
0x00007f6b4385f200  0x00007f6b4386b228  Yes         /lib64/libresolv.so.2
0x00007f6b43654bd0  0x00007f6b43659154  Yes         /usr/lib64/libffi.so.6
0x00007f6b432fee00  0x00007f6b43416ad0  Yes         /usr/lib64/libdb-4.8.so
0x00007f6b430d3180  0x00007f6b430d6a70  Yes         /usr/lib64/libgailutil-3.so.0
0x00007f6b42ea6190  0x00007f6b42ebebc8  Yes         /usr/lib64/libedata-book-1.2.so.20
0x00007f6b42bc1d00  0x00007f6b42c5ed48  Yes         /usr/lib64/libgcrypt.so.20
0x00007f6b42997e50  0x00007f6b429abc40  Yes         /lib64/liblzma.so.5
0x00007f6b42775700  0x00007f6b4278cd14  Yes         /usr/lib64/libxkbfile.so.1
0x00007f6b4256a8a0  0x00007f6b4256d69c  Yes         /lib64/librt.so.1
0x00007f6b422da1b0  0x00007f6b42351930  Yes         /usr/lib64/libpixman-1.so.0
0x00007f6b420b6930  0x00007f6b420c5e8c  Yes         /usr/lib64/libEGL.so.1
0x00007f6b41eaefb0  0x00007f6b41eaf834  Yes         /usr/lib64/libxcb-shm.so.0
0x00007f6b41ca7ed0  0x00007f6b41caa990  Yes         /usr/lib64/libxcb-render.so.0
0x00007f6b41a8ec90  0x00007f6b41a9ab88  Yes         /usr/lib64/libxcb.so.1
0x00007f6b41856700  0x00007f6b41873638  Yes         /usr/lib64/libgck-1.so.0
0x00007f6b41617d10  0x00007f6b4163192c  Yes         /usr/lib64/libp11-kit.so.0
0x00007f6b413e9e10  0x00007f6b413f7a84  Yes         /usr/lib64/libnssutil3.so
0x00007f6b411d9910  0x00007f6b411daf18  Yes         /usr/lib64/libplc4.so
0x00007f6b40fd52d0  0x00007f6b40fd6168  Yes         /usr/lib64/libplds4.so
0x00007f6b40d2d1b0  0x00007f6b40d7cdd8  Yes         /usr/lib64/libkrb5.so.3
0x00007f6b40ad8ee0  0x00007f6b40af6310  Yes         /usr/lib64/libk5crypto.so.3
0x00007f6b408cc4b0  0x00007f6b408d0ac8  Yes         /usr/lib64/libkrb5support.so.0
0x00007f6b406c63c0  0x00007f6b406c6ccc  Yes         /lib64/libkeyutils.so.1
0x00007f6b3ef795e0  0x00007f6b3ef796c8  Yes (*)     /usr/lib64/libicudata.so.51
0x00007f6b3ed65ac0  0x00007f6b3ed74da8  Yes         /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.2/libgcc_s.so.1
0x00007f6b3eb47cf0  0x00007f6b3eb5a398  Yes         /usr/lib64/libgraphite2.so.3
0x00007f6b3e927b20  0x00007f6b3e939204  Yes         /usr/lib64/libdbus-glib-1.so.2
0x00007f6b3e6edef0  0x00007f6b3e70a114  Yes         /usr/lib64/libgsttag-1.0.so.0
0x00007f6b3e46e790  0x00007f6b3e4bafe0  Yes         /usr/lib64/liborc-0.4.so.0
0x00007f6b3e241fe0  0x00007f6b3e24aa50  Yes         /usr/lib64/libglapi.so.0
0x00007f6b3e037670  0x00007f6b3e03777c  Yes         /usr/lib64/libX11-xcb.so.1
0x00007f6b3de29fa0  0x00007f6b3de2feb8  Yes         /usr/lib64/libxcb-glx.so.0
0x00007f6b3dc1ad10  0x00007f6b3dc1ba28  Yes         /usr/lib64/libxcb-dri2.so.0
0x00007f6b3da141d0  0x00007f6b3da16988  Yes         /usr/lib64/libXxf86vm.so.1
0x00007f6b3d80ade0  0x00007f6b3d80fb54  Yes         /usr/lib64/libdrm.so.2
0x00007f6b3d5e1360  0x00007f6b3d5f9ecc  Yes         /usr/lib64/libexpat.so.1
0x00007f6b3d3ce990  0x00007f6b3d3da5a0  Yes         /lib64/libbz2.so.1
0x00007f6b3d1c6080  0x00007f6b3d1c9f70  Yes         /usr/lib64/libSM.so.6
0x00007f6b3cfadaf0  0x00007f6b3cfba63c  Yes         /usr/lib64/libICE.so.6
0x00007f6b3cd8ab00  0x00007f6b3cd99b98  Yes         /usr/lib64/libatspi.so.0
0x00007f6b3cb44bd0  0x00007f6b3cb677c4  Yes         /usr/lib64/libdbus-1.so.3
0x00007f6b3c937b40  0x00007f6b3c938198  Yes         /usr/lib64/libgpg-error.so.0
0x00007f6b3c731e00  0x00007f6b3c733880  Yes         /usr/lib64/libxcb-xfixes.so.0
0x00007f6b3c52acf0  0x00007f6b3c52c148  Yes         /usr/lib64/libgbm.so.1
0x00007f6b3c31ad90  0x00007f6b3c323512  Yes         /usr/lib64/libudev.so.1
0x00007f6b3c114050  0x00007f6b3c114c6c  Yes         /usr/lib64/libXau.so.6
0x00007f6b3bf0e6b0  0x00007f6b3bf0ff48  Yes         /usr/lib64/libXdmcp.so.6
0x00007f6b3bd09790  0x00007f6b3bd0abb0  Yes         /lib64/libuuid.so.1
0x00007f6b3544de50  0x00007f6b35459d38  Yes         /usr/lib64/gio/modules/libgioremote-volume-monitor.so
0x00007f6b3523e1f0  0x00007f6b35242600  Yes         /usr/lib64/gio/modules/libdconfsettings.so
0x00007f6b35014610  0x00007f6b3502d868  Yes         /usr/lib64/gio/modules/libgvfsdbus.so
0x00007f6b34dde7a0  0x00007f6b34df53a8  Yes         /usr/lib64/libgvfscommon.so.0
0x00007f6b343c5ce0  0x00007f6b343c7204  Yes         /usr/lib64/gtk-3.0/3.0.0/theming-engines/libadwaita.so
0x00007f6b341bf470  0x00007f6b341c1400  Yes         /usr/lib64/gtk-3.0/modules/libcanberra-gtk-module.so
0x00007f6b2fdfd040  0x00007f6b2fdfe460  Yes         /usr/lib64/libcanberra-gtk3.so.0
0x00007f6b2fbf9730  0x00007f6b2fbf989c  Yes         /usr/lib64/libgthread-2.0.so.0
0x00007f6b2f9ec5a0  0x00007f6b2f9f416c  Yes         /usr/lib64/libcanberra.so.0
0x00007f6b2f7e24b0  0x00007f6b2f7e65ac  Yes         /usr/lib64/libvorbisfile.so.3
0x00007f6b2f5b6f00  0x00007f6b2f5cdab0  Yes         /usr/lib64/libvorbis.so.0
0x00007f6b2f3adec0  0x00007f6b2f3b04e8  Yes         /usr/lib64/libogg.so.0
0x00007f6b2f1a4a10  0x00007f6b2f1a8b88  Yes         /usr/lib64/libltdl.so.7
0x00007f6b2d783ec0  0x00007f6b2d796578  Yes         /usr/lib64/evolution-data-server/camel-providers/libcamellocal.so
0x00007f6b2d577e40  0x00007f6b2d578088  Yes         /usr/lib64/evolution-data-server/camel-providers/libcamelimapx.so
0x00007f6b2d370af0  0x00007f6b2d373df8  Yes         /usr/lib64/evolution-data-server/camel-providers/libcamelsmtp.so
0x00007f6b2d168b00  0x00007f6b2d16a2f0  Yes         /usr/lib64/evolution-data-server/camel-providers/libcamelsendmail.so
0x00007f6b2cf58ee0  0x00007f6b2cf61658  Yes         /usr/lib64/evolution-data-server/camel-providers/libcamelnntp.so
0x00007f6b2cd45020  0x00007f6b2cd4bfbc  Yes         /usr/lib64/evolution-data-server/camel-providers/libcamelpop3.so
0x00007f6b2cb2a010  0x00007f6b2cb37040  Yes         /usr/lib64/evolution/3.10/modules/module-itip-formatter.so
0x00007f6b2c846650  0x00007f6b2c8e2a58  Yes         /usr/lib64/evolution/3.10/libevolution-calendar.so
0x00007f6b2c574600  0x00007f6b2c5d971c  Yes         /usr/lib64/evolution/3.10/libevolution-mail.so
0x00007f6b2c314470  0x00007f6b2c329e10  Yes         /usr/lib64/evolution/3.10/libevolution-mail-formatter.so
0x00007f6b2c0ddb70  0x00007f6b2c0f532c  Yes         /usr/lib64/evolution/3.10/libemail-engine.so
0x00007f6b1fde46e0  0x00007f6b1fdf5b54  Yes         /usr/lib64/evolution/3.10/libevolution-mail-composer.so
0x00007f6b1fbc9a30  0x00007f6b1fbce70c  Yes         /usr/lib64/evolution/3.10/libevolution-smime.so
0x00007f6b1f9b6dc0  0x00007f6b1f9bbcd4  Yes         /usr/lib64/evolution/3.10/libessmime.so
0x00007f6b1f77c4f0  0x00007f6b1f79eb20  Yes         /usr/lib64/evolution/3.10/libecontacteditor.so
0x00007f6b1f55d110  0x00007f6b1f561adc  Yes         /usr/lib64/evolution/3.10/libecontactlisteditor.so
0x00007f6b1f353620  0x00007f6b1f353e28  Yes         /usr/lib64/evolution/3.10/libeabutil.so
0x00007f6b1f14e1c0  0x00007f6b1f14f7ac  Yes         /usr/lib64/evolution/3.10/modules/module-backup-restore.so
0x00007f6b1ef475c0  0x00007f6b1ef48330  Yes         /usr/lib64/evolution/3.10/modules/module-audio-inline.so
0x00007f6b1ed14a40  0x00007f6b1ed32b78  Yes         /usr/lib64/evolution/3.10/modules/module-addressbook.so
0x00007f6b1eaf4530  0x00007f6b1eaf89f4  Yes         /usr/lib64/evolution/3.10/libevolution-addressbook-importers.so
0x00007f6b1e8eb320  0x00007f6b1e8ec9c0  Yes         /usr/lib64/evolution/3.10/modules/module-prefer-plain.so
0x00007f6b1e6e6980  0x00007f6b1e6e6ba4  Yes         /usr/lib64/evolution/3.10/modules/module-book-config-local.so
0x00007f6b1e4e35d0  0x00007f6b1e4e4348  Yes         /usr/lib64/evolution/3.10/modules/module-cal-config-local.so
0x00007f6b1e2df090  0x00007f6b1e2df464  Yes         /usr/lib64/evolution/3.10/modules/module-book-config-google.so
0x00007f6b1e0d92e0  0x00007f6b1e0db250  Yes         /usr/lib64/evolution/3.10/modules/module-startup-wizard.so
0x00007f6b1ded1d60  0x00007f6b1ded2774  Yes         /usr/lib64/evolution/3.10/modules/module-gravatar.so
0x00007f6b1dcce020  0x00007f6b1dcce5c4  Yes         /usr/lib64/evolution/3.10/modules/module-offline-alert.so
0x00007f6b1dac4d20  0x00007f6b1dac8df0  Yes         /usr/lib64/evolution/3.10/modules/module-cal-config-caldav.so
0x00007f6b1d8bbf10  0x00007f6b1d8bc3b0  Yes         /usr/lib64/libsoup-gnome-2.4.so.1
0x00007f6b1d6b7700  0x00007f6b1d6b89b4  Yes         /usr/lib64/evolution/3.10/modules/module-contact-photos.so
0x00007f6b1d4871b0  0x00007f6b1d4a231c  Yes         /usr/lib64/evolution/3.10/modules/module-calendar.so
0x00007f6b1d2688a0  0x00007f6b1d26b834  Yes         /usr/lib64/evolution/3.10/libevolution-calendar-importers.so
0x00007f6b1d055310  0x00007f6b1d05b7e8  Yes         /usr/lib64/libicalvcal.so.0
0x00007f6b1ce27370  0x00007f6b1ce401b0  Yes         /usr/lib64/evolution/3.10/modules/module-vcard-inline.so
0x00007f6b1cc11380  0x00007f6b1cc120e4  Yes         /usr/lib64/evolution/3.10/modules/module-cal-config-weather.so
0x00007f6b1c9f5d30  0x00007f6b1ca03d10  Yes         /usr/lib64/libgweather-3.so.6
0x00007f6b1c7e2300  0x00007f6b1c7e6384  Yes         /usr/lib64/evolution/3.10/modules/module-settings.so
0x00007f6b1c5dad30  0x00007f6b1c5dbf04  Yes         /usr/lib64/evolution/3.10/modules/module-mdn.so
0x00007f6b1c3bbe70  0x00007f6b1c3cc2b0  Yes         /usr/lib64/evolution/3.10/modules/module-mail.so
0x00007f6b1c1a1b20  0x00007f6b1c1a41d4  Yes         /usr/lib64/evolution/3.10/libevolution-mail-importers.so
0x00007f6b1bf9a140  0x00007f6b1bf9af14  Yes         /usr/lib64/evolution/3.10/modules/module-cal-config-contacts.so
0x00007f6b1bd911a0  0x00007f6b1bd9505c  Yes         /usr/lib64/evolution/3.10/modules/module-mail-config.so
0x00007f6b1bb8ad30  0x00007f6b1bb8b300  Yes         /usr/lib64/evolution/3.10/modules/module-plugin-lib.so
0x00007f6b1b986b90  0x00007f6b1b987d44  Yes         /usr/lib64/evolution/3.10/modules/module-plugin-manager.so
0x00007f6b1b7818f0  0x00007f6b1b782034  Yes         /usr/lib64/evolution/3.10/modules/module-mailto-handler.so
0x00007f6b1b57df80  0x00007f6b1b57e344  Yes         /usr/lib64/evolution/3.10/modules/module-web-inspector.so
0x00007f6b1b37a880  0x00007f6b1b37ae84  Yes         /usr/lib64/evolution/3.10/modules/module-book-config-webdav.so
0x00007f6b1b172b40  0x00007f6b1b175b64  Yes         /usr/lib64/evolution/3.10/modules/module-book-config-ldap.so
0x00007f6b1af33330  0x00007f6b1af5d280  Yes         /usr/lib64/libldap-2.4.so.2
0x00007f6b1ad17fe0  0x00007f6b1ad1ede4  Yes         /usr/lib64/liblber-2.4.so.2
0x00007f6b1aabff00  0x00007f6b1aaf9f30  Yes         /usr/lib64/libssl.so.1.0.0
0x00007f6b1a73a1c0  0x00007f6b1a81c638  Yes         /usr/lib64/libcrypto.so.1.0.0
0x00007f6b1a4cc150  0x00007f6b1a4ce8e0  Yes         /usr/lib64/evolution/3.10/modules/module-cal-config-google.so
0x00007f6b1a22f230  0x00007f6b1a289adc  Yes         /usr/lib64/libgdata.so.13
0x00007f6b1a00ac90  0x00007f6b1a00d33c  Yes         /usr/lib64/liboauth.so.0
0x00007f6b19ddb2f0  0x00007f6b19df7b14  Yes         /usr/lib64/libgoa-1.0.so.0
0x00007f6b19bca820  0x00007f6b19bcae14  Yes         /usr/lib64/evolution/3.10/modules/module-cal-config-webcal.so
0x00007f6b199c6180  0x00007f6b199c6eb4  Yes         /usr/lib64/evolution/3.10/modules/module-bogofilter.so
0x00007f6b197c03c0  0x00007f6b197c1d74  Yes         /usr/lib64/evolution/3.10/modules/module-composer-autosave.so
0x00007f6b1957dc40  0x00007f6b195aa06c  Yes         /usr/lib64/libsoftokn3.so
0x00007f6b19302580  0x00007f6b19353470  Yes         /usr/lib64/libfreebl3.so
0x00007f6b19082a40  0x00007f6b190913d0  Yes         /usr/lib64/libnssckbi.so
0x00007f6b113920c0  0x00007f6b11393a0c  Yes         /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so
0x00007f6b111886e0  0x00007f6b1118d254  Yes         /lib64/libnss_compat.so.2
0x00007f6b10f73ca0  0x00007f6b10f7f1f4  Yes         /lib64/libnsl.so.1
0x00007f6b10d66720  0x00007f6b10d6c6c4  Yes         /lib64/libnss_nis.so.2
0x00007f6b10b597e0  0x00007f6b10b60b48  Yes         /lib64/libnss_files.so.2
0x00007f6b10151300  0x00007f6b10154158  Yes         /lib64/libnss_dns.so.2
0x00007f6b085f4f10  0x00007f6b085f6f1c  Yes         /usr/lib64/enchant/libenchant_myspell.so
0x00007f6b083a9a00  0x00007f6b083cbe80  Yes         /usr/lib64/libhunspell-1.3.so.0
0x00007f6b0819b980  0x00007f6b0819ceb0  Yes         /usr/lib/nsbrowser/plugins/libgnome-shell-browser-plugin.so
0x00007f6af05dcca0  0x00007f6af05ee640  Yes         /usr/lib64/libjson-glib-1.0.so.0
0x00007f6af0391b40  0x00007f6af03c0556  Yes (*)     /opt/google/talkplugin/libnpgoogletalk.so
0x00007f6acb2353e0  0x00007f6acb47dbd0  Yes         /usr/lib64/libgtk-x11-2.0.so.0
0x00007f6af00ec560  0x00007f6af014053c  Yes         /usr/lib64/libgdk-x11-2.0.so.0
0x00007f6aca9825d0  0x00007f6acadcf186  Yes (*)     /opt/google/talkplugin/libnpgtpo3dautoplugin.so
0x00007f6b08048d60  0x00007f6b0807c6c8  Yes (*)     /opt/google/talkplugin/lib/libCgGL.so
0x00007f6aca016d90  0x00007f6aca3029c8  Yes (*)     /opt/google/talkplugin/lib/libCg.so
0x00007f6ac87f4530  0x00007f6ac95282d8  Yes (*)     /usr/lib/nsbrowser/plugins/libflashplayer.so
0x00007f6ac8408000  0x00007f6ac8431066  Yes (*)     /opt/google/talkplugin/libnpo1d.so
0x00007f6ac81f9b00  0x00007f6ac81faa88  Yes         /usr/lib64/gio/modules/libgiognomeproxy.so
0x00007f6a83df7670  0x00007f6a83df892c  Yes         /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.so
0x00007f6a83bf3a00  0x00007f6a83bf440c  Yes         /usr/lib64/pango/1.8.0/modules/pango-basic-fc.so
0x00007f6a839ed460  0x00007f6a839ef81c  Yes         /usr/lib64/evolution/3.10/plugins/liborg-gnome-mail-to-task.so
0x00007f6a837e4ff0  0x00007f6a837e581c  Yes         /usr/lib64/evolution/3.10/plugins/liborg-gnome-mailing-list-actions.so
0x00007f6a835dd600  0x00007f6a835e028c  Yes         /usr/lib64/evolution/3.10/plugins/liborg-gnome-templates.so
0x00007f6b099f6e40  0x00007f6b099f838c  Yes         /usr/lib64/evolution/3.10/plugins/liborg-gnome-mail-notification.so
0x00007f6b08df4d10  0x00007f6b08df6f90  Yes         /usr/lib64/libnotify.so.4
(*): Shared library is missing debugging information.
$1 = 0x0
$2 = 0x7f6b0c00df50 "GLib-GIO:ERROR:/var/tmp/portage/dev-libs/glib-2.38.2/work/glib-2.38.2/gio/gsettings.c:2328:g_settings_binding_free: assertion failed: (!binding->running)"
rax            0x0	0
rbx            0x7f6b0c00e030	140097739612208
rcx            0xffffffffffffffff	-1
rdx            0x6	6
rsi            0x6fc5	28613
rdi            0x6f90	28560
rbp            0x7f6b4def3360	0x7f6b4def3360 <__glib_assert_msg>
rsp            0x7f6b0bffe9c8	0x7f6b0bffe9c8
r8             0x0	0
r9             0x20	32
r10            0x8	8
r11            0x206	518
r12            0x9a	154
r13            0x7f6b4e237978	140098849175928
r14            0x7f6b4e255b68	140098849299304
r15            0x185571a	25515802
rip            0x7f6b4d854239	0x7f6b4d854239 <__GI_raise+57>
eflags         0x206	[ PF IF ]
cs             0x33	51
ss             0x2b	43
ds             0x0	0
es             0x0	0
fs             0x0	0
gs             0x0	0
Dump of assembler code for function __GI_raise:
   0x00007f6b4d854200 <+0>:	mov    %fs:0x2d4,%eax
   0x00007f6b4d854208 <+8>:	mov    %eax,%ecx
   0x00007f6b4d85420a <+10>:	mov    %fs:0x2d0,%esi
   0x00007f6b4d854212 <+18>:	test   %esi,%esi
   0x00007f6b4d854214 <+20>:	jne    0x7f6b4d854248 <__GI_raise+72>
   0x00007f6b4d854216 <+22>:	mov    $0xba,%eax
   0x00007f6b4d85421b <+27>:	syscall 
   0x00007f6b4d85421d <+29>:	mov    %eax,%ecx
   0x00007f6b4d85421f <+31>:	mov    %eax,%fs:0x2d0
   0x00007f6b4d854227 <+39>:	mov    %eax,%esi
   0x00007f6b4d854229 <+41>:	movslq %edi,%rdx
   0x00007f6b4d85422c <+44>:	movslq %esi,%rsi
   0x00007f6b4d85422f <+47>:	movslq %ecx,%rdi
   0x00007f6b4d854232 <+50>:	mov    $0xea,%eax
   0x00007f6b4d854237 <+55>:	syscall 
=> 0x00007f6b4d854239 <+57>:	cmp    $0xfffffffffffff000,%rax
   0x00007f6b4d85423f <+63>:	ja     0x7f6b4d85425a <__GI_raise+90>
   0x00007f6b4d854241 <+65>:	repz retq 
   0x00007f6b4d854243 <+67>:	nopl   0x0(%rax,%rax,1)
   0x00007f6b4d854248 <+72>:	test   %eax,%eax
   0x00007f6b4d85424a <+74>:	jg     0x7f6b4d854229 <__GI_raise+41>
   0x00007f6b4d85424c <+76>:	mov    %eax,%ecx
   0x00007f6b4d85424e <+78>:	neg    %ecx
   0x00007f6b4d854250 <+80>:	test   $0x7fffffff,%eax
   0x00007f6b4d854255 <+85>:	cmove  %esi,%ecx
   0x00007f6b4d854258 <+88>:	jmp    0x7f6b4d854229 <__GI_raise+41>
   0x00007f6b4d85425a <+90>:	mov    0x36cbf7(%rip),%rdx        # 0x7f6b4dbc0e58
   0x00007f6b4d854261 <+97>:	neg    %eax
   0x00007f6b4d854263 <+99>:	mov    %eax,%fs:(%rdx)
   0x00007f6b4d854266 <+102>:	or     $0xffffffffffffffff,%rax
   0x00007f6b4d85426a <+106>:	retq   
End of assembler dump.
Comment 2 Milan Crha 2014-02-06 17:36:23 UTC
Thanks for a bug report. It would be interesting to get a reproducer for this, because it seems to me quite odd, maybe a memory corruption after certain set of actions or "the correct timing" being involved here.

The second backtrace calls g_object_unref (formatter); at e-mail-request.c
line 216, thus I agree the two may be related. The first backtrace seem to get a notification on a "citation-color" key change, while the object of 'formatter' is having the last reference, thus it's unreffed and finalized, still inside the g_settings_binding_key_changed(), which may, from my point of view, raise the assertion.

Evolution doesn't free bindings on its own, they are usually kept untouched until respective objects are freed, thus this can be, partially, g_settings_binding issue, not doing proper object reference holding. It's only a guess, I'll try to prove or disprove the idea.
Comment 3 Milan Crha 2014-02-06 18:04:18 UTC
Created attachment 268319 [details]
minimal test.c

This is a minimal test program to reproduce the crash. The trick is that I added a 1.4 second sleep into listener_set_value(), thus the unref_in_thread() has a chance to unref the listener (from another than the main thread) before the code under settings_backend_changed at gsettings.c:348 or g_settings_binding_key_changed at gsettings.c:2418
is over, which triggers the assertion.

I believe the solution comes to g_settings_binding_key_changed(), or basically anything that touches `binding->running`, to ref corresponding objects before it sets the binding->running to TRUE, and unref it only after the binding->running is returned back to FALSE.
Comment 4 Allison Karlitskaya (desrt) 2014-02-06 21:59:07 UTC
I'm inclined to WONTFIX this...

I don't think GSettings bindings were ever intended to be used from multiple threads at the same time.  That was never documented, of course, so maybe we should do that at least...
Comment 5 Maciej (Matthew) Piechotka 2014-02-07 08:36:20 UTC
(In reply to comment #4)
> I'm inclined to WONTFIX this...
> 
> I don't think GSettings bindings were ever intended to be used from multiple
> threads at the same time.  That was never documented, of course, so maybe we
> should do that at least...

I guess you mean move back to Evolution as it's using the GSettings bindings from multiple threads.
Comment 6 Milan Crha 2014-02-07 09:05:01 UTC
No, Evolution doesn't _use_ GSettings bindings from multiple threads. It creates an object in one thread, this object installs its GSetting bindings during its creation, then it unrefs this object in the same thread where it created it. It's the GSetting binding itself jumping into the main loop and doing stuff _in the other thread_.

I'm afraid that not making GSettings bindings thread safe is the same as simply dropping it from GLib, because having a constraint like this, to actually use GSettings bindings exclusively from the main thread, like it being a UI/gtk-related object, makes it effectively useless for any bigger applications, like Evolution is.
Comment 7 Allison Karlitskaya (desrt) 2014-02-07 09:14:23 UTC
There is absolutely no special-casing of the global default main context in GSettings.

Are you creating the binding from the same thread that you created the GSettings from?  GSettings will always dispatch change notifications (including for bindings) from the thread running the main context under which it was created (as is the convention)...
Comment 8 Milan Crha 2014-02-07 09:29:41 UTC
Here [1] is the object created, and here [2] it is killed, the same file, the same function, the same thread. This function is run by g_simple_async_result_run_in_thread() more lines below. The object itself creates its GSettings binding here [3], which, I agree, is awfully hidden in the background under "extensions", which are run during the object's GObject::constructed method. We do not push our own thread default context
at [1], because that would break other things around (it did in other request handler in the past). The thing is that there is not much control about the bindings, being hidden under custom extensions, or added directly during the object creation).

Does GSettings binding use GBindings in the background? If yes, does it mean it is also affected by the thread unsafety? I've a feeling (but no prove) that GBindings are thread safe.

[1] https://git.gnome.org/browse/evolution/tree/mail/e-mail-request.c#n115
[2] https://git.gnome.org/browse/evolution/tree/mail/e-mail-request.c#n215
[3] https://git.gnome.org/browse/evolution/tree/modules/settings/e-settings-mail-formatter.c#n68
Comment 9 Allison Karlitskaya (desrt) 2014-02-07 14:51:24 UTC
(In reply to comment #8)
> We do not push our own thread default context
> at [1], because that would break other things around (it did in other request
> handler in the past).

You must do this, or everything will dispatch via the default main context and then you will have bugs like this one.

> Does GSettings binding use GBindings in the background? If yes, does it mean it
> is also affected by the thread unsafety? I've a feeling (but no prove) that
> GBindings are thread safe.

GSettings does not use GObject property bindings and the same issues are not at play here.  GSettings brings its own event dispatch mechanism, whereas with GObject it depends on the thread that the source object fires its "notify" signal from.
Comment 10 Phillip Wood 2014-02-19 16:04:43 UTC
I was caught out by this in sound-juicer a few months ago where I was creating the GSettings object, bound object and binding then using the bound object and freeing it and the settings object all in the same thread which wasn't the default thread for the main context. GIO was new to me and it would have been helpful if the documentation had included something along the lines of (assuming I've understood correctly)

"The bound property will be updated from the thread running the main context of the thread that created the GSettings object. If a program accesses the bound object from another thread then the object should implement the appropriate locking or atomic access for all accesses to the resources associated with the bound property. Furthermore the bound object must be freed in the thread running the main context of the thread that created the GSettings object to prevent the binding from trying to update the bound property after the bound object has been freed."

It might also be nice to mention that the locking the property may block the main loop and so it might be a good idea to create a new main context for the bindings.

In cases where it's not possible to determine where the last reference to the bound object will be dropped it would be interesting to compare the cost of always acquiring the main context for unreferencing the bound object vs using GWeakRef in g_settings_bind. The latter would certainly be easier for application programmers.
Comment 11 GNOME Infrastructure Team 2018-05-24 16:10:32 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to GNOME's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.gnome.org/GNOME/glib/issues/806.