[Bug 773414] New: Playbin3 is hanging up while destroying it when failed to send data from source element
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Mon Oct 24 10:21:49 UTC 2016
https://bugzilla.gnome.org/show_bug.cgi?id=773414
Bug ID: 773414
Summary: Playbin3 is hanging up while destroying it when failed
to send data from source element
Classification: Platform
Product: GStreamer
Version: 1.9.90
OS: Linux
Status: NEW
Severity: normal
Priority: Normal
Component: gst-plugins-base
Assignee: gstreamer-bugs at lists.freedesktop.org
Reporter: hoonh83.lee at gmail.com
QA Contact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
Hello All.
We are having a following scenario with playbin3 in our TV target.
Audio and Video data are fed separately by elementary stream(ES) and so we are
using 2 of appsrc elements.
But, one of them for our test cases has valid audio stream and non-valid video
stream.
So, we are expecting playbin3 pipeline is destroyed after non-valid stream for
video is detected and appsrc(basesre) changes from PAUSED to READY.
However, at that time, pipeline is hanging up.
Deadlock is happened while pipeline tries from PAUSED to READY.
Following is backtrace. (Our GST version is based on 1.8)
==============================================
[Switching to thread 8 (Thread 0x71434400 (LWP 24343))]
#0 0x768bb7a8 in __lll_lock_wait () from /lib/libpthread.so.0
(gdb) bt
#0 0x768bb7a8 in __lll_lock_wait () from /lib/libpthread.so.0
#1 0x768b6404 in pthread_mutex_lock () from /lib/libpthread.so.0
#2 0x719769e0 in gst_play_bin3_handle_message (bin=0x18ed60, msg=0x70b01810)
at
/usr/src/debug/gstreamer1.0-plugins-base/1.8.0-72.drd4tv.10-r12/git/gst/playback/gstplaybin3.c:3168
#3 0x76c5d1c2 in bin_bus_handler (bus=<optimized out>, message=<optimized
out>, bin=<optimized out>) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstbin.c:3119
#4 0x76c696de in gst_bus_post (bus=bus at entry=0x163958,
message=message at entry=0x70b01810) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstbus.c:327
#5 0x76c79292 in gst_element_post_message_default (element=0x1b3108,
message=0x70b01810) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:1726
#6 0x76c5fed2 in gst_bin_post_message (element=0x1b3108, msg=0x70b01810) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstbin.c:2643
#7 0x76c7b86c in gst_element_post_message (element=element at entry=0x1b3108,
message=message at entry=0x70b01810) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:1769
#8 0x76c6037c in gst_bin_handle_message_func (bin=0x1b3108, message=<optimized
out>) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstbin.c:3905
#9 0x7195325c in gst_decodebin3_handle_message (bin=<optimized out>,
message=0x70b01810)
at
/usr/src/debug/gstreamer1.0-plugins-base/1.8.0-72.drd4tv.10-r12/git/gst/playback/gstdecodebin3.c:1580
#10 0x76c5d1c2 in bin_bus_handler (bus=<optimized out>, message=<optimized
out>, bin=<optimized out>) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstbin.c:3119
#11 0x76c696de in gst_bus_post (bus=bus at entry=0x163b08,
message=message at entry=0x70b01810) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstbus.c:327
#12 0x76c79292 in gst_element_post_message_default (element=0x1c41c8,
message=0x70b01810) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:1726
#13 0x76c5fed2 in gst_bin_post_message (element=0x1c41c8, msg=0x70b01810) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstbin.c:2643
#14 0x76c7b86c in gst_element_post_message (element=element at entry=0x1c41c8,
message=message at entry=0x70b01810) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:1769
#15 0x76c6037c in gst_bin_handle_message_func (bin=0x1c41c8, message=<optimized
out>) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstbin.c:3905
#16 0x71966690 in gst_parse_bin_handle_message (bin=0x1c41c8, msg=0x70b01810)
at
/usr/src/debug/gstreamer1.0-plugins-base/1.8.0-72.drd4tv.10-r12/git/gst/playback/gstparsebin.c:4776
#17 0x76c5d1c2 in bin_bus_handler (bus=<optimized out>, message=<optimized
out>, bin=<optimized out>) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstbin.c:3119
#18 0x76c696de in gst_bus_post (bus=bus at entry=0x163dd8,
message=message at entry=0x70b01810) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstbus.c:327
#19 0x76c79292 in gst_element_post_message_default (element=0x70b2fd10,
message=0x70b01810) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:1726
#20 0x76c7b86c in gst_element_post_message (element=element at entry=0x70b2fd10,
message=0x70b01810) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:1769
#21 0x70aa8aaa in qtdemux_expose_streams (qtdemux=qtdemux at entry=0x70b2fd10) at
/home/paul/local-work/swfarmhub-gst/gst-plugins-good/gst/isomp4/qtdemux.c:12887
#22 0x70ac6f8e in gst_qtdemux_process_adapter (demux=demux at entry=0x70b2fd10,
force=force at entry=0) at
/home/paul/local-work/swfarmhub-gst/gst-plugins-good/gst/isomp4/qtdemux.c:7295
#23 0x70ac9472 in gst_qtdemux_chain (sinkpad=<optimized out>,
parent=0x70b2fd10, inbuf=0x70b05338) at
/home/paul/local-work/swfarmhub-gst/gst-plugins-good/gst/isomp4/qtdemux.c:7124
#24 0x76c8d568 in gst_pad_chain_data_unchecked (data=0x70b05338, type=4112,
pad=0x70b31020) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4156
#25 gst_pad_push_data (pad=pad at entry=0x167aa0, type=type at entry=4112,
data=<optimized out>, data at entry=0x70b05338) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4408
#26 0x76c93c6c in gst_pad_push (pad=0x167aa0, buffer=buffer at entry=0x70b05338)
at /usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4527
#27 0x7146699e in stop_typefinding (typefind=typefind at entry=0x1c6198) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/plugins/elements/gsttypefindelement.c:639
#28 0x71466c3e in gst_type_find_element_chain_do_typefinding
(typefind=typefind at entry=0x1c6198, check_avail=check_avail at entry=1,
at_eos=at_eos at entry=0)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/plugins/elements/gsttypefindelement.c:969
#29 0x7146740e in gst_type_find_element_chain (pad=<optimized out>,
parent=0x1c6198, buffer=0x70b05298)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/plugins/elements/gsttypefindelement.c:901
#30 0x76c8d568 in gst_pad_chain_data_unchecked (data=0x70b05298, type=4112,
pad=0x167950) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4156
#31 gst_pad_push_data (pad=pad at entry=0x1b5a38, type=type at entry=4112,
data=<optimized out>, data at entry=0x70b05298) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4408
#32 0x76c93c6c in gst_pad_push (pad=pad at entry=0x1b5a38,
buffer=buffer at entry=0x70b05298) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4527
#33 0x76c81b1e in gst_proxy_pad_chain_default (pad=<optimized out>,
parent=<optimized out>, buffer=0x70b05298)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstghostpad.c:126
#34 0x76c8d568 in gst_pad_chain_data_unchecked (data=0x70b05298, type=4112,
pad=0x1b4a50) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4156
#35 gst_pad_push_data (pad=pad at entry=0x1b58d8, type=type at entry=4112,
data=<optimized out>, data at entry=0x70b05298) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4408
#36 0x76c93c6c in gst_pad_push (pad=pad at entry=0x1b58d8,
buffer=buffer at entry=0x70b05298) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4527
#37 0x76c81b1e in gst_proxy_pad_chain_default (pad=<optimized out>,
parent=<optimized out>, buffer=0x70b05298)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstghostpad.c:126
#38 0x76c8d568 in gst_pad_chain_data_unchecked (data=0x70b05298, type=4112,
pad=0x1b48e0) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4156
#39 gst_pad_push_data (pad=pad at entry=0x1b4770, type=type at entry=4112,
data=<optimized out>, data at entry=0x70b05298) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4408
#40 0x76c93c6c in gst_pad_push (pad=pad at entry=0x1b4770,
buffer=buffer at entry=0x70b05298) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4527
#41 0x76c81b1e in gst_proxy_pad_chain_default (pad=<optimized out>,
parent=<optimized out>, buffer=0x70b05298)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstghostpad.c:126
#42 0x76c8d568 in gst_pad_chain_data_unchecked (data=0x70b05298, type=4112,
pad=0x1b5778) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4156
#43 gst_pad_push_data (pad=pad at entry=0x1b4600, type=type at entry=4112,
data=<optimized out>, data at entry=0x70b05298) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4408
#44 0x76c93c6c in gst_pad_push (pad=pad at entry=0x1b4600,
buffer=buffer at entry=0x70b05298) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4527
#45 0x76c81b1e in gst_proxy_pad_chain_default (pad=<optimized out>,
parent=<optimized out>, buffer=0x70b05298)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstghostpad.c:126
#46 0x76c8d568 in gst_pad_chain_data_unchecked (data=0x70b05298, type=4112,
pad=0x1b5618) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4156
#47 gst_pad_push_data (pad=pad at entry=0x167560, type=type at entry=4112,
data=<optimized out>, data at entry=0x70b05298) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4408
---Type <return> to continue, or q <return> to quit---
#48 0x76c93c6c in gst_pad_push (pad=pad at entry=0x167560, buffer=0x70b05298) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:4527
#49 0x760ed012 in gst_base_src_loop (pad=0x167560) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/libs/gst/base/gstbasesrc.c:2994
#50 0x76cb6632 in gst_task_func (task=0x16e4c0) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gsttask.c:332
#51 0x76cb7220 in default_func (tdata=<optimized out>, pool=<optimized out>) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gsttaskpool.c:68
#52 0x76d84518 in ?? () from /usr/lib/libglib-2.0.so.0
#53 0x76d839d8 in ?? () from /usr/lib/libglib-2.0.so.0
#54 0x768b3e64 in start_thread () from /lib/libpthread.so.0
#55 0x766f9160 in ?? () from /lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
==============================================================
==============================================================
g to thread 1 (Thread 0x75165000 (LWP 17081))]
#0 0x768bb7a8 in __lll_lock_wait () from /lib/libpthread.so.0
(gdb) bt
#0 0x768bb7a8 in __lll_lock_wait () from /lib/libpthread.so.0
#1 0x768b6404 in pthread_mutex_lock () from /lib/libpthread.so.0
#2 0x76c95b00 in gst_pad_stop_task (pad=0x167560) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:6053
#3 0x760e9864 in gst_base_src_stop (basesrc=basesrc at entry=0x1c0628) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/libs/gst/base/gstbasesrc.c:3681
#4 0x760ef1d4 in gst_base_src_activate_push (pad=0x167560, active=<optimized
out>, parent=0x1c0628)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/libs/gst/base/gstbasesrc.c:3853
#5 gst_base_src_activate_mode (pad=0x167560, parent=0x1c0628, mode=<optimized
out>, active=0) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/libs/gst/base/gstbasesrc.c:3925
#6 0x76c90c62 in gst_pad_activate_mode (pad=pad at entry=0x167560,
mode=mode at entry=GST_PAD_MODE_PUSH, active=active at entry=0)
at /usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:1188
#7 0x76c9128a in gst_pad_set_active (pad=pad at entry=0x167560, active=0) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstpad.c:1072
#8 0x76c78e52 in activate_pads (vpad=<optimized out>, ret=0x7e856248,
active=0x7e85628c) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2736
#9 0x76c85df8 in gst_iterator_fold (it=it at entry=0x1be9e8,
func=func at entry=0x76c78e41 <activate_pads>, ret=ret at entry=0x7e856248,
user_data=user_data at entry=0x7e85628c)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstiterator.c:614
#10 0x76c79172 in iterator_activate_fold_with_resync (iter=iter at entry=0x1be9e8,
user_data=user_data at entry=0x7e85628c, func=0x76c78e41 <activate_pads>)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2760
#11 0x76c7a95c in gst_element_pads_activate (element=element at entry=0x1c0628,
active=0) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2796
#12 0x76c7abf4 in gst_element_change_state_func (element=0x1c0628,
transition=<optimized out>) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2870
#13 0x760ed77a in gst_base_src_change_state (element=0x1c0628,
transition=GST_STATE_CHANGE_PAUSED_TO_READY)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/libs/gst/base/gstbasesrc.c:3962
#14 0x76c7c3ae in gst_element_change_state (element=element at entry=0x1c0628,
transition=transition at entry=GST_STATE_CHANGE_PAUSED_TO_READY)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2648
#15 0x76c7c992 in gst_element_set_state_func (element=0x1c0628,
state=<optimized out>) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2602
#16 0x76c7c1a4 in gst_element_set_state (element=element at entry=0x1c0628,
state=state at entry=GST_STATE_READY) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2503
#17 0x76c5f872 in reset_state (data=<optimized out>, user_data=0x2) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstbin.c:2669
#18 0x76c8568c in foreach_fold_func (item=<optimized out>, unused=<optimized
out>, data=<optimized out>) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstiterator.c:642
#19 0x76c85df8 in gst_iterator_fold (it=it at entry=0x1c5800, func=0x76c85685
<foreach_fold_func>, ret=ret at entry=0x0, user_data=user_data at entry=0x7e856430)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstiterator.c:614
#20 0x76c85e18 in gst_iterator_foreach (it=it at entry=0x1c5800,
func=func at entry=0x76c5f85d <reset_state>, user_data=user_data at entry=0x2)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstiterator.c:669
#21 0x76c638fe in gst_bin_change_state_func (element=0x1bc020,
transition=GST_STATE_CHANGE_READY_TO_PAUSED) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstbin.c:2943
#22 0x7190417e in ?? () from /usr/lib/gstreamer-1.0/libgstdynappsrc.so
#23 0x76c7c3ae in gst_element_change_state (element=element at entry=0x1bc020,
transition=GST_STATE_CHANGE_READY_TO_PAUSED)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2648
#24 0x76c7cb8e in gst_element_continue_state (element=element at entry=0x1bc020,
ret=ret at entry=GST_STATE_CHANGE_SUCCESS)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2356
#25 0x76c7c4a2 in gst_element_change_state (element=element at entry=0x1bc020,
transition=transition at entry=GST_STATE_CHANGE_NULL_TO_READY)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2687
#26 0x76c7c992 in gst_element_set_state_func (element=0x1bc020,
state=<optimized out>) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2602
#27 0x76c7c1a4 in gst_element_set_state (element=0x1bc020,
state=state at entry=GST_STATE_PAUSED) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2503
#28 0x719632c4 in gst_uri_source_bin_change_state (element=0x1b32a8,
transition=<optimized out>)
at
/usr/src/debug/gstreamer1.0-plugins-base/1.8.0-72.drd4tv.10-r12/git/gst/playback/gsturisourcebin.c:2799
#29 0x76c7c3ae in gst_element_change_state (element=element at entry=0x1b32a8,
transition=GST_STATE_CHANGE_READY_TO_PAUSED)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2648
#30 0x76c7cb8e in gst_element_continue_state (element=element at entry=0x1b32a8,
ret=ret at entry=GST_STATE_CHANGE_SUCCESS)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2356
#31 0x76c7c4a2 in gst_element_change_state (element=element at entry=0x1b32a8,
transition=transition at entry=GST_STATE_CHANGE_NULL_TO_READY)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2687
#32 0x76c7c992 in gst_element_set_state_func (element=0x1b32a8,
state=<optimized out>) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2602
#33 0x76c7c1a4 in gst_element_set_state (element=element at entry=0x1b32a8,
state=state at entry=GST_STATE_PAUSED) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2503
#34 0x7197ce6e in activate_group (target=GST_STATE_PAUSED, group=0x18ef14,
playbin=0x18ed60)
at
/usr/src/debug/gstreamer1.0-plugins-base/1.8.0-72.drd4tv.10-r12/git/gst/playback/gstplaybin3.c:5578
#35 setup_next_source (target=GST_STATE_PAUSED, playbin=0x18ed60) at
/usr/src/debug/gstreamer1.0-plugins-base/1.8.0-72.drd4tv.10-r12/git/gst/playback/gstplaybin3.c:5801
#36 gst_play_bin3_change_state (element=0x18ed60, transition=<optimized out>)
at
/usr/src/debug/gstreamer1.0-plugins-base/1.8.0-72.drd4tv.10-r12/git/gst/playback/gstplaybin3.c:5931
#37 0x76c7c3ae in gst_element_change_state (element=element at entry=0x18ed60,
transition=transition at entry=GST_STATE_CHANGE_READY_TO_PAUSED)
at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2648
---Type <return> to continue, or q <return> to quit---
#38 0x76c7c992 in gst_element_set_state_func (element=0x18ed60,
state=<optimized out>) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2602
#39 0x76c7c1a4 in gst_element_set_state (element=0x18ed60,
state=GST_STATE_PAUSED) at
/usr/src/debug/gstreamer1.0/1.8.0-61.drd4tv.15-r10/git/gst/gstelement.c:2503
#40 0x76b0a4d4 in mediapipeline::Pipeline::pause (this=0x174a80,
reqState=<optimized out>) at pipeline.cpp:704
#41 0x72686ae2 in mediapipeline::DashPlayer::ExecutePreload
(this=this at entry=0x16af18, optionString=...) at
/home/paul/local-work/custom_pipeline_anal/mpegdash/dashplayer/dashplayer.cpp:667
#42 0x72686f0c in mediapipeline::DashPlayer::loadSpi (this=0x16af18,
optionString=...) at
/home/paul/local-work/custom_pipeline_anal/mpegdash/dashplayer/dashplayer.cpp:718
#43 0x76aee73e in mediapipeline::AbstractPlayer::load (this=0x16af18,
optionString=...) at abstractplayer.cpp:124
#44 0x00037a24 in StarfishMediaAPIs::pipeline_init(void*) ()
#45 0x0003e20c in StarfishMediaAPIs::LoadCommon(char const*, void (*)(int, long
long, char const*)) ()
#46 0x00051a26 in StarfishMediaPipe::LoadEvent(UMSConnectorHandle*,
UMSConnectorMessage*, void*) ()
#47 0x76908aa0 in CallbackManager::CommandCategory::handleCommand(LSHandle*,
LSMessage*) () from /usr/lib/libums_connector.so.1
#48 0x76908dc4 in CallbackManager::CommandHandlerProxy(LSHandle*, LSMessage*,
void*) () from /usr/lib/libums_connector.so.1
#49 0x76b8a684 in ?? () from /usr/lib/libluna-service2.so.3
#50 0x76b8aa5e in ?? () from /usr/lib/libluna-service2.so.3
#51 0x76b9cb94 in ?? () from /usr/lib/libluna-service2.so.3
#52 0x76b9fd88 in _LSTransportProcessIncomingMessages () from
/usr/lib/libluna-service2.so.3
#53 0x76ba0530 in _LSTransportReceiveClient () from
/usr/lib/libluna-service2.so.3
#54 0x76da310c in ?? () from /usr/lib/libglib-2.0.so.0
#55 0x76d5c430 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#56 0x76d5c79c in ?? () from /usr/lib/libglib-2.0.so.0
#57 0x76d5caec in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#58 0x768f03b6 in UMSConnector::UMSConnector_impl::wait() () from
/usr/lib/libums_connector_impl.so.1
#59 0x0005077c in StarfishMediaPipe::CreateConnection() ()
#60 0x00031c7c in main ()
==============================================================
>From this backtrace, I confirmed that GST_PLAY_BIN3_LOCK (playbin) is called as
twice and GST_PLAY_BIN3_UNLOCK (playbin) is not called as well.
Let me explain lock sequence.
1) GST_PLAY_BIN3_LOCK (playbin) is called in setup_next_source ().
2) gst_element_set_state (urisrcbin, target) is not returned in activate_group
(). Thus, GST_PLAY_BIN3_UNLOCK (playbin) is not called in setup_next_source ().
3) GST_PLAY_BIN3_LOCK (playbin) is called again in gst_play_bin3_handle_message
() to handle GST_MESSAGE_STREAM_COLLECTION.
(Actually, we are adding code to post collection msg in qtdemux)
So, dead lock is happened in plybin3 and gst_pad_stop_task of basesrc(audio) is
also stucked as they could not return the chain function after posting
collection msg.
--
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