After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 592864 - deadlocks from recent inputselector/streamselector change
deadlocks from recent inputselector/streamselector change
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal normal
: 0.10.25
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2009-08-24 08:46 UTC by Jan Schmidt
Modified: 2009-08-26 14:47 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Jan Schmidt 2009-08-24 08:46:43 UTC
I'm seeing deadlocks playing files with Totem. Reverting this commit fixes them:

commit 0c1fa2e8abc66b80ae37581160e28ae39210ba13
Author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
Date:   Tue Aug 18 21:45:31 2009 +0200

    streamselector/inputselector: Use iterate internal links instead of deprecated get internal links

Backtrace:

Thread 1 (Thread 0xb6724760 (LWP 14590))

  • #0 __kernel_vsyscall
  • #1 __lll_lock_wait
    from /lib/tls/i686/cmov/libpthread.so.0
  • #2 _L_lock_89
    from /lib/tls/i686/cmov/libpthread.so.0
  • #3 pthread_mutex_lock
    from /lib/tls/i686/cmov/libpthread.so.0
  • #4 gst_stream_selector_get_linked_pad
    at gststreamselector.c line 608
  • #5 _iterate_next
    at gststreamselector.c line 706
  • #6 gst_iterator_next
    at gstiterator.c line 306
  • #7 gst_pad_dispatcher
    at gstpad.c line 3479
  • #8 gst_pad_query_default
    at gstpad.c line 3629
  • #9 gst_pad_query
    at gstpad.c line 3545
  • #10 gst_queue_handle_src_query
    at gstqueue.c line 1210
  • #11 gst_pad_query
    at gstpad.c line 3545
  • #12 gst_proxy_pad_do_query
    at gstghostpad.c line 140
  • #13 gst_pad_query
    at gstpad.c line 3545
  • #14 gst_pad_dispatcher
    at gstpad.c line 3488
  • #15 gst_pad_query_default
    at gstpad.c line 3629
  • #16 gst_pad_query
    at gstpad.c line 3545
  • #17 gst_pad_dispatcher
    at gstpad.c line 3488
  • #18 gst_pad_query_default
    at gstpad.c line 3629
  • #19 gst_pad_query
    at gstpad.c line 3545
  • #20 gst_pad_dispatcher
    at gstpad.c line 3488
  • #21 gst_pad_query_default
    at gstpad.c line 3629
  • #22 gst_pad_query
    at gstpad.c line 3545
  • #23 gst_proxy_pad_do_query
    at gstghostpad.c line 140
  • #24 gst_pad_query
    at gstpad.c line 3545
  • #25 gst_proxy_pad_do_query
    at gstghostpad.c line 140
  • #26 gst_pad_query
    at gstpad.c line 3545
  • #27 gst_proxy_pad_do_query
    at gstghostpad.c line 140
  • #28 gst_pad_query
    at gstpad.c line 3545
  • #29 gst_base_sink_peer_query
    at gstbasesink.c line 4179
  • #30 gst_base_sink_query
    at gstbasesink.c line 4557
  • #31 gst_element_query
    at gstelement.c line 1613
  • #32 bin_query_duration_fold
    at gstbin.c line 3219
  • #33 gst_iterator_fold
    at gstiterator.c line 545
  • #34 gst_bin_query
    at gstbin.c line 3440
  • #35 gst_element_query
    at gstelement.c line 1613
  • #36 bin_query_duration_fold
    at gstbin.c line 3219
  • #37 gst_iterator_fold
    at gstiterator.c line 545
  • #38 gst_bin_query
    at gstbin.c line 3440
  • #39 gst_element_query
    at gstelement.c line 1613
  • #40 bin_query_duration_fold
    at gstbin.c line 3219
  • #41 gst_iterator_fold
  • #42 gst_bin_query
    at gstbin.c line 3440
  • #43 gst_element_query
    at gstelement.c line 1613
  • #44 bin_query_duration_fold
    at gstbin.c line 3219
  • #45 gst_iterator_fold
    at gstiterator.c line 545
  • #46 gst_bin_query
    at gstbin.c line 3440
  • #47 gst_element_query
    at gstelement.c line 1613
  • #48 bin_query_duration_fold
    at gstbin.c line 3219
  • #49 gst_iterator_fold
    at gstiterator.c line 545
  • #50 gst_bin_query
    at gstbin.c line 3440
  • #51 gst_element_query
    at gstelement.c line 1613
  • #52 gst_element_query_duration
    at gstutils.c line 2146
  • #53 bacon_video_widget_get_stream_length
  • #54 bacon_video_widget_get_metadata
  • #55 bacon_video_widget_properties_update
    from /usr/lib/totem/plugins/properties/libmovie-properties.so
  • #56 ??
    from /usr/lib/totem/plugins/properties/libmovie-properties.so
  • #57 totemobject_marshal_VOID__STRING_STRING_STRING_UINT
  • #58 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #59 ??
    from /usr/lib/libgobject-2.0.so.0
  • #60 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #61 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #62 totem_metadata_updated
  • #63 ??
  • #64 ??
  • #65 g_cclosure_marshal_VOID__VOID
    from /usr/lib/libgobject-2.0.so.0
  • #66 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #67 ??
    from /usr/lib/libgobject-2.0.so.0
  • #68 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #69 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #70 ??
  • #71 ??
  • #72 marshal_VOID__MINIOBJECT
    at gstbus.c line 134
  • #73 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #74 ??
    from /usr/lib/libgobject-2.0.so.0
  • #75 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #76 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #77 gst_bus_async_signal_func
    at gstbus.c line 1098
  • #78 gst_bus_source_dispatch
    at gstbus.c line 761
  • #79 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #80 ??
    from /usr/lib/libglib-2.0.so.0
  • #81 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0
  • #82 gtk_main
    from /usr/lib/libgtk-x11-2.0.so.0
  • #83 main
  • #0 __kernel_vsyscall

Comment 1 Sebastian Dröge (slomo) 2009-08-24 09:12:17 UTC
The problem is probably that the GstIterator uses the GstObject lock... using another mutex should fix this. OTOH I plan to implement what Olivier suggests in the last comments of bug #592209, which will fix this bug too (because there's no locking involved anymore).
Comment 2 Tim-Philipp Müller 2009-08-26 11:05:56 UTC
> OTOH I plan to implement what Olivier suggests in the last
> comments of bug #592209, which will fix this bug too
> (because there's no locking involved anymore).

Are you working on that already? If not, maybe we should revert that commit for now?
Comment 3 Sebastian Dröge (slomo) 2009-08-26 11:22:36 UTC
I plan to work on that this afternoon/evening, sorry
Comment 4 Sebastian Dröge (slomo) 2009-08-26 14:47:59 UTC
commit 67a0ef9b3a6cbb788a5504f81db2a760d18ee83d
Author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
Date:   Wed Aug 26 16:45:49 2009 +0200

    playbin: Fix iterate internal linked pads functions for the stream selectors
    
    This now used the new gst_iterator_new_single() function and as a side effec
    fixes bug #592864.