[Bug 763711] splitmuxsink: deadlock when one streams doesn't have regular buffers

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Wed Mar 16 13:37:11 UTC 2016


https://bugzilla.gnome.org/show_bug.cgi?id=763711

Lubosz Sarnecki <lubosz at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |lubosz at gmail.com

--- Comment #5 from Lubosz Sarnecki <lubosz at gmail.com> ---
I found a minimal pipeline to reproduce the problem.

test.srt:
(I think any .srt file will reproduce the issue)

1
00:00:00,000 --> 00:01:00,000
Text


Working Pipeline:
(Produces one 1.1MB file at 2.0MB max size)

gst-launch-1.0 filesrc location=test.srt ! subparse ! kateenc category=SUB !
mux.subtitle_0 \
  videotestsrc num-buffers=10 ! splitmuxsink location=foo%02d.mkv
muxer=matroskamux name=mux \
  max-size-bytes=2000000


Locking pipeline:
(Tries to produce 1.0MB max size)

gst-launch-1.0 filesrc location=test.srt ! subparse ! kateenc category=SUB !
mux.subtitle_0 \
  videotestsrc num-buffers=10 ! splitmuxsink location=foo%02d.mkv
muxer=matroskamux name=mux \
  max-size-bytes=1000000

Backtrace when deadlocked:

Thread 6 (Thread 0x7fffe77fe700 (LWP 4415)):
#0  0x00007ffff675cc3d in poll () from /usr/lib/libc.so.6
#1  0x00007ffff7091f7c in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007ffff709208c in g_main_context_iteration () from
/usr/lib/libglib-2.0.so.0
#3  0x00007ffff70920c9 in ?? () from /usr/lib/libglib-2.0.so.0
#4  0x00007ffff70b8795 in ?? () from /usr/lib/libglib-2.0.so.0
#5  0x00007ffff6a26424 in start_thread () from /usr/lib/libpthread.so.0
#6  0x00007ffff6765cbd in clone () from /usr/lib/libc.so.6

Thread 5 (Thread 0x7fffe7fff700 (LWP 4414)):
#0  0x00007ffff67617f9 in syscall () from /usr/lib/libc.so.6
#1  0x00007ffff70d678f in g_cond_wait () from /usr/lib/libglib-2.0.so.0
#2  0x00007fffeea11ae4 in handle_mq_input (pad=pad at entry=0x7f3b40,
info=info at entry=0x7fffe7ffec00, ctx=0x832bc0) at gstsplitmuxsink.c:1132
#3  0x00007ffff7b1c10b in probe_hook_marshal (hook=0x81d1e0,
data=0x7fffe7ffeb70) at gstpad.c:3420
#4  0x00007ffff7082974 in g_hook_list_marshal () from /usr/lib/libglib-2.0.so.0
#5  0x00007ffff7b1a9eb in do_probe_callbacks (pad=pad at entry=0x7f3b40,
info=info at entry=0x7fffe7ffec00, defaultval=defaultval at entry=GST_FLOW_OK) at
gstpad.c:3572
#6  0x00007ffff7b1e755 in gst_pad_chain_data_unchecked (data=0x7fffd4006410,
type=4112, pad=0x7f3b40) at gstpad.c:4135
#7  gst_pad_push_data (pad=pad at entry=0x8302a0, type=type at entry=4112,
data=data at entry=0x7fffd4006410) at gstpad.c:4407
#8  0x00007ffff7b260f3 in gst_pad_push (pad=pad at entry=0x8302a0,
buffer=buffer at entry=0x7fffd4006410) at gstpad.c:4526
#9  0x00007ffff7b0f5a3 in gst_proxy_pad_chain_default (pad=0x820540,
parent=<optimized out>, buffer=0x7fffd4006410) at gstghostpad.c:126
#10 0x00007ffff7b1e3b4 in gst_pad_chain_data_unchecked (data=0x7fffd4006410,
type=4112, pad=0x820540) at gstpad.c:4155
#11 gst_pad_push_data (pad=pad at entry=0x7f2dc0, type=type at entry=4112,
data=data at entry=0x7fffd4006410) at gstpad.c:4407
#12 0x00007ffff7b260f3 in gst_pad_push (pad=pad at entry=0x7f2dc0,
buffer=0x7fffd4006410) at gstpad.c:4526
#13 0x00007ffff5d790f5 in gst_base_src_loop (pad=0x7f2dc0) at gstbasesrc.c:2850
#14 0x00007ffff7b4fc01 in gst_task_func (task=0x83b290) at gsttask.c:332
#15 0x00007ffff70b912e in ?? () from /usr/lib/libglib-2.0.so.0
#16 0x00007ffff70b8795 in ?? () from /usr/lib/libglib-2.0.so.0
#17 0x00007ffff6a26424 in start_thread () from /usr/lib/libpthread.so.0
#18 0x00007ffff6765cbd in clone () from /usr/lib/libc.so.6

Thread 4 (Thread 0x7fffecb86700 (LWP 4413)):
#0  0x00007ffff67617f9 in syscall () from /usr/lib/libc.so.6
#1  0x00007ffff70d678f in g_cond_wait () from /usr/lib/libglib-2.0.so.0
#2  0x00007fffeea11ae4 in handle_mq_input (pad=pad at entry=0x7f3480,
info=info at entry=0x7fffecb85670, ctx=0x82f800) at gstsplitmuxsink.c:1132
#3  0x00007ffff7b1c10b in probe_hook_marshal (hook=0x81d320,
data=0x7fffecb855e0) at gstpad.c:3420
#4  0x00007ffff7082974 in g_hook_list_marshal () from /usr/lib/libglib-2.0.so.0
#5  0x00007ffff7b1a9eb in do_probe_callbacks (pad=pad at entry=0x7f3480,
info=info at entry=0x7fffecb85670, defaultval=defaultval at entry=GST_FLOW_OK) at
gstpad.c:3572
#6  0x00007ffff7b1e755 in gst_pad_chain_data_unchecked (data=0x7fffdc027ab0,
type=4112, pad=0x7f3480) at gstpad.c:4135
#7  gst_pad_push_data (pad=pad at entry=0x830050, type=type at entry=4112,
data=data at entry=0x7fffdc027ab0) at gstpad.c:4407
#8  0x00007ffff7b260f3 in gst_pad_push (pad=pad at entry=0x830050,
buffer=buffer at entry=0x7fffdc027ab0) at gstpad.c:4526
#9  0x00007ffff7b0f5a3 in gst_proxy_pad_chain_default (pad=0x8202d0,
parent=<optimized out>, buffer=0x7fffdc027ab0) at gstghostpad.c:126
#10 0x00007ffff7b1e3b4 in gst_pad_chain_data_unchecked (data=0x7fffdc027ab0,
type=4112, pad=0x8202d0) at gstpad.c:4155
#11 gst_pad_push_data (pad=pad at entry=0x7f2b80, type=type at entry=4112,
data=data at entry=0x7fffdc027ab0) at gstpad.c:4407
#12 0x00007ffff7b260f3 in gst_pad_push (pad=0x7f2b80, buffer=0x7fffdc027ab0) at
gstpad.c:4526
#13 0x00007ffff5924ff4 in gst_kate_enc_push_buffer (ke=ke at entry=0x816030,
buffer=<optimized out>) at gstkateenc.c:429
#14 0x00007ffff59267e4 in gst_kate_enc_push_and_free_kate_packet
(ke=ke at entry=0x816030, kp=<optimized out>, granpos=<optimized out>,
timestamp=timestamp at entry=1440000000, duration=duration at entry=28935000001, 
    header=0) at gstkateenc.c:456
#15 0x00007ffff5926aed in gst_kate_enc_chain_push_packet (ke=0x816030,
kp=<optimized out>, start=1440000000, duration=28935000001) at gstkateenc.c:686
#16 0x00007ffff5928326 in gst_kate_enc_chain_text (buf=0x7fffdc0279a0,
ke=0x816030) at gstkateenc.c:960
#17 gst_kate_enc_chain (pad=<optimized out>, parent=0x816030,
buf=0x7fffdc0279a0) at gstkateenc.c:994
#18 0x00007ffff7b1e3b4 in gst_pad_chain_data_unchecked (data=0x7fffdc0279a0,
type=4112, pad=0x7f2940) at gstpad.c:4155
#19 gst_pad_push_data (pad=pad at entry=0x7f2700, type=type at entry=4112,
data=data at entry=0x7fffdc0279a0) at gstpad.c:4407
#20 0x00007ffff7b260f3 in gst_pad_push (pad=0x7f2700,
buffer=buffer at entry=0x7fffdc0279a0) at gstpad.c:4526
#21 0x00007ffff5b3decf in handle_buffer (self=self at entry=0x7f2250,
buf=0x7fffdc0279a0, buf at entry=0x7fffdc027890) at gstsubparse.c:1577
#22 0x00007ffff5b3e795 in gst_sub_parse_chain (buf=0x7fffdc027890,
parent=0x7f2250, sinkpad=0x7f24c0) at gstsubparse.c:1604
#23 gst_sub_parse_sink_event (pad=0x7f24c0, parent=0x7f2250,
event=0x7fffd4003410) at gstsubparse.c:1633
#24 0x00007ffff7b1d1a7 in gst_pad_send_event_unchecked (pad=pad at entry=0x7f24c0,
event=event at entry=0x7fffd4003410, type=<optimized out>,
type at entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at gstpad.c:5554
---Type <return> to continue, or q <return> to quit---
#25 0x00007ffff7b1d5b6 in gst_pad_push_event_unchecked (pad=pad at entry=0x7f2040,
event=0x7fffd4003410, type=type at entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at
gstpad.c:5212
#26 0x00007ffff7b1d9f0 in push_sticky (pad=pad at entry=0x7f2040,
ev=ev at entry=0x7fffecb85d30, user_data=user_data at entry=0x7fffecb85d90) at
gstpad.c:3757
#27 0x00007ffff7b1b787 in events_foreach (pad=pad at entry=0x7f2040,
func=func at entry=0x7ffff7b1d8a0 <push_sticky>,
user_data=user_data at entry=0x7fffecb85d90) at gstpad.c:598
#28 0x00007ffff7b274b4 in check_sticky (event=0x7fffd4003410, pad=0x7f2040) at
gstpad.c:3814
#29 gst_pad_push_event (pad=pad at entry=0x7f2040,
event=event at entry=0x7fffd4003410) at gstpad.c:5343
#30 0x00007ffff5d78fb1 in gst_base_src_loop (pad=0x7f2040) at gstbasesrc.c:2934
#31 0x00007ffff7b4fc01 in gst_task_func (task=0x83b3b0) at gsttask.c:332
#32 0x00007ffff70b912e in ?? () from /usr/lib/libglib-2.0.so.0
#33 0x00007ffff70b8795 in ?? () from /usr/lib/libglib-2.0.so.0
#34 0x00007ffff6a26424 in start_thread () from /usr/lib/libpthread.so.0
#35 0x00007ffff6765cbd in clone () from /usr/lib/libc.so.6

Thread 3 (Thread 0x7fffed387700 (LWP 4412)):
#0  0x00007ffff67617f9 in syscall () from /usr/lib/libc.so.6
#1  0x00007ffff70d678f in g_cond_wait () from /usr/lib/libglib-2.0.so.0
#2  0x00007ffff5d8a9d3 in gst_collect_pads_chain (pad=0x7f3900,
parent=<optimized out>, buffer=0x7fffd4009b00) at gstcollectpads.c:2251
#3  0x00007ffff7b1e3b4 in gst_pad_chain_data_unchecked (data=0x7fffd4009b00,
type=4112, pad=0x7f3900) at gstpad.c:4155
#4  gst_pad_push_data (pad=pad at entry=0x7f3d80, type=type at entry=4112,
data=data at entry=0x7fffd4009b00) at gstpad.c:4407
#5  0x00007ffff7b260f3 in gst_pad_push (pad=0x7f3d80,
buffer=buffer at entry=0x7fffd4009b00) at gstpad.c:4526
#6  0x00007ffff5fd4794 in gst_single_queue_push_one (allow_drop=<synthetic
pointer>, object=0x7fffd4009b00, sq=0x8324d0, mq=0x82c070) at
gstmultiqueue.c:1394
#7  gst_multi_queue_loop (pad=<optimized out>) at gstmultiqueue.c:1677
#8  0x00007ffff7b4fc01 in gst_task_func (task=0x83b170) at gsttask.c:332
#9  0x00007ffff70b912e in ?? () from /usr/lib/libglib-2.0.so.0
#10 0x00007ffff70b8795 in ?? () from /usr/lib/libglib-2.0.so.0
#11 0x00007ffff6a26424 in start_thread () from /usr/lib/libpthread.so.0
#12 0x00007ffff6765cbd in clone () from /usr/lib/libc.so.6

Thread 2 (Thread 0x7fffedb88700 (LWP 4411)):
#0  0x00007ffff67617f9 in syscall () from /usr/lib/libc.so.6
#1  0x00007ffff70d678f in g_cond_wait () from /usr/lib/libglib-2.0.so.0
#2  0x00007ffff5d8cca2 in _gst_data_queue_wait_non_empty
(queue=queue at entry=0x61a530) at gstdataqueue.c:553
#3  0x00007ffff5d8dfc0 in gst_data_queue_pop (queue=0x61a530,
item=item at entry=0x7fffedb87e48) at gstdataqueue.c:595
#4  0x00007ffff5fd3987 in gst_multi_queue_loop (pad=<optimized out>) at
gstmultiqueue.c:1552
#5  0x00007ffff7b4fc01 in gst_task_func (task=0x83b050) at gsttask.c:332
#6  0x00007ffff70b912e in ?? () from /usr/lib/libglib-2.0.so.0
#7  0x00007ffff70b8795 in ?? () from /usr/lib/libglib-2.0.so.0
#8  0x00007ffff6a26424 in start_thread () from /usr/lib/libpthread.so.0
#9  0x00007ffff6765cbd in clone () from /usr/lib/libc.so.6

Thread 1 (Thread 0x7ffff7fba700 (LWP 4394)):
#0  0x00007ffff675cc3d in poll () from /usr/lib/libc.so.6
#1  0x00007ffff7091f7c in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007ffff7092302 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#3  0x00007ffff7af2079 in gst_bus_poll (bus=bus at entry=0x6733a0,
events=events at entry=GST_MESSAGE_ANY, timeout=18446744073709551615) at
gstbus.c:1157
#4  0x0000000000404658 in event_loop (pipeline=0x828340,
blocking=blocking at entry=1, do_progress=do_progress at entry=0,
target_state=target_state at entry=GST_STATE_PLAYING) at gst-launch.c:532
#5  0x0000000000403761 in main (argc=18, argv=0x7fffffffb8e8) at
gst-launch.c:1115

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


More information about the gstreamer-bugs mailing list