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 321486 - playbin / gst-python thread condition race
playbin / gst-python thread condition race
Status: RESOLVED NOTABUG
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
git master
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2005-11-15 01:59 UTC by Johan (not receiving bugmail) Dahlin
Modified: 2005-11-15 12:38 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
test program (2.96 KB, text/plain)
2005-11-15 02:01 UTC, Johan (not receiving bugmail) Dahlin
Details

Description Johan (not receiving bugmail) Dahlin 2005-11-15 01:59:00 UTC
I have a small python program that uses gnomevfs async methods and playbin to
read tags. Sometimes I run into this race. I'm not sure if it's gst-pythons,
gstreamers, vorbisdec, playbin or gnome-vfs' fault.

Thread 1:

  • #0 ??
  • #1 ??
  • #2 ??
  • #3 ??
  • #4 __lll_mutex_lock_wait
    from /lib/tls/i686/cmov/libpthread.so.0
  • #5 _L_mutex_lock_33
    from /lib/tls/i686/cmov/libpthread.so.0
  • #6 ??
  • #7 g_thread_equal_posix_impl
    at gthread-posix.c line 412
  • #8 IA__g_static_rec_mutex_lock
    at gthread.c line 280
  • #9 gst_pad_stop_task
    at gstpad.c line 3767
  • #10 gst_base_sink_deactivate
    at gstbasesink.c line 1298
  • #11 gst_base_sink_activate_push
    at gstbasesink.c line 1355
  • #12 gst_pad_activate_push
    at gstpad.c line 768
  • #13 gst_pad_set_active
    at gstpad.c line 618
  • #14 activate_pads
    at gstelement.c line 2229
  • #15 gst_iterator_fold
    at gstiterator.c line 499
  • #16 iterator_fold_with_resync
    at gstelement.c line 2247
  • #17 gst_element_pads_activate
    at gstelement.c line 2290
  • #18 gst_element_change_state_func
    at gstelement.c line 2339
  • #19 gst_base_sink_change_state
    at gstbasesink.c line 1638
  • #20 gst_fake_sink_change_state
    at gstfakesink.c line 408
  • #21 gst_element_change_state
  • #22 gst_element_set_state_func
    at gstelement.c line 2111
  • #23 gst_element_set_state
    at gstelement.c line 2028
  • #24 gst_bin_change_state_func
    at gstbin.c line 1554
  • #25 gst_element_change_state
    at gstelement.c line 2149
  • #26 gst_element_set_state_func
    at gstelement.c line 2111
  • #27 gst_element_set_state
  • #28 gst_bin_change_state_func
    at gstbin.c line 1554
  • #29 gst_pipeline_change_state
    at gstpipeline.c line 349
  • #30 gst_play_base_bin_change_state
    at gstplaybasebin.c line 1712
  • #31 gst_play_bin_change_state
    at gstplaybin.c line 994
  • #32 gst_element_change_state
    at gstelement.c line 2149
  • #33 gst_element_set_state_func
    at gstelement.c line 2111
  • #34 gst_element_set_state
    at gstelement.c line 2028
  • #35 _wrap_gst_element_set_state
    at gstelement.override line 69
  • #36 PyEval_EvalFrame
    at ../Python/ceval.c line 3558
  • #37 PyEval_EvalCodeEx
    at ../Python/ceval.c line 2736
  • #38 function_call
    at ../Objects/funcobject.c line 548
  • #39 PyObject_Call
    at ../Objects/abstract.c line 1756
  • #40 instancemethod_call
    at ../Objects/classobject.c line 2447
  • #41 PyObject_Call
    at ../Objects/abstract.c line 1756
  • #42 PyEval_CallObjectWithKeywords
    at ../Python/ceval.c line 3425
  • #43 PyObject_CallObject
    at ../Objects/abstract.c line 1747
  • #44 ??
    from /usr/lib/python2.4/site-packages/gtk-2.0/gobject.so
  • #45 ??
  • #46 ??
  • #47 ??
  • #48 ??
    from /usr/lib/libglib-2.0.so.0
  • #49 pthread_mutex_destroy
    from /lib/tls/i686/cmov/libpthread.so.0
  • #50 g_idle_dispatch
    at gmain.c line 3813
  • #51 IA__g_main_context_dispatch
    at gmain.c line 1934
  • #52 g_main_context_iterate
    at gmain.c line 2565
  • #53 IA__g_main_loop_run
    at gmain.c line 2769
  • #54 gtk_main
    from /usr/lib/libgtk-x11-2.0.so.0
  • #55 init_gtk
    from /usr/lib/python2.4/site-packages/gtk-2.0/gtk/_gtk.so
  • #56 PyEval_EvalFrame
    at ../Python/ceval.c line 3542
  • #57 PyEval_EvalCodeEx
    at ../Python/ceval.c line 2736
  • #58 PyEval_EvalCode
    at ../Python/ceval.c line 484
  • #59 PyRun_FileExFlags
    at ../Python/pythonrun.c line 1265
  • #60 PyRun_SimpleFileExFlags
    at ../Python/pythonrun.c line 860
  • #61 Py_Main
    at ../Modules/main.c line 484
  • #62 __libc_start_main
    from /lib/tls/i686/cmov/libc.so.6
  • #63 _start
    at ../sysdeps/i386/elf/start.S line 119
  • #4 pthread_cond_wait
    from /lib/tls/i686/cmov/libpthread.so.0
  • #5 g_async_queue_pop_intern_unlocked
    at gasyncqueue.c line 231
  • #6 g_thread_pool_thread_proxy
    at gthreadpool.c line 97
  • #0 ??
  • #1 ??
  • #2 ??
  • #3 ??
  • #4 pthread_cond_wait
    from /lib/tls/i686/cmov/libpthread.so.0
  • #5 gst_queue_chain
    at gstqueue.c line 692
  • #6 gst_pad_chain
    at gstpad.c line 3092
  • #7 gst_pad_push
    at gstpad.c line 3191
  • #8 gst_stream_selector_chain
    at gststreamselector.c line 261
  • #9 gst_pad_chain
    at gstpad.c line 3092
  • #10 gst_proxy_pad_do_chain
    at gstghostpad.c line 192
  • #11 gst_pad_chain
    at gstpad.c line 3092
  • #12 gst_pad_push
    at gstpad.c line 3191
  • #13 vorbis_handle_data_packet
    at vorbisdec.c line 751
  • #14 vorbis_dec_chain
    at vorbisdec.c line 914
  • #15 gst_pad_chain
    at gstpad.c line 3092
  • #16 gst_pad_push
    at gstpad.c line 3191
  • #17 gst_ogg_pad_submit_page
    at gstoggdemux.c line 717
  • #18 gst_ogg_demux_chain
    at gstoggdemux.c line 2277
  • #19 gst_ogg_demux_loop
    at gstoggdemux.c line 2383
  • #20 gst_task_func
    at gsttask.c line 186
  • #21 g_thread_pool_thread_proxy
    at gthreadpool.c line 114
  • #22 g_thread_create_proxy
    at gthread.c line 564
  • #23 start_thread
    from /lib/tls/i686/cmov/libpthread.so.0
  • #24 clone
    from /lib/tls/i686/cmov/libc.so.6
  • #0 ??
  • #1 ??
  • #2 ??
  • #3 ??
  • #4 __lll_mutex_lock_wait
    from /lib/tls/i686/cmov/libpthread.so.0
  • #5 _L_mutex_lock_33
    from /lib/tls/i686/cmov/libpthread.so.0
  • #6 ??
  • #7 g_thread_equal_posix_impl
    at gthread-posix.c line 412
  • #8 IA__g_static_rec_mutex_lock
    at gthread.c line 280
  • #9 gst_element_set_state_func
    at gstelement.c line 2052
  • #10 gst_element_set_state
    at gstelement.c line 2028
  • #11 _wrap_gst_element_set_state
    at gstelement.override line 69
  • #12 PyEval_EvalFrame
    at ../Python/ceval.c line 3558
  • #13 PyEval_EvalCodeEx
    at ../Python/ceval.c line 2736
  • #14 function_call
    at ../Objects/funcobject.c line 548
  • #15 PyObject_Call
    at ../Objects/abstract.c line 1756
  • #16 instancemethod_call
    at ../Objects/classobject.c line 2447
  • #17 PyObject_Call
    at ../Objects/abstract.c line 1756
  • #18 PyEval_CallObjectWithKeywords
    at ../Python/ceval.c line 3425
  • #19 PyObject_CallObject
    at ../Objects/abstract.c line 1747
  • #20 initgobject
    from /usr/lib/python2.4/site-packages/gtk-2.0/gobject.so
  • #21 IA__g_closure_invoke
    at gclosure.c line 492
  • #22 signal_emit_unlocked_R
    at gsignal.c line 2485
  • #23 IA__g_signal_emit_valist
    at gsignal.c line 2244
  • #24 IA__g_signal_emit
    at gsignal.c line 2288
  • #25 gst_fake_sink_render
  • #26 gst_base_sink_preroll_queue_empty
    at gstbasesink.c line 1196
  • #27 gst_base_sink_handle_object
    at gstbasesink.c line 800
  • #28 gst_base_sink_chain
    at gstbasesink.c line 1227
  • #29 gst_pad_chain
    at gstpad.c line 3092
  • #30 gst_pad_push
    at gstpad.c line 3191
  • #31 gst_base_transform_chain
    at gstbasetransform.c line 1275
  • #32 gst_pad_chain
    at gstpad.c line 3092
  • #33 gst_pad_push
    at gstpad.c line 3191
  • #34 gst_base_transform_chain
    at gstbasetransform.c line 1275
  • #35 gst_pad_chain
    at gstpad.c line 3092
  • #36 gst_proxy_pad_do_chain
  • #38 gst_pad_push
    at gstpad.c line 3191
  • #39 gst_queue_loop
    at gstqueue.c line 808
  • #40 gst_task_func
    at gsttask.c line 186
  • #41 g_thread_pool_thread_proxy
    at gthreadpool.c line 114
  • #42 g_thread_create_proxy
    at gthread.c line 564
  • #43 start_thread
    from /lib/tls/i686/cmov/libpthread.so.0
  • #44 clone
    from /lib/tls/i686/cmov/libc.so.6
    at gstghostpad.c line 192
  • #4 pthread_cond_wait
    from /lib/tls/i686/cmov/libpthread.so.0
  • #5 gst_system_clock_async_thread
    at gstsystemclock.c line 253
  • #6 g_thread_create_proxy
    at gthread.c line 564
  • #4 pthread_cond_wait
    from /lib/tls/i686/cmov/libpthread.so.0
  • #5 thread_entry
    at gnome-vfs-thread-pool.c line 156
  • #6 g_thread_create_proxy
    at gthread.c line 564

Comment 1 Johan (not receiving bugmail) Dahlin 2005-11-15 02:01:25 UTC
Created attachment 54763 [details]
test program
Comment 2 Johan (not receiving bugmail) Dahlin 2005-11-15 12:38:22 UTC
I am told this is a bug in the application, applications should not change
states from the streaming thread.