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 626581 - [playbin2] regression: occasional deadlocks in streamsynchronizer
[playbin2] regression: occasional deadlocks in streamsynchronizer
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal blocker
: 0.10.31
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2010-08-10 23:31 UTC by Tim-Philipp Müller
Modified: 2010-08-12 10:08 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
streamsynchronizer: prevent deadlock with _chain when deactivating pad (1.37 KB, patch)
2010-08-11 12:09 UTC, Mark Nauwelaerts
committed Details | Review

Description Tim-Philipp Müller 2010-08-10 23:31:28 UTC
Totem regularly locks up during music playback and goom visualisations, with git of GStreamer:

(gdb) thread apply all bt

Thread 6 (Thread 0x7f81677fd710 (LWP 12676))

  • #0 __lll_lock_wait
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S line 136
  • #1 _L_lock_953
    from /lib/libpthread.so.0
  • #2 __pthread_mutex_lock
    at pthread_mutex_lock.c line 61
  • #3 gst_stream_synchronizer_sink_chain
    at gststreamsynchronizer.c line 573
  • #4 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #5 gst_pad_push_data
    at gstpad.c line 4411
  • #6 gst_tee_do_push
    at gsttee.c line 636
  • #7 gst_tee_handle_data
    at gsttee.c line 715
  • #8 gst_tee_chain
    at gsttee.c line 789
  • #9 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #10 gst_pad_push_data
    at gstpad.c line 4411
  • #11 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #12 gst_pad_push_data
    at gstpad.c line 4411
  • #13 gst_selector_pad_chain
    at gstinputselector.c line 647
  • #14 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #15 gst_pad_push_data
    at gstpad.c line 4411
  • #16 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #17 gst_pad_push_data
    at gstpad.c line 4411
  • #18 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #19 gst_pad_push_data
    at gstpad.c line 4411
  • #20 gst_mad_chain
    at gstmad.c line 1653
  • #21 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #22 gst_pad_push_data
    at gstpad.c line 4411
  • #23 gst_mp3parse_emit_frame
    at gstmpegaudioparse.c line 903
  • #24 gst_mp3parse_handle_data
    at gstmpegaudioparse.c line 1529
  • #25 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #26 gst_pad_push_data
    at gstpad.c line 4411
  • #27 gst_tag_demux_chain
    at gsttagdemux.c line 712
  • #28 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #29 gst_pad_push_data
    at gstpad.c line 4411
  • #30 gst_type_find_element_chain
    at gsttypefindelement.c line 767
  • #31 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #32 gst_pad_push_data
    at gstpad.c line 4411
  • #33 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #34 gst_pad_push_data
    at gstpad.c line 4411
  • #35 gst_base_src_loop
    at gstbasesrc.c line 2496
  • #36 gst_task_func
    at gsttask.c line 271
  • #37 g_thread_pool_thread_proxy
    at /tmp/buildd/glib2.0-2.24.1/glib/gthreadpool.c line 315
  • #38 g_thread_create_proxy
    at /tmp/buildd/glib2.0-2.24.1/glib/gthread.c line 1893
  • #39 start_thread
    at pthread_create.c line 300
  • #40 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 112
  • #41 ??

Thread 4 (Thread 0x7f81728b7710 (LWP 15313))

  • #0 __lll_lock_wait
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S line 136
  • #1 _L_lock_953
    from /lib/libpthread.so.0
  • #2 __pthread_mutex_lock
    at pthread_mutex_lock.c line 61
  • #3 gst_stream_synchronizer_sink_chain
    at gststreamsynchronizer.c line 573
  • #4 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #5 gst_pad_push_data
    at gstpad.c line 4411
  • #6 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #7 gst_pad_push_data
    at gstpad.c line 4411
  • #8 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #9 gst_pad_push_data
    at gstpad.c line 4411
  • #10 gst_base_transform_chain
    at gstbasetransform.c line 2307
  • #11 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #12 gst_pad_push_data
    at gstpad.c line 4411
  • #13 gst_goom_chain
    at gstgoom.c line 528
  • #14 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #15 gst_pad_push_data
    at gstpad.c line 4411
  • #16 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #17 gst_pad_push_data
    at gstpad.c line 4411
  • #18 gst_base_transform_chain
    at gstbasetransform.c line 2307
  • #19 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #20 gst_pad_push_data
    at gstpad.c line 4411
  • #21 gst_base_transform_chain
    at gstbasetransform.c line 2307
  • #22 gst_pad_chain_data_unchecked
    at gstpad.c line 4182
  • #23 gst_pad_push_data
    at gstpad.c line 4411
  • #24 gst_queue_push_one
    at gstqueue.c line 1083
  • #25 gst_queue_loop
    at gstqueue.c line 1185
  • #26 gst_task_func
    at gsttask.c line 271
  • #27 g_thread_pool_thread_proxy
    at /tmp/buildd/glib2.0-2.24.1/glib/gthreadpool.c line 315
  • #28 g_thread_create_proxy
    at /tmp/buildd/glib2.0-2.24.1/glib/gthread.c line 1893
  • #29 start_thread
    at pthread_create.c line 300
  • #30 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 112
  • #31 ??

Thread 1 (Thread 0x7f818a50a7e0 (LWP 10058))

  • #0 __lll_lock_wait
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S line 136
  • #1 _L_lock_953
    from /lib/libpthread.so.0
  • #2 __pthread_mutex_lock
    at pthread_mutex_lock.c line 61
  • #3 IA__g_static_rec_mutex_lock
    at /tmp/buildd/glib2.0-2.24.1/glib/gthread.c line 1420
  • #4 post_activate
    at gstpad.c line 635
  • #5 gst_pad_activate_push
    at gstpad.c line 937
  • #6 gst_pad_set_active
    at gstpad.c line 693
  • #7 gst_stream_synchronizer_release_stream
    at gststreamsynchronizer.c line 721
  • #8 gst_stream_synchronizer_release_pad
    at gststreamsynchronizer.c line 766
  • #9 gst_play_sink_reconfigure
    at gstplaysink.c line 2245
  • #10 gst_play_bin_set_flags
    at gstplaybin2.c line 1242
  • #11 gst_play_bin_set_property
    at gstplaybin2.c line 1734
  • #12 object_set_property
    at /tmp/buildd/glib2.0-2.24.1/gobject/gobject.c line 973
  • #13 IA__g_object_set_valist
    at /tmp/buildd/glib2.0-2.24.1/gobject/gobject.c line 1488
  • #14 IA__g_object_set
    at /tmp/buildd/glib2.0-2.24.1/gobject/gobject.c line 1594
  • #15 setup_vis
    at bacon-video-widget-gst-0.10.c line 4904
  • #16 bvw_check_for_cover_pixbuf
    at bacon-video-widget-gst-0.10.c line 4397
  • #17 bvw_update_tags
    at bacon-video-widget-gst-0.10.c line 1856
  • #18 bvw_update_tags_dispatcher
    at bacon-video-widget-gst-0.10.c line 1879
  • #19 g_main_dispatch
    at /tmp/buildd/glib2.0-2.24.1/glib/gmain.c line 1960
  • #20 IA__g_main_context_dispatch
    at /tmp/buildd/glib2.0-2.24.1/glib/gmain.c line 2513
  • #21 g_main_context_iterate
    at /tmp/buildd/glib2.0-2.24.1/glib/gmain.c line 2591
  • #22 IA__g_main_loop_run
    at /tmp/buildd/glib2.0-2.24.1/glib/gmain.c line 2799
  • #23 IA__gtk_main
    at /tmp/buildd/gtk+2.0-2.20.1/gtk/gtkmain.c line 1219
  • #24 main
    at totem.c line 299

Comment 1 Tim-Philipp Müller 2010-08-11 00:10:01 UTC
Also seeing these (one per song / eos?), but don't know if that's related at all:

(lt-totem:12331): GStreamer-CRITICAL **: 
Trying to dispose element vis_bin, but it is in PLAYING instead of the NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.
This problem may also be caused by a refcounting bug in the
application or some element.
Comment 2 Sebastian Dröge (slomo) 2010-08-11 07:05:37 UTC
Mark reported two problems on IRC yesterday which might be related. He had fixes for them.

Otherwise I'll take a look at this later :)
Comment 3 Mark Nauwelaerts 2010-08-11 12:09:03 UTC
Created attachment 167589 [details] [review]
streamsynchronizer: prevent deadlock with _chain when deactivating pad

Looks like there might be a deadlocking race in streamsynchronizer between pad deactivation and _chain.  Current patch should remedy.
Comment 4 Sebastian Dröge (slomo) 2010-08-11 13:59:57 UTC
Comment on attachment 167589 [details] [review]
streamsynchronizer: prevent deadlock with _chain when deactivating pad

Makes sense, please push this
Comment 5 Mark Nauwelaerts 2010-08-12 10:08:16 UTC
Hopefully following takes care of this:

commit 9975a2d7b411967c965f6cef8fd4d7ea97f619f7
Author: Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Date:   Wed Aug 11 12:49:40 2010 +0200

    streamsynchronizer: prevent deadlock with _chain when deactivating pad
    
    Fixes #626581.