GNOME Bugzilla – Bug 728777
bus: Holding object lock while unreffing messages can cause deadlocks
Last modified: 2015-04-23 13:03:54 UTC
When trying to play a NUT file, an error is thrown on the command-line, but the whole UI hangs: http://samples.mplayerhq.hu/nut/
and CPU usage goes to 100% My gdb doesn't seem to be happy enough to get more info "Couldn't get registers: No such process." when hitting ctl-c :-/
Seems to be a problem with GStreamer 1.4.x, doesn't happen with the 1.5 branch:
+ Trace 234836
That's an interesting bug! Flushing the bus takes the bus lock and frees a message, which then frees decodebin, which then posts a message on the exact same bus, trying to take the lock again.
Created attachment 299315 [details] [review] Patch to fix this issue The attached patch should fix the issue.
commit f50d809c2548a3d2e067be81a94b96f4b6923f58 Author: Sebastian Dröge <sebastian@centricular.com> Date: Fri Mar 13 13:42:46 2015 +0000 bus: Fix another case where we hold the object lock while unreffing a message commit 721539dc4f029afff5b40b35b42b48874f025f64 Author: Vivia Nikolaidou <vivia@ahiru.eu> Date: Fri Mar 13 15:28:42 2015 +0200 bus: Unreferencing messages outside the lock Shouldn't take the lock while unreferencing messages, because that may cause more messages to be sent, which will try to take the lock and cause the app to hang. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=728777