[Bug 690420] New: Random lock-up in GstDiscoverer

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue Dec 18 07:03:35 PST 2012


https://bugzilla.gnome.org/show_bug.cgi?id=690420
  GStreamer | gst-plugins-base | 1.x

           Summary: Random lock-up in GstDiscoverer
    Classification: Platform
           Product: GStreamer
           Version: 1.x
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-base
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: mail at jensge.org
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=231808)
 --> (https://bugzilla.gnome.org/attachment.cgi?id=231808)
Sample program

After several-thousend iterations with the attached program, I end up in a
situation like in the backtrace. The file doesn't really matter, mostly it's on
some random MP3 or FLAC. Happens a lot more often in Rygel (which is using
async discovery, maybe because of that). Also doesn't matter if the discoverer
is re-used or re-created. Freeing the information seems to change the timing
enough to make the lock appear way less often.

Thread 2 (Thread 0x7fa3d7744700 (LWP 1994)):
#0  __lll_lock_wait () at
../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:132
#1  0x00007fa3da6e1080 in _L_lock_903 () from
/lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007fa3da6e0f19 in __pthread_mutex_lock (mutex=0x7fa3d0068a60) at
pthread_mutex_lock.c:82
#3  0x00007fa3db215862 in gst_element_set_state_func (element=0x7fa3d006c930,
state=GST_STATE_PAUSED) at gstelement.c:2475
#4  0x00007fa3d7993b69 in connect_pad (dbin=0x26722d0, src=0x267b410,
dpad=0x7fa3d0022d90, pad=0x267d640, caps=<optimized out>, factories=<optimized
out>, chain=0x7fa3c8062120) at gstdecodebin2.c:2095
#5  0x00007fa3d799b25d in analyze_new_pad (dbin=0x26722d0, src=<optimized out>,
pad=0x267d640, caps=0x7fa3d0017000, chain=<optimized out>) at
gstdecodebin2.c:1660
#6  0x00007fa3d799b702 in type_found (typefind=0x267b410,
probability=<optimized out>, caps=0x7fa3d0017000, decode_bin=0x26722d0) at
gstdecodebin2.c:2413
#7  0x00007fa3d8d29a14 in ffi_call_unix64 () from
/usr/lib/x86_64-linux-gnu/libffi.so.6
#8  0x00007fa3d8d29435 in ffi_call () from
/usr/lib/x86_64-linux-gnu/libffi.so.6
#9  0x00007fa3dac2952b in g_cclosure_marshal_generic (closure=0x26a8c40,
return_gvalue=0x0, n_param_values=3, param_values=<optimized out>,
invocation_hint=<optimized out>, marshal_data=0x7fa3d799b4b0) at
gclosure.c:1454
#10 0x00007fa3dac28cc2 in g_closure_invoke (closure=0x26a8c40,
return_value=0x0, n_param_values=3, param_values=0x7fa3d7743990,
invocation_hint=<optimized out>) at gclosure.c:777
#11 0x00007fa3dac3ada3 in signal_emit_unlocked_R (node=<optimized out>,
detail=0, instance=<optimized out>, emission_return=0x0,
instance_and_params=0x7fa3d7743990) at gsignal.c:3567
#12 0x00007fa3dac437c0 in g_signal_emit_valist (instance=<optimized out>,
signal_id=<optimized out>, detail=0, var_args=<optimized out>) at
gsignal.c:3315
#13 0x00007fa3dac43a02 in g_signal_emit (instance=<optimized out>,
signal_id=<optimized out>, detail=<optimized out>) at gsignal.c:3371
#14 0x00007fa3d7776a37 in gst_type_find_element_loop (pad=<optimized out>) at
gsttypefindelement.c:1051
#15 0x00007fa3db257d2f in gst_task_func (task=0x2687d80) at gsttask.c:316
#16 0x00007fa3da9601c8 in g_thread_pool_thread_proxy (data=<optimized out>) at
gthreadpool.c:309
#17 0x00007fa3da95f945 in g_thread_proxy (data=0x26760f0) at gthread.c:798
#18 0x00007fa3da6dee9a in start_thread (arg=0x7fa3d7744700) at
pthread_create.c:308
#19 0x00007fa3da40bcbd in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#20 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7fa3db8c57c0 (LWP 1993)):
#0  __lll_lock_wait () at
../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:132
#1  0x00007fa3da6e1080 in _L_lock_903 () from
/lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007fa3da6e0f19 in __pthread_mutex_lock (mutex=0x7fa3d00baa90) at
pthread_mutex_lock.c:82
#3  0x00007fa3db232058 in gst_pad_pause_task (pad=0x267c6f0) at gstpad.c:5261
#4  0x00007fa3d7776ebc in gst_type_find_element_activate_src_mode
(pad=<optimized out>, parent=<optimized out>, mode=GST_PAD_MODE_PULL, active=1)
at gsttypefindelement.c:967
#5  0x00007fa3db22d396 in gst_pad_activate_mode (pad=0x267d640,
mode=GST_PAD_MODE_PULL, active=1) at gstpad.c:1060
#6  0x00007fa3db22d95d in gst_pad_activate_mode (pad=0x267cd80,
mode=GST_PAD_MODE_PULL, active=1) at gstpad.c:1034
#7  0x00007fa3d8ae18c9 in gst_base_parse_sink_activate (sinkpad=0x267cd80,
parent=<optimized out>) at gstbaseparse.c:3091
#8  0x00007fa3db22dbd6 in gst_pad_set_active (pad=0x267cd80, active=1) at
gstpad.c:936
#9  0x00007fa3db2110e4 in activate_pads (vpad=<optimized out>,
ret=0x7fff3e31db10, active=0x7fff3e31db6c) at gstelement.c:2679
#10 0x00007fa3db22079c in gst_iterator_fold (it=0x2674830, func=0x7fa3db2110c0
<activate_pads>, ret=0x7fff3e31db10, user_data=0x7fff3e31db6c) at
gstiterator.c:614
#11 0x00007fa3db2112e5 in iterator_activate_fold_with_resync (iter=0x2674830,
user_data=0x7fff3e31db6c, func=0x7fa3db2110c0 <activate_pads>) at
gstelement.c:2699
#12 0x00007fa3db2131a8 in gst_element_pads_activate (element=0x7fa3d006c930,
active=1) at gstelement.c:2743
#13 0x00007fa3db213485 in gst_element_change_state_func
(element=0x7fa3d006c930, transition=<optimized out>) at gstelement.c:2807
#14 0x00007fa3d8ae1b5e in gst_base_parse_change_state (element=0x7fa3d006c930,
transition=GST_STATE_CHANGE_READY_TO_PAUSED) at gstbaseparse.c:4236
#15 0x00007fa3db2151cc in gst_element_change_state (element=<optimized out>,
transition=<optimized out>) at gstelement.c:2594
#16 0x00007fa3db215b4f in gst_element_set_state_func (element=0x7fa3d006c930,
state=GST_STATE_PAUSED) at gstelement.c:2550
#17 0x00007fa3db1fd2d0 in gst_bin_element_set_state (next=GST_STATE_PAUSED,
current=GST_STATE_READY, start_time=0, base_time=0, element=0x7fa3d006c930,
bin=0x26722d0) at gstbin.c:2306
#18 gst_bin_change_state_func (element=0x26722d0,
transition=GST_STATE_CHANGE_READY_TO_PAUSED) at gstbin.c:2608
#19 0x00007fa3d79996f0 in gst_decode_bin_change_state (element=0x26722d0,
transition=GST_STATE_CHANGE_READY_TO_PAUSED) at gstdecodebin2.c:4198
#20 0x00007fa3db2151cc in gst_element_change_state (element=<optimized out>,
transition=<optimized out>) at gstelement.c:2594
#21 0x00007fa3db21524f in gst_element_change_state (element=0x26722d0,
transition=<optimized out>) at gstelement.c:2631
#22 0x00007fa3db215b4f in gst_element_set_state_func (element=0x26722d0,
state=GST_STATE_PAUSED) at gstelement.c:2550
#23 0x00007fa3db1fd2d0 in gst_bin_element_set_state (next=GST_STATE_PAUSED,
current=GST_STATE_READY, start_time=0, base_time=0, element=0x26722d0,
bin=0x2672070) at gstbin.c:2306
#24 gst_bin_change_state_func (element=0x2672070,
transition=GST_STATE_CHANGE_READY_TO_PAUSED) at gstbin.c:2608
#25 0x00007fa3d799ffb3 in gst_uri_decode_bin_change_state (element=0x2672070,
transition=GST_STATE_CHANGE_READY_TO_PAUSED) at gsturidecodebin.c:2579
#26 0x00007fa3db2151cc in gst_element_change_state (element=<optimized out>,
transition=<optimized out>) at gstelement.c:2594
#27 0x00007fa3db215b4f in gst_element_set_state_func (element=0x2672070,
state=GST_STATE_PAUSED) at gstelement.c:2550
#28 0x00007fa3db1fd2d0 in gst_bin_element_set_state (next=GST_STATE_PAUSED,
current=GST_STATE_READY, start_time=0, base_time=0, element=0x2672070,
bin=0x266e4f0) at gstbin.c:2306
#29 gst_bin_change_state_func (element=0x266e4f0,
transition=GST_STATE_CHANGE_READY_TO_PAUSED) at gstbin.c:2608
#30 0x00007fa3db233bd4 in gst_pipeline_change_state (element=0x266e4f0,
transition=<optimized out>) at gstpipeline.c:468
#31 0x00007fa3db2151cc in gst_element_change_state (element=<optimized out>,
transition=<optimized out>) at gstelement.c:2594
#32 0x00007fa3db21524f in gst_element_change_state (element=0x266e4f0,
transition=<optimized out>) at gstelement.c:2631
#33 0x00007fa3db215b4f in gst_element_set_state_func (element=0x266e4f0,
state=GST_STATE_PAUSED) at gstelement.c:2550
#34 0x00007fa3db4d3996 in _setup_locked (dc=0x266c510) at gstdiscoverer.c:1510
#35 0x00007fa3db4d423a in start_discovering (dc=0x266c510) at
gstdiscoverer.c:1620
#36 0x00007fa3db4d7991 in gst_discoverer_discover_uri (discoverer=0x266c510,
uri=<optimized out>, err=0x0) at gstdiscoverer.c:1800
#37 0x0000000000400989 in main ()

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