GNOME Bugzilla – Bug 353725
deadlock linking tee and adder
Last modified: 2006-09-01 10:17:45 UTC
Someone on IRC was experimenting with linking together elements having multiple pads with gst-launch syntax and tried something like: gst-launch audiotestsrc ! tee name=t adder name=a ! fakesink t. ! queue ! a. t. ! queue ! a. This pipeline deadlocks linking the pads. I've written a small python script to reproduce the bug. The script deadlocks calling gst_pad_link on tee:src1 and adder:sink1 because gst_pad_link_prepare locks the pads, then tries to get src1's caps, this causes gst_pad_proxy_getcaps to be called, which in turns calls gst_pad_peer_get_caps on src0, which causes gst_pad_proxy_getcaps to be called again, this calls gst_pad_peer_get_caps on sink1, but sink1 is locked in gst_pad_link_prepare. ... I know, i know, a backtrace is worth a thousand words :) (gdb) r Starting program: /usr/bin/python padproxy_deadlock.py (no debugging symbols found) (no debugging symbols found) (no debugging symbols found) [Thread debugging using libthread_db enabled] [New Thread 805436224 (LWP 7008)] Program received signal SIGINT, Interrupt.
+ Trace 71325
Thread 805436224 (LWP 7008)
Created attachment 71979 [details] Script to reproduce the bug
*** This bug has been marked as a duplicate of 316248 ***