[Bug 646811] New: baseparse: deadlock in gst_base_parse_set_index
GStreamer (bugzilla.gnome.org)
bugzilla at gnome.org
Tue Apr 5 06:21:58 PDT 2011
https://bugzilla.gnome.org/show_bug.cgi?id=646811
GStreamer | gst-plugins-bad | git
Summary: baseparse: deadlock in gst_base_parse_set_index
Classification: Platform
Product: GStreamer
Version: git
OS/Version: Linux
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: gst-plugins-bad
AssignedTo: gstreamer-bugs at lists.freedesktop.org
ReportedBy: philipj at opera.com
QAContact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
Opera is using a memindex on decodebin2 to have that be populated by
matroskademux, allowing us to map bytes to time and vice versa with help from
the seek index. This has exposed a deadlock in the new baseparse in
gst-plugins-bad.
Input: http://www.nch.com.au/acm/8kmp38.wav
gst_base_parse_set_index takes the object lock and then calls
gst_index_get_writer_id. The default resolver, GST_INDEX_RESOLVER_PATH, will
use gst_object_get_path_string which also tries to take the object lock. Since
it's a GMutex which is not recursive, it will simply deadlock.
Backtrace:
#0 __lll_lock_wait () at
../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
#1 0x00007ffff6aad5b4 in _L_lock_944 () from
/lib/x86_64-linux-gnu/libpthread.so.0
#2 0x00007ffff6aad3ca in __pthread_mutex_lock (mutex=0x4f99420) at
pthread_mutex_lock.c:61
#3 0x00007fffecc294be in gst_object_get_parent (object=0x4f04890) at
gstobject.c:893
#4 0x00007fffecc29d32 in gst_object_get_path_string (object=0x4f04890) at
gstobject.c:1143
#5 0x00007fffecc57b4f in gst_index_path_resolver (index=0x4fada80,
writer=0x4f04890, writer_string=0x7fffe9919318, data=0x0) at gstindex.c:650
#6 0x00007fffecc57ea4 in gst_index_get_writer_id (index=0x4fada80,
writer=0x4f04890, id=0x4f04e98) at gstindex.c:724
#7 0x00007fffe8caea54 in gst_base_parse_set_index (element=0x4f04890,
index=0x4fada80) at gstbaseparse.c:3652
#8 0x00007fffecc4672a in gst_element_set_index (element=0x4f04890,
index=0x4fada80) at gstelement.c:657
#9 0x00007fffecc2c3cd in gst_bin_add_func (bin=0x4d54020, element=0x4f04890)
at gstbin.c:1104
#10 0x00007fffecc2c8b7 in gst_bin_add (bin=0x4d54020, element=0x4f04890) at
gstbin.c:1228
#11 0x00007fffeb59d6b2 in connect_pad (dbin=0x4d54020, src=0x5036010,
dpad=0x4e16840, pad=0x3f8cc10, caps=0x7fffe402a800, factories=0x4920f80,
chain=0x4f8eee0) at gstdecodebin2.c:1766
#12 0x00007fffeb59c1c8 in analyze_new_pad (dbin=0x4d54020, src=0x5036010,
pad=0x3f8cc10, caps=0x7fffe402a800, chain=0x4f8eee0) at gstdecodebin2.c:1518
#13 0x00007fffeb59f23d in pad_added_cb (element=0x5036010, pad=0x3f8cc10,
chain=0x4f8eee0) at gstdecodebin2.c:2130
#14 0x00007fffed11e81c in g_closure_invoke (closure=0x42c3b00,
return_value=0x0, n_param_values=2, param_values=0x7fffe404aed0,
invocation_hint=0x7fffe9919840) at
/build/buildd/glib2.0-2.28.5/./gobject/gclosure.c:767
#15 0x00007fffed130019 in signal_emit_unlocked_R (node=<value optimized out>,
detail=0, instance=0x5036010, emission_return=0x0,
instance_and_params=0x7fffe404aed0) at
/build/buildd/glib2.0-2.28.5/./gobject/gsignal.c:3252
#16 0x00007fffed139258 in g_signal_emit_valist (instance=<value optimized
out>, signal_id=<value optimized out>, detail=<value optimized out>,
var_args=<value optimized out>) at
/build/buildd/glib2.0-2.28.5/./gobject/gsignal.c:2983
#17 0x00007fffed13941f in g_signal_emit (instance=<value optimized out>,
signal_id=<value optimized out>, detail=<value optimized out>) at
/build/buildd/glib2.0-2.28.5/./gobject/gsignal.c:3040
#18 0x00007fffecc46ca3 in gst_element_add_pad (element=0x5036010,
pad=0x3f8cc10) at gstelement.c:769
#19 0x00007fffe9921cf5 in gst_wavparse_add_src_pad (wav=0x5036010, buf=<value
optimized out>) at gstwavparse.c:1799
#20 0x00007fffe9922193 in gst_wavparse_stream_data (wav=0x5036010) at
gstwavparse.c:1918
#21 0x00007fffe9922fbd in gst_wavparse_loop (pad=0x3f8c610) at
gstwavparse.c:2057
#22 0x00007fffecca0c9b in gst_task_func (task=0x4f92040) at gsttask.c:318
#23 0x00007fffecca1dee in default_func (tdata=0x5881510, pool=0x499e000) at
gsttaskpool.c:70
#24 0x00007fffeed68b16 in g_thread_pool_thread_proxy (data=<value optimized
out>) at /build/buildd/glib2.0-2.28.5/./glib/gthreadpool.c:319
#25 0x00007fffeed663e4 in g_thread_create_proxy (data=0x4ffb9c0) at
/build/buildd/glib2.0-2.28.5/./glib/gthread.c:1897
#26 0x00007ffff6aaad8c in start_thread (arg=0x7fffe991a700) at
pthread_create.c:304
#27 0x00007ffff6055f7d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#28 0x0000000000000000 in ?? ()
--
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- 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