gst_element_set_state deadlock
tobatrance
henning.hinze at mail.de
Mon Apr 3 09:01:16 UTC 2017
hi.
i'm using ubuntu 16.04 and gstreamer 1.8.3. i'm using the pipeline filesrc
-> decodebin -> appsink. i'm creating and destroying multiple of these
pipelines within short time and playing different videos concurrently.
before destroying the pipeline I pause them and afterwards set them to
GST_STATE_NULL. somewhen it happens that gst_element_set_state(pipeline,
GST_STATE_NULL) does not return. in this log i'm running two 4k videos.
first comes the backtrace of the mainloop thread. the mutex in frame 1 is a
p_thread_mutex.
#0 0x00007f3fc4f0326d in __lll_lock_wait () at
../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1 0x00007f3fc4efce42 in __GI___pthread_mutex_lock (mutex=0x7f3f30041a20)
at ../nptl/pthread_mutex_lock.c:115
id = -990891411
__PRETTY_FUNCTION__ = "__pthread_mutex_lock"
type = 1
id = <optimized out>
#2 0x00007f3fc61c269d in activate_mode_internal
(new_mode=GST_PAD_MODE_NONE, pad=0x7f3f900ff8f0 [GstPad]) at gstpad.c:1014
res = 0
old = <optimized out>
new = <optimized out>
dir = <optimized out>
peer = <optimized out>
__PRETTY_FUNCTION__ = "activate_mode_internal"
#3 0x00007f3fc61c269d in activate_mode_internal
(pad=pad at entry=0x7f3f900ff8f0 [GstPad], parent=parent at entry=0x7f3f3004c1a0
[GstVaapiDecode], mode=mode at entry=GST_PAD_MODE_PUSH, active=active at entry=0)
at gstpad.c:1185
res = 0
old = <optimized out>
new = <optimized out>
dir = <optimized out>
peer = <optimized out>
__PRETTY_FUNCTION__ = "activate_mode_internal"
#4 0x00007f3fc61c2dcd in gst_pad_set_active (pad=pad at entry=0x7f3f900ff8f0
[GstPad], active=0) at gstpad.c:1079
parent = 0x7f3f3004c1a0 [GstVaapiDecode]
old = GST_PAD_MODE_PUSH
ret = 0
__func__ = "gst_pad_set_active"
__PRETTY_FUNCTION__ = "gst_pad_set_active"
#5 0x00007f3fc61a4dbd in activate_pads (vpad=<optimized out>,
ret=0x7ffda8991e90, active=0x7ffda8991edc) at gstelement.c:2736
pad = 0x7f3f900ff8f0 [GstPad]
cont = 1
#6 0x00007f3fc61b522c in gst_iterator_fold (it=it at entry=0x7f3f240a6010,
func=func at entry=0x7f3fc61a4da0 <activate_pads>,
ret=ret at entry=0x7ffda8991e90, user_data=user_data at entry=0x7ffda8991edc) at
gstiterator.c:614
item =
{g_type = 23461424, data = {{v_int = -1878001424, v_uint =
2416965872, v_long = 139910976633072, v_ulong = 139910976633072, v_int64 =
139910976633072, v_uint64 = 139910976633072, v_float = -2.83935518e-29,
v_double = 6.9125207030498272e-310, v_pointer = 0x7f3f900ff8f0}, {v_int = 0,
v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0,
v_double = 0, v_pointer = 0x0}}}
result = GST_ITERATOR_OK
#7 0x00007f3fc61a521a in iterator_activate_fold_with_resync
(iter=iter at entry=0x7f3f240a6010, user_data=user_data at entry=0x7ffda8991edc,
func=0x7f3fc61a4da0 <activate_pads>) at gstelement.c:2760
ires = <optimized out>
ret =
{g_type = 20, data = {{v_int = 1, v_uint = 1, v_long = 1,
v_ulong = 1, v_int64 = 1, v_uint64 = 1, v_float = 1.40129846e-45, v_double =
4.9406564584124654e-324, v_pointer = 0x1}, {v_int = 0, v_uint = 0, v_long =
0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0,
v_pointer = 0x0}}}
#8 0x00007f3fc61a703e in gst_element_pads_activate
(element=element at entry=0x7f3f3004c1a0 [GstVaapiDecode],
active=active at entry=0) at gstelement.c:2804
iter = 0x7f3f240a6010
---Type <return> to continue, or q <return> to quit---
res = 1
__PRETTY_FUNCTION__ = "gst_element_pads_activate"
#9 0x00007f3fc61a72d6 in gst_element_change_state_func
(element=0x7f3f3004c1a0 [GstVaapiDecode], transition=<optimized out>) at
gstelement.c:2870
l = <optimized out>
state = GST_STATE_PAUSED
next = GST_STATE_READY
result = GST_STATE_CHANGE_SUCCESS
__func__ = "gst_element_change_state_func"
__PRETTY_FUNCTION__ = "gst_element_change_state_func"
#10 0x00007f3fc599e535 in gst_video_decoder_change_state
(element=0x7f3f3004c1a0 [GstVaapiDecode],
transition=GST_STATE_CHANGE_PAUSED_TO_READY)
at gstvideodecoder.c:2459
decoder = 0x7f3f3004c1a0 [GstVaapiDecode]
decoder_class = 0x7f3f8c005850
ret = <optimized out>
__PRETTY_FUNCTION__ = "gst_video_decoder_change_state"
#11 0x00007f3fc61a91ce in gst_element_change_state
(element=element at entry=0x7f3f3004c1a0 [GstVaapiDecode],
transition=transition at entry=GST_STATE_CHANGE_PAUSED_TO_READY) at
gstelement.c:2648
oclass = 0x7f3f8c005850
ret = GST_STATE_CHANGE_SUCCESS
__PRETTY_FUNCTION__ = "gst_element_change_state"
#12 0x00007f3fc61a9947 in gst_element_set_state_func (element=0x7f3f3004c1a0
[GstVaapiDecode], state=GST_STATE_READY) at gstelement.c:2602
current = GST_STATE_PAUSED
next = <optimized out>
old_pending = <optimized out>
ret = <optimized out>
transition = GST_STATE_CHANGE_PAUSED_TO_READY
old_ret = <optimized out>
__func__ = "gst_element_set_state_func"
__PRETTY_FUNCTION__ = "gst_element_set_state_func"
#13 0x00007f3fc6188365 in gst_bin_change_state_func (next=GST_STATE_READY,
current=GST_STATE_PAUSED, start_time=0, base_time=2803243898520,
element=0x7f3f3004c1a0 [GstVaapiDecode], bin=0x7f3f2c0160d0
[GstVaapiDecodeBin]) at gstbin.c:2414
child_current = <optimized out>
found = <optimized out>
ret = <optimized out>
locked = <optimized out>
child_pending = <optimized out>
child = 0x7f3f3004c1a0 [GstVaapiDecode]
bin = 0x7f3f2c0160d0 [GstVaapiDecodeBin]
ret = <optimized out>
current = GST_STATE_PAUSED
next = GST_STATE_READY
have_async = 0
have_no_preroll = 0
base_time = 2803243898520
start_time = 0
---Type <return> to continue, or q <return> to quit---
it = 0x7f3f4c096260
done = 0
data =
{g_type = 25945344, data = {{v_int = 805618080, v_uint =
805618080, v_long = 139909365285280, v_ulong = 139909365285280, v_int64 =
139909365285280, v_uint64 = 139909365285280, v_float = 4.82964779e-10,
v_double = 6.9124410918910742e-310, v_pointer = 0x7f3f3004c1a0}, {v_int = 0,
v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0,
v_double = 0, v_pointer = 0x0}}}
__PRETTY_FUNCTION__ = "gst_bin_change_state_func"
__func__ = "gst_bin_change_state_func"
#14 0x00007f3fc6188365 in gst_bin_change_state_func (element=0x7f3f2c0160d0
[GstVaapiDecodeBin], transition=GST_STATE_CHANGE_PAUSED_TO_READY) at
gstbin.c:2756
child = 0x7f3f3004c1a0 [GstVaapiDecode]
bin = 0x7f3f2c0160d0 [GstVaapiDecodeBin]
ret = <optimized out>
current = GST_STATE_PAUSED
next = GST_STATE_READY
have_async = 0
have_no_preroll = 0
base_time = 2803243898520
start_time = 0
it = 0x7f3f4c096260
done = 0
data =
{g_type = 25945344, data = {{v_int = 805618080, v_uint =
805618080, v_long = 139909365285280, v_ulong = 139909365285280, v_int64 =
139909365285280, v_uint64 = 139909365285280, v_float = 4.82964779e-10,
v_double = 6.9124410918910742e-310, v_pointer = 0x7f3f3004c1a0}, {v_int = 0,
v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0,
v_double = 0, v_pointer = 0x0}}}
__PRETTY_FUNCTION__ = "gst_bin_change_state_func"
__func__ = "gst_bin_change_state_func"
#15 0x00007f3f40464a41 in () at
/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so
#16 0x00007f3fc61a91ce in gst_element_change_state
(element=element at entry=0x7f3f2c0160d0 [GstVaapiDecodeBin],
transition=transition at entry=GST_STATE_CHANGE_PAUSED_TO_READY) at
gstelement.c:2648
oclass = 0x7f3f8c041c90
ret = GST_STATE_CHANGE_SUCCESS
__PRETTY_FUNCTION__ = "gst_element_change_state"
#17 0x00007f3fc61a9947 in gst_element_set_state_func (element=0x7f3f2c0160d0
[GstVaapiDecodeBin], state=GST_STATE_READY) at gstelement.c:2602
current = GST_STATE_PAUSED
next = <optimized out>
old_pending = <optimized out>
ret = <optimized out>
transition = GST_STATE_CHANGE_PAUSED_TO_READY
old_ret = <optimized out>
__func__ = "gst_element_set_state_func"
__PRETTY_FUNCTION__ = "gst_element_set_state_func"
#18 0x00007f3fc6188365 in gst_bin_change_state_func (next=GST_STATE_READY,
current=GST_STATE_PAUSED, start_time=0, base_time=2803243898520,
element=0x7f3f2c0160d0 [GstVaapiDecodeBin], bin=0x1ac4bc0 [GstDecodeBin]) at
gstbin.c:2414
child_current = <optimized out>
found = <optimized out>
---Type <return> to continue, or q <return> to quit---
ret = <optimized out>
locked = <optimized out>
child_pending = <optimized out>
child = 0x7f3f2c0160d0 [GstVaapiDecodeBin]
bin = 0x1ac4bc0 [GstDecodeBin]
ret = <optimized out>
current = GST_STATE_PAUSED
next = GST_STATE_READY
have_async = 0
have_no_preroll = 0
base_time = 2803243898520
start_time = 0
it = 0x7f3f44012bd0
done = 0
data =
{g_type = 25945344, data = {{v_int = 738287824, v_uint =
738287824, v_long = 139909297955024, v_ulong = 139909297955024, v_int64 =
139909297955024, v_uint64 = 139909297955024, v_float = 1.83857443e-12,
v_double = 6.9124377653344327e-310, v_pointer = 0x7f3f2c0160d0}, {v_int = 0,
v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0,
v_double = 0, v_pointer = 0x0}}}
__PRETTY_FUNCTION__ = "gst_bin_change_state_func"
__func__ = "gst_bin_change_state_func"
#19 0x00007f3fc6188365 in gst_bin_change_state_func (element=0x1ac4bc0
[GstDecodeBin], transition=GST_STATE_CHANGE_PAUSED_TO_READY) at
gstbin.c:2756
child = 0x7f3f2c0160d0 [GstVaapiDecodeBin]
bin = 0x1ac4bc0 [GstDecodeBin]
ret = <optimized out>
current = GST_STATE_PAUSED
next = GST_STATE_READY
have_async = 0
have_no_preroll = 0
base_time = 2803243898520
start_time = 0
it = 0x7f3f44012bd0
done = 0
data =
{g_type = 25945344, data = {{v_int = 738287824, v_uint =
738287824, v_long = 139909297955024, v_ulong = 139909297955024, v_int64 =
139909297955024, v_uint64 = 139909297955024, v_float = 1.83857443e-12,
v_double = 6.9124377653344327e-310, v_pointer = 0x7f3f2c0160d0}, {v_int = 0,
v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0,
v_double = 0, v_pointer = 0x0}}}
__PRETTY_FUNCTION__ = "gst_bin_change_state_func"
__func__ = "gst_bin_change_state_func"
#20 0x00007f3fb80a7e57 in gst_decode_bin_change_state (element=0x1ac4bc0
[GstDecodeBin], transition=GST_STATE_CHANGE_PAUSED_TO_READY) at
gstdecodebin2.c:5296
bret = <optimized out>
ret = GST_STATE_CHANGE_SUCCESS
dbin = 0x1ac4bc0 [GstDecodeBin]
chain_to_free = 0x0
__PRETTY_FUNCTION__ = "gst_decode_bin_change_state"
#21 0x00007f3fc61a91ce in gst_element_change_state
(element=element at entry=0x1ac4bc0 [GstDecodeBin],
transition=transition at entry=GST_STATE_CHANGE_PAUSED_TO_READY)
---Type <return> to continue, or q <return> to quit---
at gstelement.c:2648
oclass = 0x1abf420
ret = GST_STATE_CHANGE_SUCCESS
__PRETTY_FUNCTION__ = "gst_element_change_state"
#22 0x00007f3fc61a9947 in gst_element_set_state_func (element=0x1ac4bc0
[GstDecodeBin], state=GST_STATE_READY) at gstelement.c:2602
current = GST_STATE_PAUSED
next = <optimized out>
old_pending = <optimized out>
ret = <optimized out>
transition = GST_STATE_CHANGE_PAUSED_TO_READY
old_ret = <optimized out>
__func__ = "gst_element_set_state_func"
__PRETTY_FUNCTION__ = "gst_element_set_state_func"
#23 0x00007f3fc6188365 in gst_bin_change_state_func (next=GST_STATE_READY,
current=GST_STATE_PAUSED, start_time=0, base_time=2803243898520,
element=0x1ac4bc0 [GstDecodeBin], bin=0x7f3f9c018a50 [GstPipeline]) at
gstbin.c:2414
child_current = <optimized out>
found = <optimized out>
ret = <optimized out>
locked = <optimized out>
child_pending = <optimized out>
child = 0x1ac4bc0 [GstDecodeBin]
bin = 0x7f3f9c018a50 [GstPipeline]
ret = <optimized out>
current = GST_STATE_PAUSED
next = GST_STATE_READY
have_async = 0
have_no_preroll = 0
base_time = 2803243898520
start_time = 0
it = 0x7f3f44012ed0
done = 0
data =
{g_type = 25945344, data = {{v_int = 28068800, v_uint =
28068800, v_long = 28068800, v_ulong = 28068800, v_int64 = 28068800,
v_uint64 = 28068800, v_float = 6.32915173e-38, v_double =
1.3867829799988781e-316, v_pointer = 0x1ac4bc0}, {v_int = 0, v_uint = 0,
v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double =
0, v_pointer = 0x0}}}
__PRETTY_FUNCTION__ = "gst_bin_change_state_func"
__func__ = "gst_bin_change_state_func"
#24 0x00007f3fc6188365 in gst_bin_change_state_func (element=0x7f3f9c018a50
[GstPipeline], transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstbin.c:2756
child = 0x1ac4bc0 [GstDecodeBin]
bin = 0x7f3f9c018a50 [GstPipeline]
ret = <optimized out>
current = GST_STATE_PAUSED
next = GST_STATE_READY
have_async = 0
have_no_preroll = 0
---Type <return> to continue, or q <return> to quit---
base_time = 2803243898520
start_time = 0
it = 0x7f3f44012ed0
done = 0
data =
{g_type = 25945344, data = {{v_int = 28068800, v_uint =
28068800, v_long = 28068800, v_ulong = 28068800, v_int64 = 28068800,
v_uint64 = 28068800, v_float = 6.32915173e-38, v_double =
1.3867829799988781e-316, v_pointer = 0x1ac4bc0}, {v_int = 0, v_uint = 0,
v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double =
0, v_pointer = 0x0}}}
__PRETTY_FUNCTION__ = "gst_bin_change_state_func"
__func__ = "gst_bin_change_state_func"
#25 0x00007f3fc61a91ce in gst_element_change_state
(element=element at entry=0x7f3f9c018a50 [GstPipeline],
transition=transition at entry=GST_STATE_CHANGE_PAUSED_TO_READY) at
gstelement.c:2648
oclass = 0x18d9800
ret = GST_STATE_CHANGE_SUCCESS
__PRETTY_FUNCTION__ = "gst_element_change_state"
#26 0x00007f3fc61a9947 in gst_element_set_state_func (element=0x7f3f9c018a50
[GstPipeline], state=GST_STATE_NULL) at gstelement.c:2602
current = GST_STATE_PAUSED
next = <optimized out>
old_pending = <optimized out>
ret = <optimized out>
transition = GST_STATE_CHANGE_PAUSED_TO_READY
old_ret = <optimized out>
__func__ = "gst_element_set_state_func"
__PRETTY_FUNCTION__ = "gst_element_set_state_func"
#27 0x0000000000948e3f in gst_media_object::changeState(GstState, bool)
(this=0x22611a0, _state=GST_STATE_NULL, _verbose=true)
here's the bt of a qtdemux thread
#0 0x00007f3fc43898e9 in syscall () at
../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007f3fc5c7abdf in g_cond_wait (cond=cond at entry=0x7f3f24049390,
mutex=mutex at entry=0x7f3f24049368)
at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gthread-posix.c:1394
sampled = 5877
#2 0x00007f3fc3174b82 in gst_data_queue_push (queue=0x7f3f240493c0
[GstDataQueue], item=item at entry=0x7f3f4c0c4920) at gstdataqueue.c:520
priv = 0x7f3f24049340
__func__ = "gst_data_queue_push"
#3 0x00007f3fb05c6ab5 in gst_multi_queue_chain (pad=<optimized out>,
parent=<optimized out>, buffer=0x2180bc0) at gstmultiqueue.c:1891
sq = 0x7f3f780be0b0
mq = 0x7f3f6c091230 [GstMultiQueue]
item = 0x7f3f4c0c4920
curid = <optimized out>
timestamp = 16832000000
duration = 21333333
__PRETTY_FUNCTION__ = "gst_multi_queue_chain"
#4 0x00007f3fc61be59f in gst_pad_push_data (data=0x2180bc0, type=4112,
pad=0x7f3f340436b0 [GstPad]) at gstpad.c:4188
chainfunc = 0x7f3fb05c69c0 <gst_multi_queue_chain>
parent = 0x7f3f6c091230 [GstMultiQueue]
ret = <optimized out>
handled = 0
peer = 0x7f3f340436b0 [GstPad]
ret = <optimized out>
handled = 0
__PRETTY_FUNCTION__ = "gst_pad_push_data"
#5 0x00007f3fc61be59f in gst_pad_push_data (pad=pad at entry=0x7f3f280234a0
[GstPad], type=type at entry=4112, data=data at entry=0x2180bc0) at gstpad.c:4440
peer = 0x7f3f340436b0 [GstPad]
ret = <optimized out>
handled = 0
__PRETTY_FUNCTION__ = "gst_pad_push_data"
#6 0x00007f3fc61c6543 in gst_pad_push (pad=0x7f3f280234a0 [GstPad],
buffer=0x2180bc0) at gstpad.c:4559
res = <optimized out>
__func__ = "gst_pad_push"
#7 0x00007f3f881a27c7 in () at
/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstisomp4.so
#8 0x00007f3f881bbab7 in () at
/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstisomp4.so
#9 0x00007f3fc61f0f31 in gst_task_func (task=0x7f3f1c04e4d0 [GstTask]) at
gsttask.c:332
lock = 0x7f3f14013ba0
tself = 0x7f3f28098770
priv = 0x7f3f1c04e480
__PRETTY_FUNCTION__ = "gst_task_func"
#10 0x00007f3fc5c5d54e in g_thread_pool_thread_proxy (data=<optimized out>)
at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gthreadpool.c:307
task = 0x7f3f3400aa50
pool = 0x18c8e00
#11 0x00007f3fc5c5cbb5 in g_thread_proxy (data=0x7f3f28098770) at
/build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gthread.c:780
thread = 0x7f3f28098770
#12 0x00007f3fc4efa6ba in start_thread (arg=0x7f3f03777700) at
pthread_create.c:333
---Type <return> to continue, or q <return> to quit---
__res = <optimized out>
pd = 0x7f3f03777700
now = <optimized out>
unwind_buf =
{cancel_jmp_buf = {{jmp_buf = {139908617828096,
4465231497355108243, 0, 139910103163487, 8388608, 139908761057232,
-4356750446556307565, -4357169156185481325}, mask_was_saved = 0}}, priv =
{pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype =
0}}}
not_first_call = <optimized out>
pagesize_m1 = <optimized out>
sp = <optimized out>
freesize = <optimized out>
__PRETTY_FUNCTION__ = "start_thread"
#13 0x00007f3fc438f82d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:109
thats the bt of a multiqueue, probably for one of the pipelines:
#0 0x00007f3fc43898e9 in syscall () at
../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007f3fc5c7abdf in g_cond_wait (cond=cond at entry=0x7f3f780be250,
mutex=mutex at entry=0x7f3f6c0913a0)
at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gthread-posix.c:1394
sampled = 3558
#2 0x00007f3fb05c7b65 in gst_multi_queue_loop (pad=<optimized out>) at
gstmultiqueue.c:1647
sq = 0x7f3f780be0b0
item = <optimized out>
sitem = 0x7f3f4c0c4760
mq = 0x7f3f6c091230 [GstMultiQueue]
object = <optimized out>
newid = 5532
result = <optimized out>
next_time = 16932666666
is_buffer = 1
do_update_buffering = 0
dropping = 0
__PRETTY_FUNCTION__ = "gst_multi_queue_loop"
#3 0x00007f3fc61f0f31 in gst_task_func (task=0x7f3f78022830 [GstTask]) at
gsttask.c:332
lock = 0x7f3f2c0c7740
tself = 0x7f3f7000c720
priv = 0x7f3f780227e0
__PRETTY_FUNCTION__ = "gst_task_func"
#4 0x00007f3fc5c5d54e in g_thread_pool_thread_proxy (data=<optimized out>)
at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gthreadpool.c:307
task = 0x7f3f9000b430
pool = 0x18c8e00
#5 0x00007f3fc5c5cbb5 in g_thread_proxy (data=0x7f3f7000c720) at
/build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gthread.c:780
thread = 0x7f3f7000c720
#6 0x00007f3fc4efa6ba in start_thread (arg=0x7f3f20ebf700) at
pthread_create.c:333
__res = <optimized out>
pd = 0x7f3f20ebf700
now = <optimized out>
unwind_buf =
{cancel_jmp_buf = {{jmp_buf = {139909112002304,
4465231497355108243, 0, 139908886815327, 8388608, 139909500059584,
-4356685407866544237, -4357169156185481325}, mask_was_saved = 0}}, priv =
{pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype =
0}}}
not_first_call = <optimized out>
pagesize_m1 = <optimized out>
sp = <optimized out>
freesize = <optimized out>
__PRETTY_FUNCTION__ = "start_thread"
#7 0x00007f3fc438f82d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:109
here's the bt for the other multiqueue: this is also the thread which owns
the mutex i'm waiting for in the main thread. this thread waits for a gmutex
i can't futher investigate. any hints?
#0 0x00007f3fc43898e9 in syscall () at
../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007f3fc5c7abdf in g_cond_wait (cond=0x7f3f3004c630,
mutex=0x7f3f3004c628) at
/build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gthread-posix.c:1394
sampled = 1913
#2 0x00007f3f4045981b in () at
/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so
#3 0x00007f3fc59994c6 in gst_video_decoder_decode_frame
(decoder=decoder at entry=0x7f3f3004c1a0 [GstVaapiDecode],
frame=0x7f3fac029720) at gstvideodecoder.c:3329
priv = 0x7f3f3004c000
decoder_class = 0x7f3f8c005850
ret = GST_FLOW_OK
__func__ = "gst_video_decoder_decode_frame"
__PRETTY_FUNCTION__ = "gst_video_decoder_decode_frame"
#4 0x00007f3fc59a168c in gst_video_decoder_have_frame
(decoder=0x7f3f3004c1a0 [GstVaapiDecode]) at gstvideodecoder.c:3261
priv = 0x7f3f3004c000
buffer = 0x7f3f4c0a56c0
n_available = <optimized out>
pts = <optimized out>
dts = <optimized out>
duration = <optimized out>
ret = GST_FLOW_OK
__PRETTY_FUNCTION__ = "gst_video_decoder_have_frame"
#5 0x00007f3f4045868a in () at
/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so
#6 0x00007f3fc5999816 in gst_video_decoder_parse_available
(dec=dec at entry=0x7f3f3004c1a0 [GstVaapiDecode], at_eos=at_eos at entry=0,
new_buffer=0,
new_buffer at entry=1) at gstvideodecoder.c:894
decoder_class = 0x7f3f8c005850
priv = 0x7f3f3004c000
ret = GST_FLOW_OK
was_available = 26395
available = 26395
inactive = 0
__PRETTY_FUNCTION__ = "gst_video_decoder_parse_available"
#7 0x00007f3fc59999c4 in gst_video_decoder_chain_forward
(decoder=decoder at entry=0x7f3f3004c1a0 [GstVaapiDecode],
buf=buf at entry=0x7f3f2407fe50, at_eos=at_eos at entry=0) at
gstvideodecoder.c:2117
priv = 0x7f3f3004c000
klass = <optimized out>
ret = GST_FLOW_OK
__func__ = "gst_video_decoder_chain_forward"
#8 0x00007f3fc599c173 in gst_video_decoder_chain (pad=<optimized out>,
parent=0x7f3f3004c1a0 [GstVaapiDecode], buf=0x7f3f2407fe50) at
gstvideodecoder.c:2413
decoder = 0x7f3f3004c1a0 [GstVaapiDecode]
ret = GST_FLOW_OK
__PRETTY_FUNCTION__ = "gst_video_decoder_chain"
#9 0x00007f3fc61be59f in gst_pad_push_data (data=0x7f3f2407fe50, type=4112,
pad=0x7f3f900ff8f0 [GstPad]) at gstpad.c:4188
chainfunc = 0x7f3fc599be80 <gst_video_decoder_chain>
parent = 0x7f3f3004c1a0 [GstVaapiDecode]
ret = <optimized out>
handled = 0
peer = 0x7f3f900ff8f0 [GstPad]
---Type <return> to continue, or q <return> to quit---
ret = <optimized out>
handled = 0
__PRETTY_FUNCTION__ = "gst_pad_push_data"
#10 0x00007f3fc61be59f in gst_pad_push_data (pad=pad at entry=0x7f3f8c02a2a0
[GstProxyPad], type=type at entry=4112, data=data at entry=0x7f3f2407fe50) at
gstpad.c:4440
peer = 0x7f3f900ff8f0 [GstPad]
ret = <optimized out>
handled = 0
__PRETTY_FUNCTION__ = "gst_pad_push_data"
#11 0x00007f3fc61c6543 in gst_pad_push (pad=pad at entry=0x7f3f8c02a2a0
[GstProxyPad], buffer=buffer at entry=0x7f3f2407fe50) at gstpad.c:4559
res = <optimized out>
__func__ = "gst_pad_push"
#12 0x00007f3fc61af563 in gst_proxy_pad_chain_default (pad=0x7f3f8c046c80
[GstGhostPad], parent=<optimized out>, buffer=0x7f3f2407fe50) at
gstghostpad.c:126
res = <optimized out>
internal = 0x7f3f8c02a2a0 [GstProxyPad]
__func__ = "gst_proxy_pad_chain_default"
#13 0x00007f3fc61be59f in gst_pad_push_data (data=0x7f3f2407fe50, type=4112,
pad=0x7f3f8c046c80 [GstGhostPad]) at gstpad.c:4188
chainfunc = 0x7f3fc61af4b0 <gst_proxy_pad_chain_default>
parent = 0x7f3f2c0160d0 [GstVaapiDecodeBin]
ret = <optimized out>
handled = 0
peer = 0x7f3f8c046c80 [GstGhostPad]
ret = <optimized out>
handled = 0
__PRETTY_FUNCTION__ = "gst_pad_push_data"
#14 0x00007f3fc61be59f in gst_pad_push_data (pad=pad at entry=0x7f3fac07cde0
[GstPad], type=type at entry=4112, data=data at entry=0x7f3f2407fe50) at
gstpad.c:4440
peer = 0x7f3f8c046c80 [GstGhostPad]
ret = <optimized out>
handled = 0
__PRETTY_FUNCTION__ = "gst_pad_push_data"
#15 0x00007f3fc61c6543 in gst_pad_push (pad=0x7f3fac07cde0 [GstPad],
buffer=0x7f3f2407fe50) at gstpad.c:4559
res = <optimized out>
__func__ = "gst_pad_push"
#16 0x00007f3fc316452d in gst_base_transform_chain (pad=<optimized out>,
parent=0x7f3f1800c2d0 [GstCapsFilter], buffer=<optimized out>)
at gstbasetransform.c:2369
position_out = <optimized out>
trans = 0x7f3f1800c2d0 [GstCapsFilter]
klass = 0x7f3f9c007640
priv = 0x7f3f1800c200
ret = <optimized out>
position = 16880000000
timestamp = <optimized out>
duration = <optimized out>
outbuf = 0x7f3f2407fe50
__PRETTY_FUNCTION__ = "gst_base_transform_chain"
#17 0x00007f3fc61be59f in gst_pad_push_data (data=0x7f3f2407fe50, type=4112,
pad=0x22dc2a0 [GstPad]) at gstpad.c:4188
---Type <return> to continue, or q <return> to quit---
chainfunc = 0x7f3fc31643a0 <gst_base_transform_chain>
parent = 0x7f3f1800c2d0 [GstCapsFilter]
ret = <optimized out>
handled = 0
peer = 0x22dc2a0 [GstPad]
ret = <optimized out>
handled = 0
__PRETTY_FUNCTION__ = "gst_pad_push_data"
#18 0x00007f3fc61be59f in gst_pad_push_data (pad=pad at entry=0x7f3f6c0aa2a0
[GstPad], type=type at entry=4112, data=data at entry=0x7f3f2407fe50) at
gstpad.c:4440
peer = 0x22dc2a0 [GstPad]
ret = <optimized out>
handled = 0
__PRETTY_FUNCTION__ = "gst_pad_push_data"
#19 0x00007f3fc61c6543 in gst_pad_push (pad=0x7f3f6c0aa2a0 [GstPad],
buffer=buffer at entry=0x7f3f2407fe50) at gstpad.c:4559
res = <optimized out>
__func__ = "gst_pad_push"
#20 0x00007f3fc3148099 in gst_base_parse_push_frame
(parse=parse at entry=0x7f3f78099260 [GstH264Parse],
frame=frame at entry=0x7f3f34021e80) at gstbaseparse.c:2533
ret = GST_FLOW_OK
last_start = <optimized out>
last_stop = 16880000000
klass = <optimized out>
buffer = 0x7f3f2407fe50
size = <optimized out>
__func__ = "gst_base_parse_push_frame"
__PRETTY_FUNCTION__ = "gst_base_parse_push_frame"
#21 0x00007f3fc314bf8f in gst_base_parse_finish_frame (frame=0x7f3f34021e80,
parse=0x7f3f78099260 [GstH264Parse]) at gstbaseparse.c:2352
offset = <optimized out>
buffer = 0x7f3f2407fe50
__func__ = "gst_base_parse_finish_frame"
__PRETTY_FUNCTION__ = "gst_base_parse_finish_frame"
#22 0x00007f3fc314bf8f in gst_base_parse_finish_frame
(parse=parse at entry=0x7f3f78099260 [GstH264Parse],
frame=frame at entry=0x7f3f34021e80, size=<optimized out>)
at gstbaseparse.c:2691
__func__ = "gst_base_parse_finish_frame"
__PRETTY_FUNCTION__ = "gst_base_parse_finish_frame"
#23 0x00007f3fb016604f in gst_h264_parse_handle_frame (frame=0x7f3f34021e80,
parse=0x7f3f78099260 [GstH264Parse]) at gsth264parse.c:1021
h264parse = 0x7f3f78099260 [GstH264Parse]
buffer = <optimized out>
ret = <optimized out>
nalu =
{ref_idc = 0, type = 0, idr_pic_flag = 0 '\000', size = 0,
offset = 0, sc_offset = 0, valid = 0, data = 0x0, header_bytes = 0 '\000',
extension_type = 0 '\000', extension = {mvc = {non_idr_flag = 0 '\000',
priority_id = 0 '\000', view_id = 0, temporal_id = 0 '\000', anchor_pic_flag
= 0 '\000', inter_view_flag = 0 '\000'}}}
nl = <optimized out>
parse_res = GST_H264_PARSER_ERROR
map =
---Type <return> to continue, or q <return> to quit---
{memory = 0x7f3f78032000, flags = GST_MAP_READ, data =
0x7f3f78032090 "", size = 26395, maxsize = 26402, user_data = {0x671b, 0x0,
0x7f3f78099260, 0x48}, _gst_reserved = {0x7f3fc64784b0 <_gst_debug_min>,
0x7f3f137fec0c, 0x7f3f2407fa10, 0x0}}
left = 26395
h264parse = 0x7f3f78099260 [GstH264Parse]
buffer = <optimized out>
map =
{memory = 0x7f3f78032000, flags = GST_MAP_READ, data =
0x7f3f78032090 "", size = 26395, maxsize = 26402, user_data = {0x671b, 0x0,
0x7f3f78099260, 0x48}, _gst_reserved = {0x7f3fc64784b0 <_gst_debug_min>,
0x7f3f137fec0c, 0x7f3f2407fa10, 0x0}}
data = <optimized out>
size = <optimized out>
current_off = 0
drain = <optimized out>
nonext = <optimized out>
nalparser = <optimized out>
nalu =
{ref_idc = 0, type = 0, idr_pic_flag = 0 '\000', size = 0,
offset = 0, sc_offset = 80000000, valid = 0, data = 0xdfd0c0c00 <error:
Cannot access memory at address 0xdfd0c0c00>, header_bytes = 0 '\000',
extension_type = 0 '\000', extension = {mvc = {non_idr_flag = 0 '\000',
priority_id = 0 '\000', view_id = 0, temporal_id = 0 '\000', anchor_pic_flag
= 0 '\000', inter_view_flag = 0 '\000'}}}
pres = <optimized out>
framesize = <optimized out>
__func__ = "gst_h264_parse_handle_frame"
#24 0x00007f3fb016604f in gst_h264_parse_handle_frame (parse=0x7f3f78099260
[GstH264Parse], frame=0x7f3f34021e80, skipsize=<optimized out>)
at gsth264parse.c:1065
h264parse = 0x7f3f78099260 [GstH264Parse]
buffer = <optimized out>
map =
{memory = 0x7f3f78032000, flags = GST_MAP_READ, data =
0x7f3f78032090 "", size = 26395, maxsize = 26402, user_data = {0x671b, 0x0,
0x7f3f78099260, 0x48}, _gst_reserved = {0x7f3fc64784b0 <_gst_debug_min>,
0x7f3f137fec0c, 0x7f3f2407fa10, 0x0}}
data = <optimized out>
size = <optimized out>
current_off = 0
drain = <optimized out>
nonext = <optimized out>
nalparser = <optimized out>
nalu =
{ref_idc = 0, type = 0, idr_pic_flag = 0 '\000', size = 0,
offset = 0, sc_offset = 80000000, valid = 0, data = 0xdfd0c0c00 <error:
Cannot access memory at address 0xdfd0c0c00>, header_bytes = 0 '\000',
extension_type = 0 '\000', extension = {mvc = {non_idr_flag = 0 '\000',
priority_id = 0 '\000', view_id = 0, temporal_id = 0 '\000', anchor_pic_flag
= 0 '\000', inter_view_flag = 0 '\000'}}}
pres = <optimized out>
framesize = <optimized out>
__func__ = "gst_h264_parse_handle_frame"
#25 0x00007f3fc31444b0 in gst_base_parse_handle_buffer
(parse=parse at entry=0x7f3f78099260 [GstH264Parse], buffer=<optimized out>,
skip=skip at entry=0x7f3f137fec08, flushed=flushed at entry=0x7f3f137fec0c) at
gstbaseparse.c:2166
klass = 0x7f3f9c039000
frame = 0x7f3f34021e80
---Type <return> to continue, or q <return> to quit---
ret = <optimized out>
__func__ = "gst_base_parse_handle_buffer"
__PRETTY_FUNCTION__ = "gst_base_parse_handle_buffer"
#26 0x00007f3fc3148dae in gst_base_parse_chain (pad=<optimized out>,
parent=0x7f3f78099260 [GstH264Parse], buffer=<optimized out>) at
gstbaseparse.c:3230
flush = 0
updated_prev_pts = <optimized out>
bclass = <optimized out>
parse = 0x7f3f78099260 [GstH264Parse]
ret = GST_FLOW_OK
old_ret = GST_FLOW_OK
tmpbuf = <optimized out>
skip = 0
min_size = <optimized out>
av = 26395
pts = 16840000000
dts = <optimized out>
__PRETTY_FUNCTION__ = "gst_base_parse_chain"
#27 0x00007f3fc61be59f in gst_pad_push_data (data=0x7f3f4c0a56c0, type=4112,
pad=0x22dd4a0 [GstPad]) at gstpad.c:4188
chainfunc = 0x7f3fc3148620 <gst_base_parse_chain>
parent = 0x7f3f78099260 [GstH264Parse]
ret = <optimized out>
handled = 0
peer = 0x22dd4a0 [GstPad]
ret = <optimized out>
handled = 0
__PRETTY_FUNCTION__ = "gst_pad_push_data"
#28 0x00007f3fc61be59f in gst_pad_push_data (pad=pad at entry=0x22dc720
[GstPad], type=type at entry=4112, data=data at entry=0x7f3f4c0a56c0) at
gstpad.c:4440
peer = 0x22dd4a0 [GstPad]
ret = <optimized out>
handled = 0
__PRETTY_FUNCTION__ = "gst_pad_push_data"
#29 0x00007f3fc61c6543 in gst_pad_push (pad=0x22dc720 [GstPad],
buffer=buffer at entry=0x7f3f4c0a56c0) at gstpad.c:4559
res = <optimized out>
__func__ = "gst_pad_push"
#30 0x00007f3fb05c8124 in gst_multi_queue_loop (allow_drop=<synthetic
pointer>, object=0x7f3f4c0a56c0, sq=0x7f3f780a7170, mq=0x7f3f6c091230
[GstMultiQueue])
at gstmultiqueue.c:1417
buffer = 0x7f3f4c0a56c0
timestamp = 16800000000
duration = <optimized out>
result = GST_FLOW_OK
sq = 0x7f3f780a7170
item = <optimized out>
sitem = 0x7f3f4c0dad50
mq = 0x7f3f6c091230 [GstMultiQueue]
object = <optimized out>
---Type <return> to continue, or q <return> to quit---
newid = 5534
result = <optimized out>
next_time = <optimized out>
is_buffer = 1
do_update_buffering = 0
dropping = 0
__PRETTY_FUNCTION__ = "gst_multi_queue_loop"
#31 0x00007f3fb05c8124 in gst_multi_queue_loop (pad=<optimized out>) at
gstmultiqueue.c:1701
sq = 0x7f3f780a7170
item = <optimized out>
sitem = 0x7f3f4c0dad50
mq = 0x7f3f6c091230 [GstMultiQueue]
object = <optimized out>
newid = 5534
result = <optimized out>
next_time = <optimized out>
is_buffer = 1
do_update_buffering = 0
dropping = 0
__PRETTY_FUNCTION__ = "gst_multi_queue_loop"
#32 0x00007f3fc61f0f31 in gst_task_func (task=0x1adaef0 [GstTask]) at
gsttask.c:332
lock = 0x22dc790
tself = 0x7f3f34026230
priv = 0x1adaea0
__PRETTY_FUNCTION__ = "gst_task_func"
#33 0x00007f3fc5c5d54e in g_thread_pool_thread_proxy (data=<optimized out>)
at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gthreadpool.c:307
task = 0x1abefb0
pool = 0x18c8e00
#34 0x00007f3fc5c5cbb5 in g_thread_proxy (data=0x7f3f34026230) at
/build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gthread.c:780
thread = 0x7f3f34026230
#35 0x00007f3fc4efa6ba in start_thread (arg=0x7f3f137ff700) at
pthread_create.c:333
__res = <optimized out>
pd = 0x7f3f137ff700
now = <optimized out>
unwind_buf =
{cancel_jmp_buf = {{jmp_buf = {139908886820608,
4465231497355108243, 0, 139908861633119, 8388608, 139910774439568,
-4356785566503886957, -4357169156185481325}, mask_was_saved = 0}}, priv =
{pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype =
0}}}
not_first_call = <optimized out>
pagesize_m1 = <optimized out>
sp = <optimized out>
freesize = <optimized out>
__PRETTY_FUNCTION__ = "start_thread"
#36 0x00007f3fc438f82d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:109
the last thread is runned by a typefind:sink element:
#0 0x00007f3fc43898e9 in syscall () at
../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007f3fc5c7abdf in g_cond_wait (cond=cond at entry=0x7f3f1c04e0b0,
mutex=mutex at entry=0x7f3f1c04e068)
at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gthread-posix.c:1394
sampled = 1
#2 0x00007f3fc61f10cd in gst_task_func (task=0x7f3f1c04e050 [GstTask]) at
gsttask.c:317
lock = 0x7f3f9c0ce550
tself = 0x7f3f7409a0f0
priv = 0x7f3f1c04e000
__PRETTY_FUNCTION__ = "gst_task_func"
#3 0x00007f3fc5c5d54e in g_thread_pool_thread_proxy (data=<optimized out>)
at /build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gthreadpool.c:307
task = 0x7f3f7c0054b0
pool = 0x18c8e00
#4 0x00007f3fc5c5cbb5 in g_thread_proxy (data=0x7f3f7409a0f0) at
/build/glib2.0-prJhLS/glib2.0-2.48.2/./glib/gthread.c:780
thread = 0x7f3f7409a0f0
#5 0x00007f3fc4efa6ba in start_thread (arg=0x7f3f02376700) at
pthread_create.c:333
__res = <optimized out>
pd = 0x7f3f02376700
now = <optimized out>
unwind_buf =
{cancel_jmp_buf = {{jmp_buf = {139908596852480,
4465231497355108243, 0, 139908634608223, 8388608, 139909365050352,
-4356753195872247917, -4357169156185481325}, mask_was_saved = 0}}, priv =
{pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype =
0}}}
not_first_call = <optimized out>
pagesize_m1 = <optimized out>
sp = <optimized out>
freesize = <optimized out>
__PRETTY_FUNCTION__ = "start_thread"
#6 0x00007f3fc438f82d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:109
anyone has any idea on which this happens?
kind regards,
henning
--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/gst-element-set-state-deadlock-tp4682492.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.
More information about the gstreamer-devel
mailing list