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 576453 - [flacdec] blocks the seeking thread
[flacdec] blocks the seeking thread
Status: RESOLVED DUPLICATE of bug 579422
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2009-03-23 17:09 UTC by Alessandro Decina
Modified: 2009-05-06 12:59 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Alessandro Decina 2009-03-23 17:09:55 UTC
Seeking with flacdec can potentially block the seeking thread. In my case i'm seeking from the main thread and it's blocking because of a pad block.

FLAC__stream_decoder_seek_absolute seems to produce a buffer. flacdec has code to avoid calling gst_pad_push during seeking. It should also avoid calling gst_pad_alloc_buffer.

here's a traceback:

(gdb) bt
  • #0 pthread_cond_wait
    from /lib/libpthread.so.0
  • #1 handle_pad_block
    at gstpad.c line 3866
  • #2 gst_pad_alloc_buffer_full
    at gstpad.c line 2875
  • #3 gst_pad_alloc_buffer
    at gstpad.c line 2995
  • #4 gst_proxy_pad_do_bufferalloc
    at gstghostpad.c line 182
  • #5 gst_pad_buffer_alloc_unchecked
    at gstpad.c line 2807
  • #6 gst_pad_alloc_buffer_full
    at gstpad.c line 2884
  • #7 gst_pad_alloc_buffer
    at gstpad.c line 2995
  • #8 gst_proxy_pad_do_bufferalloc
    at gstghostpad.c line 182
  • #9 gst_pad_buffer_alloc_unchecked
  • #10 gst_pad_alloc_buffer_full
    at gstpad.c line 2884
  • #11 gst_pad_alloc_buffer_and_set_caps
    at gstpad.c line 3028
  • #12 gst_flac_dec_write
    at gstflacdec.c line 1108
  • #13 gst_flac_dec_write_stream
    at gstflacdec.c line 1219
  • #14 ??
    from /usr/lib/libFLAC.so.8
  • #15 FLAC__stream_decoder_process_single
    from /usr/lib/libFLAC.so.8
  • #16 FLAC__stream_decoder_seek_absolute
    from /usr/lib/libFLAC.so.8
  • #17 gst_flac_dec_handle_seek_event
    at gstflacdec.c line 1998
  • #18 gst_flac_dec_src_event
    at gstflacdec.c line 2110
  • #19 gst_pad_send_event
  • #20 gst_pad_push_event
    at gstpad.c line 4593
  • #21 gst_proxy_pad_do_event
    at gstghostpad.c line 128
  • #22 gst_pad_send_event
    at gstpad.c line 4737
  • #23 gst_pad_push_event
    at gstpad.c line 4593
  • #24 gst_proxy_pad_do_event
    at gstghostpad.c line 128
  • #25 ghostpad_event_function
    at gnlobject.c line 703
  • #26 gst_pad_send_event
    at gstpad.c line 4737
  • #27 update_pipeline
    at gnlcomposition.c line 2036
  • #28 seek_handling
    at gnlcomposition.c line 767
  • #29 handle_seek_event
    at gnlcomposition.c line 804
  • #30 gnl_composition_event_handler
  • #31 gst_pad_send_event
    at gstpad.c line 4737
  • #32 gst_pad_push_event
    at gstpad.c line 4593
  • #33 gst_base_transform_src_eventfunc
    at gstbasetransform.c line 1773
  • #34 _wrap_GstBaseTransform__do_src_event
    at gstbase.override line 831
  • #35 PyEval_EvalFrameEx
    at ../Python/ceval.c line 3595
  • #36 PyEval_EvalCodeEx
    at ../Python/ceval.c line 2858
  • #37 function_call
    at ../Objects/funcobject.c line 517
  • #38 PyObject_Call
    at ../Objects/abstract.c line 1861
  • #39 instancemethod_call
    at ../Objects/classobject.c line 2519
  • #40 PyObject_Call
    at ../Objects/abstract.c line 1861
  • #41 PyEval_CallObjectWithKeywords
    at ../Python/ceval.c line 3464
  • #42 _wrap_GstBaseTransform__proxy_do_src_event
    at gst.c line 19064
  • #43 gst_base_transform_src_event
    at gstbasetransform.c line 1742
  • #44 gst_pad_send_event
    at gstpad.c line 4737
  • #45 gst_pad_push_event
    at gstpad.c line 4593
  • #46 gst_proxy_pad_do_event
    at gstghostpad.c line 128
  • #47 gst_pad_send_event
    at gstpad.c line 4737
  • #48 gst_pad_push_event
    at gstpad.c line 4593
  • #49 gst_pad_event_default_dispatch
    at gstpad.c line 3363
  • #50 gst_pad_event_default
    at gstpad.c line 3437
  • #51 gst_pad_send_event
    at gstpad.c line 4737
  • #52 gst_pad_push_event
  • #53 gst_queue_handle_src_event
    at gstqueue.c line 1176
  • #54 gst_pad_send_event
    at gstpad.c line 4737
  • #55 gst_pad_push_event
    at gstpad.c line 4593
  • #56 gst_proxy_pad_do_event
    at gstghostpad.c line 128
  • #57 gst_pad_send_event
    at gstpad.c line 4737
  • #58 gst_pad_push_event
    at gstpad.c line 4593
  • #59 gst_base_transform_src_eventfunc
    at gstbasetransform.c line 1773
  • #60 gst_base_transform_src_event
    at gstbasetransform.c line 1742
  • #61 gst_pad_send_event
    at gstpad.c line 4737
  • #62 gst_pad_push_event
    at gstpad.c line 4593
  • #63 gst_base_transform_src_eventfunc
    at gstbasetransform.c line 1773
  • #64 gst_base_transform_src_event
    at gstbasetransform.c line 1742
  • #65 gst_pad_send_event
    at gstpad.c line 4737
  • #66 gst_pad_push_event
    at gstpad.c line 4593
  • #67 gst_base_transform_src_eventfunc
    at gstbasetransform.c line 1773
  • #68 gst_base_transform_src_event
    at gstbasetransform.c line 1742
  • #69 gst_pad_send_event
    at gstpad.c line 4737
  • #70 gst_pad_push_event
    at gstpad.c line 4593
  • #71 gst_proxy_pad_do_event
    at gstghostpad.c line 128
  • #72 gst_pad_send_event
    at gstpad.c line 4737
  • #73 gst_pad_push_event
    at gstpad.c line 4593
  • #74 gst_base_sink_send_event
    at gstbasesink.c line 3603
  • #75 gst_element_send_event
  • #76 gst_bin_send_event
    at gstbin.c line 2502
  • #77 gst_element_send_event
    at gstelement.c line 1383
  • #78 gst_bin_send_event
    at gstbin.c line 2502
  • #79 gst_element_send_event
    at gstelement.c line 1383
  • #80 gst_bin_send_event
    at gstbin.c line 2502
  • #81 gst_element_send_event
    at gstelement.c line 1383
  • #82 gst_element_seek
    at gstelement.c line 1423
  • #83 _wrap_gst_element_seek
    at gst.c line 4774
  • #84 PyEval_EvalFrameEx
    at ../Python/ceval.c line 3595
  • #85 PyEval_EvalCodeEx
  • #86 PyEval_EvalFrameEx
    at ../Python/ceval.c line 3691
  • #87 PyEval_EvalCodeEx
    at ../Python/ceval.c line 2858
  • #88 function_call
    at ../Objects/funcobject.c line 517
  • #89 PyObject_Call
    at ../Objects/abstract.c line 1861
  • #90 instancemethod_call
    at ../Objects/classobject.c line 2519
  • #91 PyObject_Call
    at ../Objects/abstract.c line 1861
  • #92 PyEval_CallObjectWithKeywords
    at ../Python/ceval.c line 3464
  • #93 pyg_closure_marshal
    at pygtype.c line 1109
  • #94 IA__g_closure_invoke
  • #95 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.18.2/gobject/gsignal.c line 3244
  • #96 pygobject_emit
    at pygobject.c line 1734
  • #97 PyEval_EvalFrameEx
    at ../Python/ceval.c line 3595
  • #98 PyEval_EvalCodeEx
    at ../Python/ceval.c line 2858
  • #99 function_call
    at ../Objects/funcobject.c line 517
  • #100 PyObject_Call
    at ../Objects/abstract.c line 1861
  • #101 PyEval_EvalFrameEx
    at ../Python/ceval.c line 3875
  • #102 PyEval_EvalCodeEx
  • #103 function_call
    at ../Objects/funcobject.c line 517
  • #104 PyObject_Call
    at ../Objects/abstract.c line 1861
  • #105 PyEval_EvalFrameEx
    at ../Python/ceval.c line 3875
  • #106 PyEval_EvalCodeEx
    at ../Python/ceval.c line 2858
  • #107 PyEval_EvalFrameEx
    at ../Python/ceval.c line 3691
  • #108 PyEval_EvalCodeEx
    at ../Python/ceval.c line 2858
  • #109 function_call
    at ../Objects/funcobject.c line 517
  • #110 PyObject_Call
    at ../Objects/abstract.c line 1861
  • #111 instancemethod_call
  • #112 PyObject_Call
    at ../Objects/abstract.c line 1861
  • #113 PyEval_CallObjectWithKeywords
    at ../Python/ceval.c line 3464
  • #114 _pyglib_handler_marshal
    at pyglib.c line 562
  • #115 g_timeout_dispatch
    at /build/buildd/glib2.0-2.18.2/glib/gmain.c line 3589
  • #116 IA__g_main_context_dispatch
    at /build/buildd/glib2.0-2.18.2/glib/gmain.c line 2144
  • #117 g_main_context_iterate
    at /build/buildd/glib2.0-2.18.2/glib/gmain.c line 2778
  • #118 IA__g_main_loop_run
    at /build/buildd/glib2.0-2.18.2/glib/gmain.c line 2986
  • #119 _wrap_g_main_loop_run
    at pygmainloop.c line 319
  • #120 PyEval_EvalFrameEx
    at ../Python/ceval.c line 3579
  • #121 PyEval_EvalFrameEx
    at ../Python/ceval.c line 3681
  • #122 PyEval_EvalFrameEx
    at ../Python/ceval.c line 3681
  • #123 PyEval_EvalFrameEx
    at ../Python/ceval.c line 3681
  • #124 PyEval_EvalCodeEx
    at ../Python/ceval.c line 2858
  • #125 PyEval_EvalCode
    at ../Python/ceval.c line 514
  • #126 PyRun_FileExFlags
    at ../Python/pythonrun.c line 1273
  • #127 PyRun_SimpleFileExFlags
    at ../Python/pythonrun.c line 879
  • #128 Py_Main
    at ../Modules/main.c line 532
  • #129 __libc_start_main
    from /lib/libc.so.6
  • #130 _start

Comment 1 Edward Hervey 2009-05-06 12:59:18 UTC
Marking as duplicate of the other same bug report which , albeit more recent, has links to a fix.

*** This bug has been marked as a duplicate of 579422 ***