GNOME Bugzilla – Bug 726733
Deadlock when multiple threads call g_dbus_connection_get_type()
Last modified: 2015-05-05 15:00:05 UTC
I'm seeing this crash from time to time on Fedora 20, with gnome-contacts-3.10.1-1.fc20, but it apparently occured with 3.6.2 too (see stacktrace). https://bugzilla.redhat.com/show_bug.cgi?id=881598 warning: core file may not match specified executable file. [New LWP 19054] [New LWP 19055] [New LWP 19056] warning: "/usr/lib/debug/usr/lib64/libcairo-gobject.so.2.11200.8.debug": separate debug info file has no debug info [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". warning: "/usr/lib/debug/usr/lib64/libicudata.so.49.1.1.debug": separate debug info file has no debug info Core was generated by `/usr/libexec/gnome-contacts-search-provider'. Program terminated with signal 5, Trace/breakpoint trap.
+ Trace 233368
Thread 1 (Thread 0x7fea08e12980 (LWP 19054))
Seems like this needs investigation. Milan - it might help if you could say if this is still happening for you.
This was proposed as a F22 blocker since the crash sometimes occurs when the system is started for the first time. Adding Milan to CC since evolution-data-server is implicated. The fatal error is "contacts_ensure_eds_accounts: Error calling StartServiceByName for org.gnome.evolution.dataserver.Sources4: Timeout was reached"
+ Trace 235013
Get backtrace of the evolution-source-registry. If I recall correctly, I see from time to time a deadlock in GLib's GOnce, one thread waiting for something from another thread (dconf relate in my case), which I do not think evolution-data-server can influence by any means.
(In reply to Michael Catanzaro from comment #2) > This was proposed as a F22 blocker since the crash sometimes occurs when the > system is started for the first time. Adding Milan to CC since > evolution-data-server is implicated. The fatal error is > "contacts_ensure_eds_accounts: Error calling StartServiceByName for > org.gnome.evolution.dataserver.Sources4: Timeout was reached" Actually, that's not even eds' fault. That's something related with the installation of the services files and the visibility those get from dbus. I've had that error thousands of time on my development environment. Anyhow, does this still happens?
It was reported in 3.16.0, so it's probably still happening.
Pushed commit 71d02aa. This one should mitigate the crash, at least. The underlying problem of Contacts not being able to connect to eds should be still there, but that's not our responsibility. I'll keep the bug open until we hear any updates on this
Moving to glib based on the following comment from Milan in the downstream bug: "Backtrace of the locked source registry. This is with glib2-2.42.2-1.fc21.x86_64:
+ Trace 235034
Thread 2 (Thread 0x7f9d952e4700 (LWP 2081))
Thread 1 (Thread 0x7f9d9baa2a00 (LWP 2080))
Both threads are calling g_dbus_connection_get_type () at gdbusconnection.c:538 each in a different deep level of the call. I would move this into glib2, because both threads are out of hands for any application. This is the deadlock in the glib2."
The workaround is to do g_type_ensure (G_TYPE_DBUS_CONNECTION); in main(). Maybe we should just do that from _g_io_modules_ensure_loaded() or something until we fix the real bug... *** This bug has been marked as a duplicate of bug 674885 ***
I pushed the suggested workaround into evolution-data-server sources: Created commit_fe7affe in eds master (3.17.1+) [1] Created commit_ebd0142 in eds gnome-3-16 (3.16.2+) [1] https://git.gnome.org/browse/evolution-data-server/commit/?id=fe7affe
(In reply to Milan Crha from comment #9) > Created commit_fe7affe in eds master (3.17.1+) [1] Oops, 3.17.2+