[gstreamer-bugs] [Bug 158162] New: opt deadlock

bugzilla-daemon at bugzilla.gnome.org bugzilla-daemon at bugzilla.gnome.org
Sat Nov 13 04:02:18 PST 2004


http://bugzilla.gnome.org/show_bug.cgi?id=158162
GStreamer | gstreamer (core) | Ver: HEAD CVS

           Summary: opt deadlock
           Product: GStreamer
           Version: HEAD CVS
          Platform: Other
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
        AssignedTo: gstreamer-bugs at lists.sourceforge.net
        ReportedBy: rbultje at ronald.bitfreak.net
         QAContact: gstreamer-bugs at lists.sourceforge.net


Attached patch adds an APEv1/2 tag reader. APEv1/2 is used for musepack files,
for example, it's similar in scope to ID3v1/2. The element is loopbased, just
like alsasink and musepackdec, but unlike osssink. Consider the following pipelines:

1: gst-launch filesrc location=$file ! apedemux ! musepackdec ! audioconvert !
alsasink
2: gst-launch filesrc location=$file ! decodebin ! audioconvert ! alsasink
3: gst-launch filesrc location=$file ! decodebin ! audioconvert ! osssink
4: gst-launch filesrc location=$file ! decodebin ! { queue ! audioconvert !
alsasink }

1, 3 and 4 work (also if you s/decodebin/spider/). 2 fails with this warning
(for both decodebin and spider):

** (process:8340): WARNING **: deadlock detected, disabling group 0x9caa420

A backtrace on that warning shows that inside the loopfunc of musepackdec (on
gst_pad_pull), it goes to the loopfunc of alsasink (instead of apedemux):

(gdb) bt
#0  0x00a107a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x00a4fe49 in raise () from /lib/tls/libc.so.6
#2  0x00a51872 in abort () from /lib/tls/libc.so.6
#3  0x00c8b187 in g_logv () from /usr/lib/libglib-2.0.so.0
#4  0x00c8b1c4 in g_log () from /usr/lib/libglib-2.0.so.0
#5  0x004e8e52 in gst_opt_scheduler_get_wrapper (srcpad=0x968bd30)
    at gstoptimalscheduler.c:1458
#6  0x00e9a5dd in gst_pad_pull (pad=0x968e800) at gstpad.c:3271
#7  0x0012a1ce in gst_alsa_sink_loop (element=0x968fe48) at gstalsasink.c:378
#8  0x004e87d3 in loop_group_schedule_function (argc=0, argv=0x9628220)
    at gstoptimalscheduler.c:1325
#9  0x004e81d4 in schedule_group (group=0x9628220)
    at gstoptimalscheduler.c:1151
#10 0x004e83cd in gst_opt_scheduler_schedule_run_queue (osched=0x96241f8)
    at gstoptimalscheduler.c:1198
#11 0x004e8c52 in gst_opt_scheduler_get_wrapper (srcpad=0x94e1e10)
    at gstoptimalscheduler.c:1444
#12 0x00e9a5dd in gst_pad_pull (pad=0x94ec578) at gstpad.c:3271
#13 0x00e1b86c in gst_bytestream_get_next_buf (bs=0x94dddf0)
    at bytestream.c:156
#14 0x00e1bb11 in gst_bytestream_fill_bytes (bs=0x94dddf0, len=1)
    at bytestream.c:230
#15 0x00e1bebb in gst_bytestream_peek_bytes (bs=0x94dddf0, data=0xfee5631c,
---Type <return> to continue, or q <return> to quit---
    len=1) at bytestream.c:351
#16 0x001ea6d4 in GstMusepackReader::seek (this=0x9b1b220, offset=0)
    at gstmusepackreader.cpp:127
#17 0x001f212b in JumpID3v2 () from /usr/lib/libmusepack.so.1
#18 0x001f602c in StreamInfo::ReadStreamInfo () from /usr/lib/libmusepack.so.1
#19 0x001e999b in gst_musepack_stream_init (musepackdec=0x94e2d68)
    at gstmusepackdec.cpp:360
#20 0x001ea1f1 in gst_musepackdec_loop (element=0x94e2d68)
    at gstmusepackdec.cpp:413
#21 0x004e87d3 in loop_group_schedule_function (argc=0, argv=0x94ee1e8)
    at gstoptimalscheduler.c:1325
#22 0x004e81d4 in schedule_group (group=0x94ee1e8)
    at gstoptimalscheduler.c:1151
#23 0x004e83cd in gst_opt_scheduler_schedule_run_queue (osched=0x96241f8)
    at gstoptimalscheduler.c:1198
#24 0x004e84ea in schedule_chain (chain=0x968f2b0)
    at gstoptimalscheduler.c:1251
#25 0x004eb654 in gst_opt_scheduler_iterate (sched=0x96241f8)
    at gstoptimalscheduler.c:2613
#26 0x00ea4ede in gst_scheduler_iterate (sched=0x96241f8) at gstscheduler.c:738
#27 0x00e7d645 in gst_bin_iterate_func (bin=0x968e5f0) at gstbin.c:1213
#28 0x00eb9137 in gst_marshal_BOOLEAN__VOID (closure=0x94cab78,

So it seems to me that opt doesn't set up groups correctly on dynamically
generated (autoplugged) pipelines with >2 loopbased elements.

Sample musepack file with ape tags is in the media directory on our website in
medium/. I'll attach the apedemux patch below.

------- You are receiving this mail because: -------
You are the assignee for the bug.
You are the QA contact for the bug.




More information about the Gstreamer-bugs mailing list