GNOME Bugzilla – Bug 689899
Deadlock using the xfade backend
Last modified: 2012-12-15 15:07:37 UTC
Just updated to Rhythmbox master, using gstreamer 1.0 also master. The media file is a HTTP streaming server, MP3 content. info threads 11 Thread 0x7fc3c8683700 (LWP 28970) "gdbus" 0x00007fc3d54917ed in poll () at ../sysdeps/unix/syscall-template.S:81 10 Thread 0x7fc3c717f700 (LWP 28971) "dconf worker" 0x00007fc3d54917ed in poll () at ../sysdeps/unix/syscall-template.S:81 9 Thread 0x7fc3c49da700 (LWP 28972) "gmain" 0x00007fc3d54917ed in poll () at ../sysdeps/unix/syscall-template.S:81 8 Thread 0x7fc3aeef4700 (LWP 28974) "queue1:src" __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135 7 Thread 0x7fc39d26d700 (LWP 28983) "rhythmdb-thread" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:165 6 Thread 0x7fc396d50700 (LWP 28990) "threaded-ml" 0x00007fc3d54917ed in poll () at ../sysdeps/unix/syscall-template.S:81 5 Thread 0x7fc391ce7700 (LWP 28991) "source:src" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:165 4 Thread 0x7fc3914e6700 (LWP 28992) "silence:src" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:165 3 Thread 0x7fc390ce5700 (LWP 28993) "queue0:src" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:165 2 Thread 0x7fc3837fe700 (LWP 28995) "queue2-0:src" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:165 * 1 Thread 0x7fc3cf742a00 (LWP 28967) "rhythmbox" __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
Main thread:
+ Trace 231266
queue1 thread:
+ Trace 231267
Created attachment 231040 [details] [review] xfade: use a recursive mutex for locking the stream link_and_unblock_stream() is called sometimes holding the lock, and sometimes not, and it locks again, so to avoid a deadlock one needs a recursive mutex.
I really dislike recursive mutexes, so I'm going to try to fix this some other way.
Commit 4c6bc10 fixes this.