[Bug 736071] audiobasesink: Don't hold object lock while calling into other objects like the clock

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue Oct 7 05:24:15 PDT 2014


https://bugzilla.gnome.org/show_bug.cgi?id=736071
  GStreamer | gst-plugins-good | 1.2.1

Philippe Normand <phil> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |phil at base-art.net

--- Comment #11 from Philippe Normand <phil at base-art.net> 2014-10-07 12:24:05 UTC ---
Hi, it seems like this patch introduced a regression, when a position query is
done on the sink before it emits the stream-status message a deadlock happens:

Thread 6 (Thread 0x7f4e0ddb8700 (LWP 12951)):
#0  __lll_lock_wait () at
../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007f4e6cf744ef in _L_lock_1081 () from
/lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007f4e6cf74468 in __GI___pthread_mutex_lock (mutex=0x2146e70) at
../nptl/pthread_mutex_lock.c:134
#3  0x00007f4e6db2a181 in g_mutex_lock (mutex=<optimized out>) at
gthread-posix.c:213
#4  0x00007f4e69786f91 in gst_element_post_message_default (element=0x20c2c80,
message=0x2398ca0) at gstelement.c:1677
#5  0x00007f4de0d9a8a3 in mainloop_enter_defer_cb (api=0x2146e70,
userdata=0x20c2c80) at pulsesink.c:1204
#6  0x00007f4de0b6190c in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#7  0x00007f4de0b6459a in pa_mainloop_dispatch () from
/usr/lib/x86_64-linux-gnu/libpulse.so.0
#8  0x00007f4de0b647ea in pa_mainloop_iterate () from
/usr/lib/x86_64-linux-gnu/libpulse.so.0
#9  0x00007f4de0b64890 in pa_mainloop_run () from
/usr/lib/x86_64-linux-gnu/libpulse.so.0
#10 0x00007f4de0b72873 in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#11 0x00007f4de0711178 in ?? () from
/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-5.0.so
#12 0x00007f4e6cf720a4 in start_thread (arg=0x7f4e0ddb8700) at
pthread_create.c:309
#13 0x00007f4e707e304d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:111


Thread 1 (Thread 0x7f4e74279940 (LWP 12920)):
#0  __lll_lock_wait () at
../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007f4e6cf744ef in _L_lock_1081 () from
/lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007f4e6cf74468 in __GI___pthread_mutex_lock (mutex=0x2146e70) at
../nptl/pthread_mutex_lock.c:134
#3  0x00007f4e6db2a181 in g_mutex_lock (mutex=<optimized out>) at
gthread-posix.c:213
#4  0x00007f4e69a6d69c in gst_base_sink_get_position (basesink=0x20c2c80,
format=128, cur=0x7fff13d20928, upstream=0xffffffffffffffff) at
gstbasesink.c:4399
#5  0x00007f4e69a72a22 in default_element_query (element=0x20c2c80,
query=0x221a320) at gstbasesink.c:4671
#6  0x00007f4e68c3d15c in gst_audio_base_sink_query (element=0x20c2c80,
query=0x221a320) at gstaudiobasesink.c:505
#7  0x00007f4e73033695 in
WebCore::StreamMediaPlayerPrivateGStreamer::currentTime() const () from
/home/phil/wkbuild/lib/libwebkit2gtk-4.0.so.37
#8  0x00007f4e72adc2fd in
WebCore::MediaPlayerPrivateInterface::currentTimeDouble() const () from
/home/phil/wkbuild/lib/libwebkit2gtk-4.0.so.37
#9  0x00007f4e72ad9439 in WebCore::MediaPlayer::currentTime() const () from
/home/phil/wkbuild/lib/libwebkit2gtk-4.0.so.37
#10 0x00007f4e7276879a in WebCore::HTMLMediaElement::refreshCachedTime() const
() from /home/phil/wkbuild/lib/libwebkit2gtk-4.0.so.37
#11 0x00007f4e7276e375 in WebCore::HTMLMediaElement::currentMediaTime() const
() from /home/phil/wkbuild/lib/libwebkit2gtk-4.0.so.37
#12 0x00007f4e7276e533 in
WebCore::HTMLMediaElement::scheduleTimeupdateEvent(bool) () from
/home/phil/wkbuild/lib/libwebkit2gtk-4.0.so.37
#13 0x00007f4e7277602f in
WebCore::HTMLMediaElement::playbackProgressTimerFired(WebCore::Timer<WebCore::HTMLMediaElement>&)
() from /home/phil/wkbuild/lib/libwebkit2gtk-4.0.so.37
#14 0x00007f4e72a7b8dd in WebCore::ThreadTimers::sharedTimerFiredInternal() ()
from /home/phil/wkbuild/lib/libwebkit2gtk-4.0.so.37
#15 0x00007f4e703dd4bc in WTF::GMainLoopSource::voidCallback() () from
/home/phil/wkbuild/lib/libjavascriptcoregtk-4.0.so.18
#16 0x00007f4e703dd699 in
WTF::GMainLoopSource::voidSourceCallback(WTF::GMainLoopSource*) () from
/home/phil/wkbuild/lib/libjavascriptcoregtk-4.0.so.18
#17 0x00007f4e6dae9cb3 in g_timeout_dispatch (source=source at entry=0x23e20b0,
callback=<optimized out>, user_data=<optimized out>) at gmain.c:4450
#18 0x00007f4e6dae90fe in g_main_dispatch (context=0x1f42aa0) at gmain.c:3065
#19 g_main_context_dispatch (context=context at entry=0x1f42aa0) at gmain.c:3641
#20 0x00007f4e6dae94a8 in g_main_context_iterate (context=0x1f42aa0,
block=block at entry=1, dispatch=dispatch at entry=1, self=<optimized out>) at
gmain.c:3712
#21 0x00007f4e6dae9912 in g_main_loop_run (loop=0x250c620) at gmain.c:3906
#22 0x00007f4e72287a31 in WebProcessMainUnix () from
/home/phil/wkbuild/lib/libwebkit2gtk-4.0.so.37
#23 0x00007f4e7071eb45 in __libc_start_main (main=0x4006e0 <main>, argc=2,
argv=0x7fff13d20f38, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fff13d20f28)
    at libc-start.c:287
#24 0x0000000000400713 in _start ()

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list