GNOME Bugzilla – Bug 708166
Update EClient properties on idle after GDBusProxy notify
Last modified: 2014-10-20 18:43:12 UTC
* Open Evolution via command and setup Google account * Open "Contacts" section * Prepare valid photos "/tmp/photo.jpg" and "/tmp/logo.jpg" * Create a new contact in Google addressbook with "/tmp/logo.jpg" photo * Refresh addressbook * Set contact picture to "/tmp/photo.jpg" * Save the contact and in resize dialog select "Resize" evolution-addressbook-factory crashes
+ Trace 232491
Thread 1 (Thread 0x7fede211e840 (LWP 22171))
Reproduced on evolution 3.9.92
Installing debug symbols for glib2 highly welcome, to get a better stacktrace.
Reproduced on evolution-3.11.1-1.fc21: Program terminated with signal SIGSEGV, Segmentation fault.
+ Trace 232695
Thread 1 (Thread 0x7f485c1dea40 (LWP 13519))
I believe this is just another variant of the crash. The problem is that the Thread 13 does GTK+ calls in a dedicated thread, not in the main thread.
+ Trace 234240
Thread 13 (Thread 0x7f14d27dc700 (LWP 5397))
By the way, the initial crash happened in the evolution-addressbook-factory, while the other two in the evolution itself. I believe the initial crash is fixed now, within bug #725045, thus let's keep this for the evolution crash.
More investigation showed that this might not be anything new. The GObject::notify signal is delivered synchronously (like any other GObject signal) and because we changed the property in the GDBus' thread then the UI which was listening for the signal was invoked as well. Update EClient properties after GDBusProxy property change notifications on idle fixes the issue. (The only question is what else will break, if any code expects these notifications being propagated into EClient immediately; but it might be okay, because the GDBusProxy notifications are fully asynchronous, initiated by the server side, unexpected by the client). Created commit 1281d31 in eds master (3.13.7+) [1] Created commit 20b0a18 in eds evolution-data-server-3-12 (3.12.8+) [2] [1] https://git.gnome.org/browse/evolution-data-server/commit/?id=1281d31 [2] https://git.gnome.org/browse/evolution-data-server/commit/?id=20b0a18