Thread 1 (Thread 0x7f047fce33c0 (LWP 46277)): #0 0x00007f048e1a7406 in WTFCrash () at /home/slave/webkitgtk/gtk-linux-64-debug/build/Source/WTF/wtf/Assertions.cpp:267 #1 0x00007f049ad2814c in (anonymous namespace)::MediaPlayerPrivateGStreamerMSE::doSeek (this=0x7f0413e35000) at /home/slave/webkitgtk/gtk-linux-64-debug/build/Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:330 #2 0x00007f049ad2732e in (anonymous namespace)::MediaPlayerPrivateGStreamerMSE::seek (this=0x7f0413e35000, time=...) at /home/slave/webkitgtk/gtk-linux-64-debug/build/Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:197 #3 0x00007f049a43baa6 in (anonymous namespace)::MediaPlayerPrivateInterface::seekWithTolerance (this=0x7f0413e35000, time=...) at ../../Source/WebCore/platform/graphics/MediaPlayerPrivate.h:99 #4 0x00007f049a4309e3 in (anonymous namespace)::MediaPlayer::seekWithTolerance (this=0x7f047f3a1d80, time=..., negativeTolerance=..., positiveTolerance=...) at ../../Source/WebCore/platform/graphics/MediaPlayer.cpp:626 #5 0x00007f0499d5ba99 in (anonymous namespace)::HTMLMediaElement::seekTask (this=0x7f0411a02508) at ../../Source/WebCore/html/HTMLMediaElement.cpp:3074 #6 0x00007f0499d9a18a in std::__invoke_impl<void, void (WebCore::HTMLMediaElement::* const&)(), WebCore::HTMLMediaElement*&> (__f=@0x7eef180c60c8: (void ((anonymous namespace)::HTMLMediaElement::*)((anonymous namespace)::HTMLMediaElement * const)) 0x7f0499d5b4ca <(anonymous namespace)::HTMLMediaElement::seekTask()>, __t=@0x7eef180c60d8: 0x7f0411a02508) at /usr/include/c++/6/functional:227 #7 0x00007f0499d9a0af in std::__invoke<void (WebCore::HTMLMediaElement::* const&)(), WebCore::HTMLMediaElement*&> (__fn=@0x7eef180c60c8: (void ((anonymous namespace)::HTMLMediaElement::*)((anonymous namespace)::HTMLMediaElement * const)) 0x7f0499d5b4ca <(anonymous namespace)::HTMLMediaElement::seekTask()>, __args#0=@0x7eef180c60d8: 0x7f0411a02508) at /usr/include/c++/6/functional:251 #8 0x00007f0499d9a006 in std::_Mem_fn_base<void (WebCore::HTMLMediaElement::*)(), true>::operator()<WebCore::HTMLMediaElement*&> (this=0x7eef180c60c8, __args#0=@0x7eef180c60d8: 0x7f0411a02508) at /usr/include/c++/6/functional:604 #9 0x00007f0499d99dce in std::_Bind<std::_Mem_fn<void (WebCore::HTMLMediaElement::*)()>(WebCore::HTMLMediaElement*)>::__call<void, 0ul>(<unknown type in /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x321aa4>, std::_Index_tuple<0ul>) (this=0x7eef180c60c8, __args=<unknown type in /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x321aa4>) at /usr/include/c++/6/functional:934 #10 0x00007f0499d989c6 in std::_Bind<std::_Mem_fn<void (WebCore::HTMLMediaElement::*)()>(WebCore::HTMLMediaElement*)>::operator()<>(void) (this=0x7eef180c60c8) at /usr/include/c++/6/functional:993 #11 0x00007f0499d9779c in WTF::Function<void()>::CallableWrapper<std::_Bind<std::_Mem_fn<void (WebCore::HTMLMediaElement::*)()>(WebCore::HTMLMediaElement*)> >::call(void) (this=0x7eef180c60c0) at DerivedSources/ForwardingHeaders/wtf/Function.h:101 #12 0x00007f0497d7ed8a in WTF::Function<void()>::operator()(void) const (this=0x7eef180fd7a8) at DerivedSources/ForwardingHeaders/wtf/Function.h:56 #13 0x00007f04994a1edc in (anonymous namespace)::GenericTaskQueue<WebCore::Timer>::<lambda()>::operator()(void) const (__closure=0x7eef180fd7a0) at ../../Source/WebCore/platform/GenericTaskQueue.h:94 #14 0x00007f04994a3320 in WTF::Function<void()>::CallableWrapper<WebCore::GenericTaskQueue<T>::enqueueTask(WebCore::GenericTaskQueue<T>::TaskFunction&&) [with T = WebCore::Timer; WebCore::GenericTaskQueue<T>::TaskFunction = WTF::Function<void()>]::<lambda()> >::call(void) (this=0x7eef180fd798) at DerivedSources/ForwardingHeaders/wtf/Function.h:101 #15 0x00007f0497d7ed8a in WTF::Function<void()>::operator()(void) const (this=0x7ffcd5b7c098) at DerivedSources/ForwardingHeaders/wtf/Function.h:56 #16 0x00007f049a2f792b in (anonymous namespace)::TaskDispatcher<WebCore::Timer>::dispatchOneTask (this=0x7f0411a027a0) at ../../Source/WebCore/platform/GenericTaskQueue.cpp:80 #17 0x00007f049a2f7818 in (anonymous namespace)::TaskDispatcher<WebCore::Timer>::sharedTimerFired () at ../../Source/WebCore/platform/GenericTaskQueue.cpp:65 #18 0x00007f049a2f76a5 in (anonymous namespace)::TaskDispatcher<WebCore::Timer>::<lambda()>::operator()(void) const (__closure=0x7f04112178b8) at ../../Source/WebCore/platform/GenericTaskQueue.cpp:49 #19 0x00007f049a2f811a in WTF::Function<void()>::CallableWrapper<WebCore::TaskDispatcher<WebCore::Timer>::sharedTimer()::<lambda()> >::call(void) (this=0x7f04112178b0) at DerivedSources/ForwardingHeaders/wtf/Function.h:101 #20 0x00007f0497d7ed8a in WTF::Function<void()>::operator()(void) const (this=0x7f04a04d7260 <_ZZN7WebCore14TaskDispatcherINS_5TimerEE11sharedTimerEvE5timer+64>) at DerivedSources/ForwardingHeaders/wtf/Function.h:56 #21 0x00007f0497d8e010 in (anonymous namespace)::Timer::fired (this=0x7f04a04d7220 <_ZZN7WebCore14TaskDispatcherINS_5TimerEE11sharedTimerEvE5timer>) at ../../Source/WebCore/platform/Timer.h:131 #22 0x00007f049a3262b6 in (anonymous namespace)::ThreadTimers::sharedTimerFiredInternal (this=0x7f047f37f730) at ../../Source/WebCore/platform/ThreadTimers.cpp:117 #23 0x00007f049a325ddb in (anonymous namespace)::ThreadTimers::<lambda()>::operator()(void) const (__closure=0x7f047f3fa348) at ../../Source/WebCore/platform/ThreadTimers.cpp:69 #24 0x00007f049a33097c in WTF::Function<void()>::CallableWrapper<WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::<lambda()> >::call(void) (this=0x7f047f3fa340) at DerivedSources/ForwardingHeaders/wtf/Function.h:101 #25 0x00007f0497d7ed8a in WTF::Function<void()>::operator()(void) const (this=0x7f04a04d7408 <_ZZN7WebCore21MainThreadSharedTimer9singletonEvE8instance+8>) at DerivedSources/ForwardingHeaders/wtf/Function.h:56 #26 0x00007f049a304ed7 in (anonymous namespace)::MainThreadSharedTimer::fired (this=0x7f04a04d7400 <_ZZN7WebCore21MainThreadSharedTimer9singletonEvE8instance>) at ../../Source/WebCore/platform/MainThreadSharedTimer.cpp:54 #27 0x00007f049a308e50 in WTF::RunLoop::Timer<WebCore::MainThreadSharedTimer>::fired (this=0x7f04a04d7410 <_ZZN7WebCore21MainThreadSharedTimer9singletonEvE8instance+16>) at DerivedSources/ForwardingHeaders/wtf/RunLoop.h:149 #28 0x00007f048e220d97 in WTF::RunLoop::TimerBase::<lambda(gpointer)>::operator()(gpointer) const (__closure=0x0, userData=0x7f04a04d7410 <_ZZN7WebCore21MainThreadSharedTimer9singletonEvE8instance+16>) at /home/slave/webkitgtk/gtk-linux-64-debug/build/Source/WTF/wtf/glib/RunLoopGLib.cpp:170 #29 0x00007f048e220def in WTF::RunLoop::TimerBase::<lambda(gpointer)>::_FUN(gpointer) () at /home/slave/webkitgtk/gtk-linux-64-debug/build/Source/WTF/wtf/glib/RunLoopGLib.cpp:176 #30 0x00007f048e22051a in WTF::<lambda(GSource*, GSourceFunc, gpointer)>::operator()(GSource *, GSourceFunc, gpointer) const (__closure=0x0, source=0x558d529dc690, callback=0x7f048e220dd2 <WTF::RunLoop::TimerBase::<lambda(gpointer)>::_FUN(gpointer)>, userData=0x7f04a04d7410 <_ZZN7WebCore21MainThreadSharedTimer9singletonEvE8instance+16>) at /home/slave/webkitgtk/gtk-linux-64-debug/build/Source/WTF/wtf/glib/RunLoopGLib.cpp:45 #31 0x00007f048e220549 in WTF::<lambda(GSource*, GSourceFunc, gpointer)>::_FUN(GSource *, GSourceFunc, gpointer) () at /home/slave/webkitgtk/gtk-linux-64-debug/build/Source/WTF/wtf/glib/RunLoopGLib.cpp:46 #32 0x00007f04878d381a in g_main_dispatch () at /home/slave/webkitgtk/gtk-linux-64-debug-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.54.2/glib/gmain.c:3148 #33 g_main_context_dispatch () at /home/slave/webkitgtk/gtk-linux-64-debug-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.54.2/glib/gmain.c:3813 #34 0x00007f04878d3ba8 in g_main_context_iterate () at /home/slave/webkitgtk/gtk-linux-64-debug-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.54.2/glib/gmain.c:3886 #35 0x00007f04878d3ec2 in g_main_loop_run () at /home/slave/webkitgtk/gtk-linux-64-debug-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.54.2/glib/gmain.c:4082 #36 0x00007f048e220a57 in WTF::RunLoop::run () at /home/slave/webkitgtk/gtk-linux-64-debug/build/Source/WTF/wtf/glib/RunLoopGLib.cpp:96 #37 0x00007f04989138f1 in (anonymous namespace)::ChildProcessMain<WebKit::WebProcess, WebKit::WebProcessMain> (argc=3, argv=0x7ffcd5b7c648) at ../../Source/WebKit/Shared/unix/ChildProcessMain.h:61 #38 0x00007f049891336c in (anonymous namespace)::WebProcessMainUnix (argc=3, argv=0x7ffcd5b7c648) at ../../Source/WebKit/WebProcess/gtk/WebProcessMainGtk.cpp:67 #39 0x0000558d519d6e5b in main (argc=3, argv=0x7ffcd5b7c648) at /home/slave/webkitgtk/gtk-linux-64-debug/build/Source/WebKit/WebProcess/EntryPoint/unix/WebProcessMain.cpp:52 STDERR: STDERR: warning: core file may not match specified executable file. STDERR: g_object_set_is_valid_property: object class 'WebKitMediaSrc' has no property named 'current-video' STDERR: g_object_set_is_valid_property: object class 'WebKitMediaSrc' has no property named 'current-video' STDERR: ASSERTION FAILED: !m_mseSeekCompleted STDERR: /home/slave/webkitgtk/gtk-linux-64-debug/build/Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp(330) : bool WebCore::MediaPlayerPrivateGStreamerMSE::doSeek() STDERR: 1 0x7f048e1a7401 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(WTFCrash+0x9) [0x7f048e1a7401] STDERR: 2 0x7f049ad2814c /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::MediaPlayerPrivateGStreamerMSE::doSeek()+0x98e) [0x7f049ad2814c] STDERR: 3 0x7f049ad2732e /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::MediaPlayerPrivateGStreamerMSE::seek(WTF::MediaTime const&)+0x330) [0x7f049ad2732e] STDERR: 4 0x7f049a43baa6 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::MediaPlayerPrivateInterface::seekWithTolerance(WTF::MediaTime const&, WTF::MediaTime const&, WTF::MediaTime const&)+0x38) [0x7f049a43baa6] STDERR: 5 0x7f049a4309e3 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::MediaPlayer::seekWithTolerance(WTF::MediaTime const&, WTF::MediaTime const&, WTF::MediaTime const&)+0x47) [0x7f049a4309e3] STDERR: 6 0x7f0499d5ba99 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::HTMLMediaElement::seekTask()+0x5cf) [0x7f0499d5ba99] STDERR: 7 0x7f0499d9a18a /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(void std::__invoke_impl<void, void (WebCore::HTMLMediaElement::* const&)(), WebCore::HTMLMediaElement*&>(std::__invoke_memfun_deref, void (WebCore::HTMLMediaElement::* const&)(), WebCore::HTMLMediaElement*&)+0x66) [0x7f0499d9a18a] STDERR: 8 0x7f0499d9a0af /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(std::result_of<void (WebCore::HTMLMediaElement::* const&(WebCore::HTMLMediaElement*&))()>::type std::__invoke<void (WebCore::HTMLMediaElement::* const&)(), WebCore::HTMLMediaElement*&>(void (WebCore::HTMLMediaElement::* const&)(), WebCore::HTMLMediaElement*&)+0x3f) [0x7f0499d9a0af] STDERR: 9 0x7f0499d9a006 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(decltype (__invoke((*this)._M_pmf, (forward<WebCore::HTMLMediaElement*&>)({parm#1}))) std::_Mem_fn_base<void (WebCore::HTMLMediaElement::*)(), true>::operator()<WebCore::HTMLMediaElement*&>(WebCore::HTMLMediaElement*&) const+0x2e) [0x7f0499d9a006] STDERR: 10 0x7f0499d99dce /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(void std::_Bind<std::_Mem_fn<void (WebCore::HTMLMediaElement::*)()> (WebCore::HTMLMediaElement*)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>)+0x48) [0x7f0499d99dce] STDERR: 11 0x7f0499d989c6 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(void std::_Bind<std::_Mem_fn<void (WebCore::HTMLMediaElement::*)()> (WebCore::HTMLMediaElement*)>::operator()<, void>()+0x2a) [0x7f0499d989c6] STDERR: 12 0x7f0499d9779c /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::Function<void ()>::CallableWrapper<std::_Bind<std::_Mem_fn<void (WebCore::HTMLMediaElement::*)()> (WebCore::HTMLMediaElement*)> >::call()+0x1c) [0x7f0499d9779c] STDERR: 13 0x7f0497d7ed8a /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::Function<void ()>::operator()() const+0x5e) [0x7f0497d7ed8a] STDERR: 14 0x7f04994a1edc /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::GenericTaskQueue<WebCore::Timer>::enqueueTask(WTF::Function<void ()>&&)::{lambda()#1}::operator()() const+0x80) [0x7f04994a1edc] STDERR: 15 0x7f04994a3320 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::Function<void ()>::CallableWrapper<WebCore::GenericTaskQueue<WebCore::Timer>::enqueueTask(WTF::Function<void ()>&&)::{lambda()#1}>::call()+0x1c) [0x7f04994a3320] STDERR: 16 0x7f0497d7ed8a /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::Function<void ()>::operator()() const+0x5e) [0x7f0497d7ed8a] STDERR: 17 0x7f049a2f792b /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::TaskDispatcher<WebCore::Timer>::dispatchOneTask()+0x67) [0x7f049a2f792b] STDERR: 18 0x7f049a2f7818 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::TaskDispatcher<WebCore::Timer>::sharedTimerFired()+0xe6) [0x7f049a2f7818] STDERR: 19 0x7f049a2f76a5 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0xaa8e6a5) [0x7f049a2f76a5] STDERR: 20 0x7f049a2f811a /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0xaa8f11a) [0x7f049a2f811a] STDERR: 21 0x7f0497d7ed8a /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::Function<void ()>::operator()() const+0x5e) [0x7f0497d7ed8a] STDERR: 22 0x7f0497d8e010 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::Timer::fired()+0x1c) [0x7f0497d8e010] STDERR: 23 0x7f049a3262b6 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::ThreadTimers::sharedTimerFiredInternal()+0x216) [0x7f049a3262b6] STDERR: 24 0x7f049a325ddb /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0xaabcddb) [0x7f049a325ddb] STDERR: 25 0x7f049a33097c /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0xaac797c) [0x7f049a33097c] STDERR: 26 0x7f0497d7ed8a /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::Function<void ()>::operator()() const+0x5e) [0x7f0497d7ed8a] STDERR: 27 0x7f049a304ed7 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::MainThreadSharedTimer::fired()+0x57) [0x7f049a304ed7] STDERR: 28 0x7f049a308e50 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::RunLoop::Timer<WebCore::MainThreadSharedTimer>::fired()+0x66) [0x7f049a308e50] STDERR: 29 0x7f048e220d97 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(+0x2e76d97) [0x7f048e220d97] STDERR: 30 0x7f048e220def /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(+0x2e76def) [0x7f048e220def] STDERR: 31 0x7f048e22051a /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(+0x2e7651a) [0x7f048e22051a]
I've just noticed that the block of code affected by the assert is very different in the downstream WPE implementation we maintain, where we've extensively tested the seek behaviour: https://github.com/WebPlatformForEmbedded/WPEWebKit/blob/cc88c3c/Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp#L324 https://github.com/WebKit/webkit/blob/dc5795c/Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp#L318 It might be worth to examine the differences in the seek algorithms between both versions and see what can be improved upstream.
There is a crash in debug mode with the ASSERT(!m_mseSeekCompleted) on MediaPlayerPrivateGStreamerMSE::doSeek. This needs to be removed to avoid the crash in debug mode because in our case for this test, we complete the seek without marking it as incomplete first. If you remove this, the only thing that is left is fixing the release bug, which is still there.
Created attachment 471748 [details] bt That code has changed quite a bit since 2018... New ASSERT in NativePromise.
Pull request: https://github.com/WebKit/WebKit/pull/30184
Committed 280365@main (3402d3c3b3ae): <https://commits.webkit.org/280365@main> Reviewed commits have been landed. Closing PR #30184 and removing active labels.
<rdar://problem/130574153>
This would need a patch.