[Bug 755123] tagdemux: protect internal state for concurrent access

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Fri Sep 18 15:52:18 PDT 2015


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

--- Comment #11 from GstBlub <gstblub at gmail.com> ---
(In reply to Tim-Philipp Müller from comment #7)
> I think there is another bug for decodebin, let's stick to tagdemux for this
> one.

I suspect you mean bug #690420?  I have a patch that appears to be fixing this,
just waiting for approval before I can submit it.

Once I fixed this decodebin bug, I ran into yet another very similar crash in
baseparse:

Thread 7 (LWP 26272):
#0  0xb74d8de7 in ?? () from /usr/lib/libglib-2.0.so.0
#1  0xb74d9076 in g_logv () from /usr/lib/libglib-2.0.so.0
#2  0xb74d91b2 in g_log () from /usr/lib/libglib-2.0.so.0
#3  0xb74d93bd in g_return_if_fail_warning () from /usr/lib/libglib-2.0.so.0
#4  0xb7140c10 in gst_pb_utils_add_codec_description_to_tag_list
(taglist=0x82c7920, codec_tag=0xb3fe1c40 "audio-codec", caps=0x0) at
descriptions.c:1015
#5  0xb3fccaed in gst_aac_parse_pre_push_frame (parse=0x823af88,
frame=0xb2cfef0c) at gstaacparse.c:1339
#6  0xb739081e in gst_base_parse_push_frame (parse=0x823af88, frame=0xb2cfef0c)
at gstbaseparse.c:2247
#7  0xb7393454 in gst_base_parse_chain (pad=0x82e2150, parent=0x823af88,
buffer=0x8620058) at gstbaseparse.c:2822
#8  0xb71e0024 in gst_pad_chain_data_unchecked (pad=0x82e2150, type=4112,
data=0x8620058) at gstpad.c:3836
#9  0xb71e0a54 in gst_pad_push_data (pad=0xb31ccd80, type=4112, data=0x8620058)
at gstpad.c:4069
#10 0xb71e0fd2 in gst_pad_push (pad=0xb31ccd80, buffer=0x8620058) at
gstpad.c:4180
#11 0xb5a7214d in gst_single_queue_push_one (mq=0x8237450, sq=0x8695e98,
object=0x8620058) at gstmultiqueue.c:1150
#12 0xb5a731ad in gst_multi_queue_loop (pad=0xb31ccd80) at gstmultiqueue.c:1399
#13 0xb7213e91 in gst_task_func (task=0x861a528) at gsttask.c:317
#14 0xb7214f06 in default_func (tdata=0x8623f18, pool=0x8137470) at
gsttaskpool.c:68
#15 0xb74f8deb in ?? () from /usr/lib/libglib-2.0.so.0
#16 0xb74f7f72 in ?? () from /usr/lib/libglib-2.0.so.0
#17 0xb7ad0425 in start_thread () from /lib/libpthread.so.0
#18 0xb6d513fe in clone () from /lib/libc.so.6

Thread 6 (LWP 27052):
#0  0xffffe424 in __kernel_vsyscall ()
#1  0xb7ad4981 in pthread_cond_timedwait@@GLIBC_2.3.2 () from
/lib/libpthread.so.0
#2  0xb75172b9 in g_cond_wait_until () from /usr/lib/libglib-2.0.so.0
#3  0xb74a3ff8 in ?? () from /usr/lib/libglib-2.0.so.0
#4  0xb74f8e1b in ?? () from /usr/lib/libglib-2.0.so.0
#5  0xb74f7f72 in ?? () from /usr/lib/libglib-2.0.so.0
#6  0xb7ad0425 in start_thread () from /lib/libpthread.so.0
#7  0xb6d513fe in clone () from /lib/libc.so.6

Thread 1 (LWP 24472):
#0  0xffffe424 in __kernel_vsyscall ()
#1  0xb7ad6fc2 in __lll_lock_wait () from /lib/libpthread.so.0
#2  0xb7ad2852 in _L_lock_157 () from /lib/libpthread.so.0
#3  0xb7ad231d in pthread_mutex_lock () from /lib/libpthread.so.0
#4  0xb7517872 in g_rec_mutex_lock () from /usr/lib/libglib-2.0.so.0
#5  0xb7395560 in gst_base_parse_activate (parse=0x823af88, active=0) at
gstbaseparse.c:3339
#6  0xb73956b7 in gst_base_parse_sink_activate_mode (pad=0x82e2150,
parent=0x823af88, mode=GST_PAD_MODE_PUSH, active=0) at gstbaseparse.c:3363
#7  0xb71d849c in gst_pad_activate_mode (pad=0x82e2150, mode=GST_PAD_MODE_PUSH,
active=0) at gstpad.c:1147
#8  0xb71d7fac in gst_pad_set_active (pad=0x82e2150, active=0) at gstpad.c:1031
#9  0xb71be671 in activate_pads (vpad=0xbfffe5b8, ret=0xbfffe5f8,
active=0xbfffe664) at gstelement.c:2687
#10 0xb71ce8c2 in gst_iterator_fold (it=0xb31c2070, func=0xb71be636
<activate_pads>, ret=0xbfffe5f8, user_data=0xbfffe664) at gstiterator.c:612
#11 0xb71be711 in iterator_activate_fold_with_resync (iter=0xb31c2070,
func=0xb71be636 <activate_pads>, user_data=0xbfffe664) at gstelement.c:2707
#12 0xb71be850 in gst_element_pads_activate (element=0x823af88, active=0) at
gstelement.c:2752
#13 0xb71beb3b in gst_element_change_state_func (element=0x823af88,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstelement.c:2815
#14 0xb739b620 in gst_base_parse_change_state (element=0x823af88,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstbaseparse.c:4494
#15 0xb71be2b9 in gst_element_change_state (element=0x823af88,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstelement.c:2602
#16 0xb71be16f in gst_element_set_state_func (element=0x823af88,
state=GST_STATE_READY) at gstelement.c:2558
#17 0xb71bdd82 in gst_element_set_state (element=0x823af88,
state=GST_STATE_READY) at gstelement.c:2459
#18 0xb71945f7 in gst_bin_element_set_state (bin=0x820c4f0, element=0x823af88,
base_time=0, start_time=0, current=GST_STATE_PAUSED, next=GST_STATE_READY)
    at gstbin.c:2328
#19 0xb7195c72 in gst_bin_change_state_func (element=0x820c4f0,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstbin.c:2665
#20 0xb4cb9691 in gst_decode_bin_change_state (element=0x820c4f0,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstdecodebin2.c:4581
#21 0xb71be2b9 in gst_element_change_state (element=0x820c4f0,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstelement.c:2602
#22 0xb71be16f in gst_element_set_state_func (element=0x820c4f0,
state=GST_STATE_READY) at gstelement.c:2558
#23 0xb71bdd82 in gst_element_set_state (element=0x820c4f0,
state=GST_STATE_READY) at gstelement.c:2459
#24 0xb71945f7 in gst_bin_element_set_state (bin=0x820c360, element=0x820c4f0,
base_time=0, start_time=0, current=GST_STATE_PAUSED, next=GST_STATE_READY)
    at gstbin.c:2328
#25 0xb7195c72 in gst_bin_change_state_func (element=0x820c360,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstbin.c:2665
#26 0xb4cc1969 in gst_uri_decode_bin_change_state (element=0x820c360,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gsturidecodebin.c:2728
#27 0xb71be2b9 in gst_element_change_state (element=0x820c360,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstelement.c:2602
#28 0xb71be16f in gst_element_set_state_func (element=0x820c360,
state=GST_STATE_READY) at gstelement.c:2558
#29 0xb71bdd82 in gst_element_set_state (element=0x820c360,
state=GST_STATE_READY) at gstelement.c:2459
#30 0xb71945f7 in gst_bin_element_set_state (bin=0xb31d07c8, element=0x820c360,
base_time=0, start_time=0, current=GST_STATE_PAUSED, next=GST_STATE_READY)
    at gstbin.c:2328
#31 0xb7195c72 in gst_bin_change_state_func (element=0xb31d07c8,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstbin.c:2665
#32 0xb71e7857 in gst_pipeline_change_state (element=0xb31d07c8,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstpipeline.c:469
#33 0xb4cce47f in gst_play_bin_change_state (element=0xb31d07c8,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstplaybin2.c:5487
#34 0xb71be2b9 in gst_element_change_state (element=0xb31d07c8,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstelement.c:2602
#35 0xb71be16f in gst_element_set_state_func (element=0xb31d07c8,
state=GST_STATE_READY) at gstelement.c:2558
#36 0xb71bdd82 in gst_element_set_state (element=0xb31d07c8,
state=GST_STATE_READY) at gstelement.c:2459
#37 0x080ae4d4 in ?? () // application calling into gstreamer

-- 
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