GNOME Bugzilla – Bug 679009
SourceRegistry new hangs
Last modified: 2013-09-05 03:41:15 UTC
In folks eds backend unit tests the SourceRegistry new method (both async and sync) are hanging sometimes. I have 29 unit tests and at least one hangs every time (different ones each time).
On further debugging I found that the evolution-source-registry is not running when it hangs, but is running for the unit tests that work. Maybe something is wrong with the dbus activation.
Thanks for a bug report. I used to get crash of evolution with "Timeout was reached" during evolution-source-registry process activation too, but it was rather rare. I do not recall when I saw it the last time (might be because I do not restart all processes that often and that much these days). This is with current git master, basically after 3.5.91 release. By the way, can be because of DBus timing? Like you invoke close of the registry process on your test end, which DBus comes to do, but you try to start a new registry process while the previous one is not fully unregistered on the DBus, thus is tries to reuse that one and it fails afterwards? I would try to put some sleep(2); between your unit tests, just for a test whether it's caused outside of evolution or not.
This sounds a lot like bug 683519. There's a deadlock scenario still at large in GObject. I worked around it for the time being in: http://git.gnome.org/browse/evolution-data-server/commit/?id=6c4c1c6a1f40a6873be954a0b9d770e31726bd50
Would it make sense to mimic g_type_ensure(), rather than this ref & unref call? > g_type_class_unref (g_type_class_ref (type)) I did so for the webkit view type recently, because the ref/unref also calls class finalization, which may have certain side-effects.
Closing this as FIXED per comment 3. Haven't received any other reports of ESourceRegistry hanging.