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 661914 - Gstreamer/Totem locks up
Gstreamer/Totem locks up
Status: RESOLVED FIXED
Product: glib
Classification: Platform
Component: gthread
unspecified
Other Linux
: Normal normal
: ---
Assigned To: gtkdev
gtkdev
Depends on:
Blocks:
 
 
Reported: 2011-10-16 15:12 UTC by Rico Tzschichholz
Modified: 2012-03-09 12:18 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Fix bug in g_static_rec_mutex_unlock_full() (1.62 KB, patch)
2011-10-19 03:31 UTC, Allison Karlitskaya (desrt)
committed Details | Review

Description Rico Tzschichholz 2011-10-16 15:12:47 UTC
This happens with Totem 3.2.0 and Gstreamer 0.10.35 running with glib git-master

Starting program: /usr/bin/totem 
[Thread debugging using libthread_db enabled]
[New Thread 0x7fffe2704700 (LWP 2862)]
[New Thread 0x7fffe1579700 (LWP 2863)]
[New Thread 0x7fffd5d0a700 (LWP 2864)]
[Thread 0x7fffd5d0a700 (LWP 2864) exited]
[New Thread 0x7fffd5d0a700 (LWP 2865)]
[New Thread 0x7fffd3d3a700 (LWP 2868)]
[New Thread 0x7fffd3539700 (LWP 2869)]
[New Thread 0x7fffd2d38700 (LWP 2870)]
[New Thread 0x7fffd2537700 (LWP 2871)]
[New Thread 0x7fffd1d36700 (LWP 2872)]
[New Thread 0x7fffd1535700 (LWP 2873)]
[New Thread 0x7fffd0d34700 (LWP 2874)]
[New Thread 0x7fffcbfff700 (LWP 2875)]
[Thread 0x7fffd5d0a700 (LWP 2865) exited]
[Thread 0x7fffd2537700 (LWP 2871) exited]
[Thread 0x7fffd0d34700 (LWP 2874) exited]
[Thread 0x7fffd1535700 (LWP 2873) exited]
[Thread 0x7fffd1d36700 (LWP 2872) exited]
[Thread 0x7fffd2d38700 (LWP 2870) exited]
[Thread 0x7fffcbfff700 (LWP 2875) exited]
[Thread 0x7fffd3539700 (LWP 2869) exited]
[New Thread 0x7fffd3539700 (LWP 2878)]
[New Thread 0x7fffcbfff700 (LWP 2879)]
[Thread 0x7fffd3539700 (LWP 2878) exited]
[Thread 0x7fffd3d3a700 (LWP 2868) exited]
[New Thread 0x7fffd3d3a700 (LWP 2881)]
[Thread 0x7fffcbfff700 (LWP 2879) exited]
[New Thread 0x7fffcbfff700 (LWP 2882)]
[New Thread 0x7fffd3539700 (LWP 2883)]
[New Thread 0x7fffd2d38700 (LWP 2884)]
[New Thread 0x7fffd1d36700 (LWP 2885)]
[New Thread 0x7fffc4247700 (LWP 2886)]
[New Thread 0x7fffc3a46700 (LWP 2887)]
[Thread 0x7fffc3a46700 (LWP 2887) exited]
[New Thread 0x7fffc3a46700 (LWP 3220)]

GStreamer-WARNING **: wrong STREAM_LOCK count 0

GStreamer-WARNING **: wrong STREAM_LOCK count 0

GStreamer-WARNING **: wrong STREAM_LOCK count 0
[Thread 0x7fffc3a46700 (LWP 3220) exited]

Program received signal SIGQUIT, Quit.
__lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
136	../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Datei oder Verzeichnis nicht gefunden.
	in ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S




(gdb) info thread
  Id   Target Id         Frame 
  21   Thread 0x7fffc4247700 (LWP 2886) "aqueue:src" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
  20   Thread 0x7fffd1d36700 (LWP 2885) "vqueue:src" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
  19   Thread 0x7fffd2d38700 (LWP 2884) "multiqueue0:src" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
  18   Thread 0x7fffd3539700 (LWP 2883) "matroskademux0:" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
  17   Thread 0x7fffcbfff700 (LWP 2882) "threaded-ml" 0x00007ffff5fa1773 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>)
    at ../sysdeps/unix/sysv/linux/poll.c:87
  16   Thread 0x7fffd3d3a700 (LWP 2881) "multiqueue0:src" pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
  3    Thread 0x7fffe1579700 (LWP 2863) "totem" 0x00007ffff5fa1773 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>)
    at ../sysdeps/unix/sysv/linux/poll.c:87
  2    Thread 0x7fffe2704700 (LWP 2862) "gdbus" 0x00007ffff5fa1773 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>)
    at ../sysdeps/unix/sysv/linux/poll.c:87
* 1    Thread 0x7ffff7f909e0 (LWP 2859) "totem" __lll_lock_wait ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136




(gdb) t a a bt

Thread 1 (Thread 0x7ffff7f909e0 (LWP 2859))

  • #0 __lll_lock_wait
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S line 136
  • #1 _L_lock_928
    from /lib/x86_64-linux-gnu/libpthread.so.0
  • #2 __pthread_mutex_lock
    at pthread_mutex_lock.c line 82
  • #3 g_static_rec_mutex_lock
    at /build/buildd/glib2.0-2.31.0~git20111015.448be24c/./glib/deprecated/gthread-deprecated.c line 707
  • #4 gst_pad_pause_task
    at gstpad.c line 5630
  • #5 gst_queue_handle_sink_event
    at gstqueue.c line 837
  • #6 gst_pad_send_event
    at gstpad.c line 5398
  • #7 gst_pad_push_event
    at gstpad.c line 5250
  • #8 gst_proxy_pad_do_event
    at gstghostpad.c line 114
  • #9 gst_pad_send_event
    at gstpad.c line 5398
  • #10 gst_pad_push_event
    at gstpad.c line 5250
  • #11 gst_proxy_pad_do_event
    at gstghostpad.c line 114
  • #12 gst_pad_send_event
    at gstpad.c line 5398
  • #13 gst_pad_push_event
    at gstpad.c line 5250
  • #14 ??
    from /usr/lib/gstreamer-0.10/libgstdeinterlace.so
  • #15 gst_pad_send_event
  • #16 gst_pad_push_event
    at gstpad.c line 5250
  • #17 gst_base_transform_sink_event
    at gstbasetransform.c line 2021
  • #18 gst_pad_send_event
    at gstpad.c line 5398
  • #19 gst_pad_push_event
    at gstpad.c line 5250
  • #20 gst_proxy_pad_do_event
    at gstghostpad.c line 114
  • #21 gst_pad_send_event
    at gstpad.c line 5398
  • #22 gst_pad_push_event
    at gstpad.c line 5250
  • #23 ??
    from /usr/lib/gstreamer-0.10/libgstplaybin.so
  • #24 gst_pad_send_event
    at gstpad.c line 5398
  • #25 gst_pad_push_event
    at gstpad.c line 5250
  • #26 gst_proxy_pad_do_event
    at gstghostpad.c line 114
  • #27 gst_pad_send_event
  • #28 gst_pad_push_event
    at gstpad.c line 5250
  • #29 gst_selector_pad_event
    at gstinputselector.c line 504
  • #30 gst_pad_send_event
    at gstpad.c line 5398
  • #31 gst_pad_push_event
    at gstpad.c line 5250
  • #32 gst_proxy_pad_do_event
    at gstghostpad.c line 114
  • #33 gst_pad_send_event
    at gstpad.c line 5398
  • #34 gst_pad_push_event
    at gstpad.c line 5250
  • #35 gst_proxy_pad_do_event
    at gstghostpad.c line 114
  • #36 gst_pad_send_event
    at gstpad.c line 5398
  • #37 gst_pad_push_event
    at gstpad.c line 5250
  • #38 ??
    from /usr/lib/gstreamer-0.10/libgstffmpeg.so
  • #39 gst_pad_send_event
  • #40 gst_pad_push_event
    at gstpad.c line 5250
  • #41 gst_multi_queue_sink_event
    at gstmultiqueue.c line 1318
  • #42 gst_pad_send_event
    at gstpad.c line 5398
  • #43 gst_pad_push_event
    at gstpad.c line 5250
  • #44 ??
    from /usr/lib/gstreamer-0.10/libgstmatroska.so
  • #45 ??
    from /usr/lib/gstreamer-0.10/libgstmatroska.so
  • #46 ??
    from /usr/lib/gstreamer-0.10/libgstmatroska.so
  • #47 gst_pad_send_event
    at gstpad.c line 5398
  • #48 gst_pad_push_event
    at gstpad.c line 5250
  • #49 gst_pad_send_event
    at gstpad.c line 5398
  • #50 gst_pad_push_event
    at gstpad.c line 5250
  • #51 ??
    from /usr/lib/gstreamer-0.10/libgstffmpeg.so
  • #52 gst_pad_send_event
    at gstpad.c line 5398
  • #53 gst_pad_push_event
    at gstpad.c line 5250
  • #54 gst_proxy_pad_do_event
    at gstghostpad.c line 114
  • #55 gst_pad_send_event
    at gstpad.c line 5398
  • #56 gst_pad_push_event
    at gstpad.c line 5250
  • #57 gst_proxy_pad_do_event
    at gstghostpad.c line 114
  • #58 gst_pad_send_event
    at gstpad.c line 5398
  • #59 gst_pad_push_event
    at gstpad.c line 5250
  • #60 gst_input_selector_event
    at gstinputselector.c line 1195
  • #61 gst_pad_send_event
    at gstpad.c line 5398
  • #62 gst_pad_push_event
    at gstpad.c line 5250
  • #63 gst_proxy_pad_do_event
    at gstghostpad.c line 114
  • #64 gst_pad_send_event
  • #65 gst_pad_push_event
    at gstpad.c line 5250
  • #66 ??
    from /usr/lib/gstreamer-0.10/libgstplaybin.so
  • #67 gst_pad_send_event
    at gstpad.c line 5398
  • #68 gst_pad_push_event
    at gstpad.c line 5250
  • #69 gst_proxy_pad_do_event
    at gstghostpad.c line 114
  • #70 gst_pad_send_event
    at gstpad.c line 5398
  • #71 gst_pad_push_event
    at gstpad.c line 5250
  • #72 gst_base_transform_src_eventfunc
    at gstbasetransform.c line 2144
  • #73 gst_base_transform_src_event
    at gstbasetransform.c line 2109
  • #74 gst_pad_send_event
    at gstpad.c line 5398
  • #75 gst_pad_push_event
    at gstpad.c line 5250
  • #76 ??
  • #77 gst_pad_send_event
    at gstpad.c line 5398
  • #78 gst_pad_push_event
    at gstpad.c line 5250
  • #79 gst_proxy_pad_do_event
    at gstghostpad.c line 114
  • #80 gst_pad_send_event
    at gstpad.c line 5398
  • #81 gst_pad_push_event
    at gstpad.c line 5250
  • #82 gst_proxy_pad_do_event
    at gstghostpad.c line 114
  • #83 gst_pad_send_event
    at gstpad.c line 5398
  • #84 gst_pad_push_event
    at gstpad.c line 5250
  • #85 gst_queue_handle_src_event
    at gstqueue.c line 1312
  • #86 gst_pad_send_event
    at gstpad.c line 5398
  • #87 gst_pad_push_event
    at gstpad.c line 5250
  • #88 gst_base_transform_src_eventfunc
    at gstbasetransform.c line 2144
  • #89 gst_base_transform_src_event
    at gstbasetransform.c line 2109
  • #90 gst_pad_send_event
    at gstpad.c line 5398
  • #91 gst_pad_push_event
    at gstpad.c line 5250
  • #92 gst_base_transform_src_eventfunc
    at gstbasetransform.c line 2144
  • #93 ??
    from /usr/lib/gstreamer-0.10/libgstvideoscale.so
  • #94 gst_base_transform_src_event
    at gstbasetransform.c line 2109
  • #95 gst_pad_send_event
    at gstpad.c line 5398
  • #96 gst_pad_push_event
    at gstpad.c line 5250
  • #97 gst_proxy_pad_do_event
    at gstghostpad.c line 114
  • #98 gst_pad_send_event
    at gstpad.c line 5398
  • #99 gst_pad_push_event
  • #100 gst_base_transform_src_eventfunc
    at gstbasetransform.c line 2144
  • #101 gst_base_transform_src_event
    at gstbasetransform.c line 2109
  • #102 gst_pad_send_event
    at gstpad.c line 5398
  • #103 gst_pad_push_event
    at gstpad.c line 5250
  • #104 gst_base_sink_send_event
    at gstbasesink.c line 4514
  • #105 gst_element_send_event
    at gstelement.c line 1634
  • #106 gst_bin_send_event
    at gstbin.c line 2673
  • #107 gst_element_send_event
    at gstelement.c line 1634
  • #108 gst_bin_send_event
    at gstbin.c line 2673
  • #109 gst_element_send_event
    at gstelement.c line 1634
  • #110 ??
    from /usr/lib/gstreamer-0.10/libgstplaybin.so
  • #111 ??
    from /usr/lib/gstreamer-0.10/libgstplaybin.so
  • #112 gst_element_send_event
    at gstelement.c line 1634
  • #113 gst_bin_send_event
    at gstbin.c line 2673
  • #114 gst_element_send_event
    at gstelement.c line 1634
  • #115 bacon_video_widget_seek_time_no_lock
    at bacon-video-widget-gst-0.10.c line 3598
  • #116 bacon_video_widget_seek_time_no_lock
    at bacon-video-widget-gst-0.10.c line 3592
  • #117 bacon_video_widget_seek_time
    at bacon-video-widget-gst-0.10.c line 3664
  • #118 totem_seek_time_rel
    at totem-object.c line 1949
  • #119 on_eos_event
    at totem-object.c line 3467
  • #120 on_eos_event
    at totem-object.c line 3437
  • #121 g_closure_invoke
  • #122 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.31.0~git20111015.448be24c/./gobject/gsignal.c line 3272
  • #123 g_signal_emit_valist
    at /build/buildd/glib2.0-2.31.0~git20111015.448be24c/./gobject/gsignal.c line 3003
  • #124 g_signal_emit
    at /build/buildd/glib2.0-2.31.0~git20111015.448be24c/./gobject/gsignal.c line 3060
  • #125 bvw_signal_eos_delayed
    at bacon-video-widget-gst-0.10.c line 1442
  • #126 g_main_dispatch
    at /build/buildd/glib2.0-2.31.0~git20111015.448be24c/./glib/gmain.c line 2387
  • #127 g_main_context_dispatch
    at /build/buildd/glib2.0-2.31.0~git20111015.448be24c/./glib/gmain.c line 2924
  • #128 g_main_context_iterate
  • #129 g_main_context_iterate
    at /build/buildd/glib2.0-2.31.0~git20111015.448be24c/./glib/gmain.c line 2932
  • #130 g_main_context_iteration
    at /build/buildd/glib2.0-2.31.0~git20111015.448be24c/./glib/gmain.c line 3056
  • #131 g_application_run
    at /build/buildd/glib2.0-2.31.0~git20111015.448be24c/./gio/gapplication.c line 1320
  • #132 main
    at totem.c line 280

Comment 1 Rico Tzschichholz 2011-10-17 17:32:18 UTC
Run of "make check" with gstreamer 0.10.35

make  check-TESTS
make[3]: Betrete Verzeichnis '/home/rico/sources/buildtmp/gstreamer-0.10.35/tests/check'
Running suite(s): GstABI
100%: Checks: 1, Failures: 0, Errors: 0
PASS: gst/gstabi
Running suite(s): GstBuffer
100%: Checks: 9, Failures: 0, Errors: 0
PASS: gst/gstbuffer
Running suite(s): GstBufferList
100%: Checks: 9, Failures: 0, Errors: 0
PASS: gst/gstbufferlist
Running suite(s): GstBus
100%: Checks: 10, Failures: 0, Errors: 0
PASS: gst/gstbus
Running suite(s): GstCaps
100%: Checks: 17, Failures: 0, Errors: 0
PASS: gst/gstcaps
Running suite(s): Gst
100%: Checks: 6, Failures: 0, Errors: 0
PASS: gst/gstcpp
Running suite(s): GstLibsCpp
100%: Checks: 1, Failures: 0, Errors: 0
PASS: libs/gstlibscpp
Running suite(s): GstDateTime
100%: Checks: 11, Failures: 0, Errors: 0
PASS: gst/gstdatetime
Running suite(s): GstInfo
100%: Checks: 5, Failures: 0, Errors: 0
PASS: gst/gstinfo
Running suite(s): GstIterator
100%: Checks: 4, Failures: 0, Errors: 0
PASS: gst/gstiterator
Running suite(s): GstMessage
100%: Checks: 1, Failures: 0, Errors: 0
PASS: gst/gstmessage
Running suite(s): GstMiniObject
100%: Checks: 8, Failures: 0, Errors: 0
PASS: gst/gstminiobject
Running suite(s): GstObject
100%: Checks: 8, Failures: 0, Errors: 0
PASS: gst/gstobject
Running suite(s): GstPad
100%: Checks: 17, Failures: 0, Errors: 0
PASS: gst/gstpad
Running suite(s): GstParamSpec
100%: Checks: 1, Failures: 0, Errors: 0
PASS: gst/gstparamspecs
Running suite(s): GstPoll
100%: Checks: 6, Failures: 0, Errors: 0
PASS: gst/gstpoll
Running suite(s): GstSegment
100%: Checks: 14, Failures: 0, Errors: 0
PASS: gst/gstsegment
Running suite(s): GstSystemClock
100%: Checks: 10, Failures: 0, Errors: 0
PASS: gst/gstsystemclock
Running suite(s): GstClock
100%: Checks: 1, Failures: 0, Errors: 0
PASS: gst/gstclock
Running suite(s): GstStructure
100%: Checks: 13, Failures: 0, Errors: 0
PASS: gst/gststructure
Running suite(s): GstTag
100%: Checks: 10, Failures: 0, Errors: 0
PASS: gst/gsttag
Running suite(s): GstTagSetter
100%: Checks: 4, Failures: 0, Errors: 0
PASS: gst/gsttagsetter
Running suite(s): GstTask
100%: Checks: 5, Failures: 0, Errors: 0
PASS: gst/gsttask
Running suite(s): GstValue
100%: Checks: 33, Failures: 0, Errors: 0
PASS: gst/gstvalue
Running suite(s): states
100%: Checks: 3, Failures: 0, Errors: 0
PASS: generic/states
Running suite(s): Pipelines
100%: Checks: 3, Failures: 0, Errors: 0
PASS: pipelines/simple-launch-lines
Running suite(s): Pipeline cleanup
100%: Checks: 1, Failures: 0, Errors: 0
PASS: pipelines/cleanup
Running suite(s): Parse Launch syntax
100%: Checks: 8, Failures: 0, Errors: 0
PASS: pipelines/parse-launch
Running suite(s): Gst
100%: Checks: 6, Failures: 0, Errors: 0
PASS: gst/gst
Running suite(s): GstBin
100%: Checks: 14, Failures: 0, Errors: 0
PASS: gst/gstbin
Running suite(s): GstChildProxy
100%: Checks: 2, Failures: 0, Errors: 0
PASS: gst/gstchildproxy
Running suite(s): GstElement
100%: Checks: 5, Failures: 0, Errors: 0
PASS: gst/gstelement
Running suite(s): GstElementFactory
100%: Checks: 4, Failures: 0, Errors: 0
PASS: gst/gstelementfactory
Running suite(s): GstEvent
100%: Checks: 2, Failures: 0, Errors: 0
PASS: gst/gstevent
Running suite(s): GstGhostPad
100%: Checks: 15, Failures: 0, Errors: 0
PASS: gst/gstghostpad
Running suite(s): GstIndex
100%: Checks: 1, Failures: 0, Errors: 0
PASS: gst/gstindex
Running suite(s): GstImplementsInterface
100%: Checks: 1, Failures: 0, Errors: 0
PASS: gst/gstinterface
Running suite(s): GstPlugin
100%: Checks: 9, Failures: 0, Errors: 0
PASS: gst/gstplugin
Running suite(s): GstPreset
100%: Checks: 5, Failures: 0, Errors: 0
PASS: gst/gstpreset
Running suite(s): GstQuery
100%: Checks: 2, Failures: 0, Errors: 0
PASS: gst/gstquery
Running suite(s): registry
100%: Checks: 1, Failures: 0, Errors: 0
PASS: gst/gstregistry
Running suite(s): GstURI
100%: Checks: 2, Failures: 0, Errors: 0
PASS: gst/gsturi
Running suite(s): GstUtils
100%: Checks: 16, Failures: 0, Errors: 0
PASS: gst/gstutils
Running suite(s): Sinks


Unexpected critical/warning: wrong STREAM_LOCK count 0


Unexpected critical/warning: wrong STREAM_LOCK count 0
90%: Checks: 20, Failures: 2, Errors: 0
gstcheck.c:72:F:general:test_async_false_seek:0: Unexpected critical/warning: wrong STREAM_LOCK count 0
gstcheck.c:72:F:general:test_async_false_seek_in_playing:0: Unexpected critical/warning: wrong STREAM_LOCK count 0
FAIL: generic/sinks
Running suite(s): capsfilter
100%: Checks: 1, Failures: 0, Errors: 0
PASS: elements/capsfilter
Running suite(s): fakesink
100%: Checks: 6, Failures: 0, Errors: 0
PASS: elements/fakesink
Running suite(s): fakesrc
100%: Checks: 5, Failures: 0, Errors: 0
PASS: elements/fakesrc
Running suite(s): fdsrc
100%: Checks: 3, Failures: 0, Errors: 0
PASS: elements/fdsrc
Running suite(s): filesink
100%: Checks: 3, Failures: 0, Errors: 0
PASS: elements/filesink
Running suite(s): filesrc
100%: Checks: 6, Failures: 0, Errors: 0
PASS: elements/filesrc
Running suite(s): funnel
100%: Checks: 1, Failures: 0, Errors: 0
PASS: elements/funnel
Running suite(s): identity
100%: Checks: 1, Failures: 0, Errors: 0
PASS: elements/identity
Running suite(s): multiqueue
100%: Checks: 7, Failures: 0, Errors: 0
PASS: elements/multiqueue
Running suite(s): selector
100%: Checks: 6, Failures: 0, Errors: 0
PASS: elements/selector
Running suite(s): tee
100%: Checks: 6, Failures: 0, Errors: 0
PASS: elements/tee
Running suite(s): queue
100%: Checks: 7, Failures: 0, Errors: 0
PASS: elements/queue
Running suite(s): queue2
100%: Checks: 5, Failures: 0, Errors: 0
PASS: elements/queue2
Running suite(s): valve
100%: Checks: 1, Failures: 0, Errors: 0
PASS: elements/valve
Running suite(s): GstBaseSrc
100%: Checks: 7, Failures: 0, Errors: 0
PASS: libs/basesrc
Running suite(s): GstBaseSink
100%: Checks: 2, Failures: 0, Errors: 0
PASS: libs/basesink
Running suite(s): Controller
100%: Checks: 38, Failures: 0, Errors: 0
PASS: libs/controller
Running suite(s): typefindhelper
100%: Checks: 1, Failures: 0, Errors: 0
PASS: libs/typefindhelper
Running suite(s): stress


Unexpected critical/warning: wrong STREAM_LOCK count 0


Unexpected critical/warning: wrong STREAM_LOCK count 0
0%: Checks: 2, Failures: 2, Errors: 0
gstcheck.c:72:F:linear:test_stress:0: Unexpected critical/warning: wrong STREAM_LOCK count 0
gstcheck.c:72:F:linear:test_stress_preroll:0: Unexpected critical/warning: wrong STREAM_LOCK count 0
FAIL: pipelines/stress
Running suite(s): queue
100%: Checks: 1, Failures: 0, Errors: 0
PASS: pipelines/queue-error
Running suite(s): LibsABI
100%: Checks: 1, Failures: 0, Errors: 0
PASS: libs/libsabi
Running suite(s): data protocol
100%: Checks: 5, Failures: 0, Errors: 0
PASS: libs/gdp
Running suite(s): adapter
100%: Checks: 11, Failures: 0, Errors: 0
PASS: libs/adapter
Running suite(s): GstBitReader
100%: Checks: 3, Failures: 0, Errors: 0
PASS: libs/bitreader
Running suite(s): GstByteReader
100%: Checks: 11, Failures: 0, Errors: 0
PASS: libs/bytereader
Running suite(s): GstByteWriter
100%: Checks: 6, Failures: 0, Errors: 0
PASS: libs/bytewriter
Running suite(s): GstNetClientClock
100%: Checks: 2, Failures: 0, Errors: 0
PASS: libs/gstnetclientclock
Running suite(s): GstNetTimeProvider
100%: Checks: 2, Failures: 0, Errors: 0
PASS: libs/gstnettimeprovider
Running suite(s): GstBaseTransform
100%: Checks: 7, Failures: 0, Errors: 0
PASS: libs/transform1
==========================================================================
2 of 73 tests failed
Please report to http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer
==========================================================================
Comment 2 Allison Karlitskaya (desrt) 2011-10-19 03:31:49 UTC
Created attachment 199393 [details] [review]
Fix bug in g_static_rec_mutex_unlock_full()

pthreads doesn't implement the _lock_full() and _unlock_full() calls on
recursive mutexes so we don't have it on GRecMutex either.  Now that
we're using GRecMutex to implement GStaticRecMutex, we have to fake it
by keeping an internal counter of the number of locks and calling
g_rec_mutex_unlock() the appropriate number of times.

The code to do this looked like:

  depth = mutex->depth;
  while (mutex->depth--)
    g_rec_mutex_unlock (rm);
  return depth;

which unfortunately did one last decrement after mutex->depth was
already zero (leaving it equal to -1).

When locked the next time, the count would then increase from -1 to 0
and then the next _unlock_full() call would not do any calls to
g_rec_mutex_unlock(), leading to a deadlock.
Comment 3 Mark Janossy 2012-03-09 12:18:47 UTC
The patch still leaves a race condition in the code, see <a href="show_bug.cgi?id=670846" title="deadlock: GStreamer-WARNING **: wrong STREAM_LOCK count 0">bug 670846</a>