GNOME Bugzilla – Bug 676679
Fix random deadlock/timeout
Last modified: 2016-03-31 13:58:16 UTC
UnattendedInstaller calls Bus.get_proxy_sync in the class constructor. This can cause deadlocks, because it is called with the class_init recursive mutex held, and the sync dbus call is run by another thread that may create gobjects which will cause a deadlock when it also needs the class_init mutex.
Created attachment 214805 [details] [review] Avoid deadlock during startup UnattendedInstaller was doing a sync dbus call in the class initializer. This is a no-no in GObject because the class initializer is called with a recursive lock held, and the dbus call will wait for the dbus thread to reply, but the dbus thread may create a GObject and thus need the class_init lock, which causes a deadlock.
Review of attachment 214805 [details] [review]: ack