Bug 238110

Summary: [WPE][GStreamer] media playback broken
Product: WebKit Reporter: Philippe Normand <pnormand>
Component: WPE WebKitAssignee: Zan Dobersek <zan>
Status: RESOLVED FIXED    
Severity: Normal CC: alex, bugs-noreply, zan, zdobersek
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 237649    
Attachments:
Description Flags
Patch ews-feeder: commit-queue-

Description Philippe Normand 2022-03-19 04:28:05 PDT
WPE_BROWSER=minibrowser run-minibrowser --wpe --debug LayoutTests/media/content/test.mp4

ASSERTION FAILED: unsigned(size) < c_maxBuffers
/app/webkit/Source/WebCore/platform/graphics/gbm/GBMBufferSwapchain.cpp(39) : WebCore::GBMBufferSwapchain::GBMBufferSwapchain(WebCore::GBMBufferSwapchain::BufferSwapchainSize)

(gdb) bt
#0  0x00007f6ec56d220e in WTFCrash() () at /app/webkit/Source/WTF/wtf/Assertions.cpp:322
#1  0x00007f6ec2016d2b in WTFCrashWithInfo(int, char const*, char const*, int) () at WTF/Headers/wtf/Assertions.h:748
#2  0x00007f6ec95182f0 in WebCore::GBMBufferSwapchain::GBMBufferSwapchain(WebCore::GBMBufferSwapchain::BufferSwapchainSize) (this=0x7f6da46fc390, size=WebCore::GBMBufferSwapchain::BufferSwapchainSize::Eight)
    at /app/webkit/Source/WebCore/platform/graphics/gbm/GBMBufferSwapchain.cpp:39
#3  0x00007f6ec58569c3 in WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer(WebCore::MediaPlayer*) (this=0x7f6eb5b03c00, player=0x7f6da4635948)
    at /app/webkit/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:178
#4  0x00007f6ec5880c9e in std::make_unique<WebCore::MediaPlayerPrivateGStreamer, WebCore::MediaPlayer*&>(WebCore::MediaPlayer*&) (__args=@0x7fff8439fad8: 0x7f6da4635948)
    at /usr/lib/gcc/x86_64-unknown-linux-gnu/11.2.0/../../../../include/c++/11.2.0/bits/unique_ptr.h:962
#5  0x00007f6ec5880ba0 in WTF::makeUnique<WebCore::MediaPlayerPrivateGStreamer, WebCore::MediaPlayer*&>(WebCore::MediaPlayer*&) (args=@0x7fff8439fad8: 0x7f6da4635948) at WTF/Headers/wtf/StdLibExtras.h:540
#6  0x00007f6ec58809dc in WebCore::MediaPlayerFactoryGStreamer::createMediaEnginePlayer(WebCore::MediaPlayer*) const (this=0x7f6d9e6d5548, player=0x7f6da4635948)
    at /app/webkit/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:286
#7  0x00007f6ec93ed568 in WebCore::MediaPlayer::loadWithNextMediaEngine(WebCore::MediaPlayerFactory const*) (this=0x7f6da4635948, current=0x0) at /app/webkit/Source/WebCore/platform/graphics/MediaPlayer.cpp:610
#8  0x00007f6ec93edba3 in WebCore::MediaPlayer::load(WebCore::MediaStreamPrivate&) (this=0x7f6da4635948, mediaStream=...) at /app/webkit/Source/WebCore/platform/graphics/MediaPlayer.cpp:535
#9  0x00007f6ec85e19c9 in WebCore::HTMLMediaElement::loadResource(WTF::URL const&, WebCore::ContentType&, WTF::String const&) (this=0x7f6e67f08150, initialURL=..., contentType=..., keySystem=...)
    at /app/webkit/Source/WebCore/html/HTMLMediaElement.cpp:1570
#10 0x00007f6ec8600336 in WebCore::HTMLMediaElement::selectMediaResource()::$_0::operator()() const (this=0x7f6d9e6e20f8) at /app/webkit/Source/WebCore/html/HTMLMediaElement.cpp:1384
#11 0x00007f6ec85ffe89 in WTF::Detail::CallableWrapper<WebCore::HTMLMediaElement::selectMediaResource()::$_0, void>::call() (this=0x7f6d9e6e20f0) at WTF/Headers/wtf/Function.h:53
#12 0x00007f6ec2095ae2 in WTF::Function<void ()>::operator()() const (this=0x7f6da46d4688) at WTF/Headers/wtf/Function.h:82
#13 0x00007f6ec7a53301 in WTF::CancellableTask::operator()() (this=0x7f6da46d4678) at WTF/Headers/wtf/CancellableTask.h:86
#14 0x00007f6ec8626479 in WebCore::ActiveDOMObject::queueCancellableTaskKeepingObjectAlive<WebCore::HTMLMediaElement>(WebCore::HTMLMediaElement&, WebCore::TaskSource, WTF::TaskCancellationGroup&, WTF::Function<void ()>&&)::{lambda()#1}::operator()() (this=0x7f6da46d4668) at /app/webkit/Source/WebCore/dom/ActiveDOMObject.h:119
#15 0x00007f6ec8626439 in WTF::Detail::CallableWrapper<WebCore::ActiveDOMObject::queueCancellableTaskKeepingObjectAlive<WebCore::HTMLMediaElement>(WebCore::HTMLMediaElement&, WebCore::TaskSource, WTF::TaskCancellationGroup&, WTF::Function<void ()>&&)::{lambda()#1}, void>::call() (this=0x7f6da46d4660) at WTF/Headers/wtf/Function.h:53
#16 0x00007f6ec2095ae2 in WTF::Function<void ()>::operator()() const (this=0x7f6d9e6e2138) at WTF/Headers/wtf/Function.h:82
#17 0x00007f6ec8205119 in WebCore::EventLoopFunctionDispatchTask::execute() (this=0x7f6d9e6e2118) at /app/webkit/Source/WebCore/dom/EventLoop.cpp:159
#18 0x00007f6ec81f7a70 in WebCore::EventLoop::run() (this=0x7f6eb5b5e6f0) at /app/webkit/Source/WebCore/dom/EventLoop.cpp:123
#19 0x00007f6ec837d9b6 in WebCore::WindowEventLoop::didReachTimeToRun() (this=0x7f6eb5b5e6f0) at /app/webkit/Source/WebCore/dom/WindowEventLoop.cpp:120
#20 0x00007f6ec838c8de in std::__invoke_impl<void, void (WebCore::WindowEventLoop::*&)(), WebCore::WindowEventLoop*&>(std::__invoke_memfun_deref, void (WebCore::WindowEventLoop::*&)(), WebCore::WindowEventLoop*&) (__f=@0x7f6eb5b5a848: (void (WebCore::WindowEventLoop::*)(WebCore::WindowEventLoop * const)) 0x7f6ec837d990 <WebCore::WindowEventLoop::didReachTimeToRun()>, __t=@0x7f6eb5b5a858: 0x7f6eb5b5e6f0)
    at /usr/lib/gcc/x86_64-unknown-linux-gnu/11.2.0/../../../../include/c++/11.2.0/bits/invoke.h:74
#21 0x00007f6ec838c812 in std::__invoke<void (WebCore::WindowEventLoop::*&)(), WebCore::WindowEventLoop*&>(void (WebCore::WindowEventLoop::*&)(), WebCore::WindowEventLoop*&)
    (__fn=@0x7f6eb5b5a848: (void (WebCore::WindowEventLoop::*)(WebCore::WindowEventLoop * const)) 0x7f6ec837d990 <WebCore::WindowEventLoop::didReachTimeToRun()>, __args=@0x7f6eb5b5a858: 0x7f6eb5b5e6f0)
    at /usr/lib/gcc/x86_64-unknown-linux-gnu/11.2.0/../../../../include/c++/11.2.0/bits/invoke.h:96
#22 0x00007f6ec838c7cd in std::_Bind<void (WebCore::WindowEventLoop::*(WebCore::WindowEventLoop*))()>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) (this=0x7f6eb5b5a848, __args=...)
    at /usr/lib/gcc/x86_64-unknown-linux-gnu/11.2.0/../../../../include/c++/11.2.0/functional:420
#23 0x00007f6ec838c786 in std::_Bind<void (WebCore::WindowEventLoop::*(WebCore::WindowEventLoop*))()>::operator()<, void>() (this=0x7f6eb5b5a848)
    at /usr/lib/gcc/x86_64-unknown-linux-gnu/11.2.0/../../../../include/c++/11.2.0/functional:503
#24 0x00007f6ec838c699 in WTF::Detail::CallableWrapper<std::_Bind<void (WebCore::WindowEventLoop::*(WebCore::WindowEventLoop*))()>, void>::call() (this=0x7f6eb5b5a840) at WTF/Headers/wtf/Function.h:53
#25 0x00007f6ec2095ae2 in WTF::Function<void ()>::operator()() const (this=0x7f6eb5b5e788) at WTF/Headers/wtf/Function.h:82
#26 0x00007f6ec294c3d9 in WebCore::Timer::fired() (this=0x7f6eb5b5e760) at WebCore/PrivateHeaders/WebCore/Timer.h:135
#27 0x00007f6ec907e876 in WebCore::ThreadTimers::sharedTimerFiredInternal() (this=0x7f6eb5b817d0) at /app/webkit/Source/WebCore/platform/ThreadTimers.cpp:127
#28 0x00007f6ec90808a1 in WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::$_0::operator()() const (this=0x7f6eb5bfa648) at /app/webkit/Source/WebCore/platform/ThreadTimers.cpp:67
#29 0x00007f6ec9080859 in WTF::Detail::CallableWrapper<WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::$_0, void>::call() (this=0x7f6eb5bfa640) at WTF/Headers/wtf/Function.h:53
#30 0x00007f6ec2095ae2 in WTF::Function<void ()>::operator()() const (this=0x7f6eca76a9d0 <WebCore::MainThreadSharedTimer::singleton()::instance+8>) at WTF/Headers/wtf/Function.h:82
#31 0x00007f6ec9028ea1 in WebCore::MainThreadSharedTimer::fired() (this=0x7f6eca76a9c8 <WebCore::MainThreadSharedTimer::singleton()::instance>)
    at /app/webkit/Source/WebCore/platform/MainThreadSharedTimer.cpp:83
#32 0x00007f6ec9033efe in std::__invoke_impl<void, void (WebCore::MainThreadSharedTimer::*&)(), WebCore::MainThreadSharedTimer*&>(std::__invoke_memfun_deref, void (WebCore::MainThreadSharedTimer::*&)(), WebCore::MainThreadSharedTimer*&)
    (__f=@0x7f6eb5b85788: (void (WebCore::MainThreadSharedTimer::*)(WebCore::MainThreadSharedTimer * const)) 0x7f6ec9028e20 <WebCore::MainThreadSharedTimer::fired()>, __t=@0x7f6eb5b85798: 0x7f6eca76a9c8 <WebCore::MainThreadSharedTimer::singleton()::instance>) at /usr/lib/gcc/x86_64-unknown-linux-gnu/11.2.0/../../../../include/c++/11.2.0/bits/invoke.h:74
--Type <RET> for more, q to quit, c to continue without paging--
#33 0x00007f6ec9033e32 in std::__invoke<void (WebCore::MainThreadSharedTimer::*&)(), WebCore::MainThreadSharedTimer*&>(void (WebCore::MainThreadSharedTimer::*&)(), WebCore::MainThreadSharedTimer*&)
    (__fn=@0x7f6eb5b85788: (void (WebCore::MainThreadSharedTimer::*)(WebCore::MainThreadSharedTimer * const)) 0x7f6ec9028e20 <WebCore::MainThreadSharedTimer::fired()>, __args=@0x7f6eb5b85798: 0x7f6eca76a9c8 <WebCore::MainThreadSharedTimer::singleton()::instance>) at /usr/lib/gcc/x86_64-unknown-linux-gnu/11.2.0/../../../../include/c++/11.2.0/bits/invoke.h:96
#34 0x00007f6ec9033ded in std::_Bind<void (WebCore::MainThreadSharedTimer::*(WebCore::MainThreadSharedTimer*))()>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) (this=0x7f6eb5b85788, __args=...)
    at /usr/lib/gcc/x86_64-unknown-linux-gnu/11.2.0/../../../../include/c++/11.2.0/functional:420
#35 0x00007f6ec9033da6 in std::_Bind<void (WebCore::MainThreadSharedTimer::*(WebCore::MainThreadSharedTimer*))()>::operator()<, void>() (this=0x7f6eb5b85788)
    at /usr/lib/gcc/x86_64-unknown-linux-gnu/11.2.0/../../../../include/c++/11.2.0/functional:503
#36 0x00007f6ec9033c69 in WTF::Detail::CallableWrapper<std::_Bind<void (WebCore::MainThreadSharedTimer::*(WebCore::MainThreadSharedTimer*))()>, void>::call() (this=0x7f6eb5b85780)
    at WTF/Headers/wtf/Function.h:53
#37 0x00007f6ec2095ae2 in WTF::Function<void ()>::operator()() const (this=0x7f6eca76aa00 <WebCore::MainThreadSharedTimer::singleton()::instance+56>) at WTF/Headers/wtf/Function.h:82
#38 0x00007f6ec9031f39 in WTF::RunLoop::Timer<WebCore::MainThreadSharedTimer>::fired() (this=0x7f6eca76a9d8 <WebCore::MainThreadSharedTimer::singleton()::instance+16>) at WTF/Headers/wtf/RunLoop.h:188
#39 0x00007f6ec57d497a in WTF::RunLoop::TimerBase::TimerBase(WTF::RunLoop&)::$_3::operator()(void*) const
    (this=0x7f6eca76a9d8 <WebCore::MainThreadSharedTimer::singleton()::instance+16>, userData=0x7f6eca76a9d8 <WebCore::MainThreadSharedTimer::singleton()::instance+16>)
    at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:177
#40 0x00007f6ec57d4925 in WTF::RunLoop::TimerBase::TimerBase(WTF::RunLoop&)::$_3::__invoke(void*) (userData=0x7f6eca76a9d8 <WebCore::MainThreadSharedTimer::singleton()::instance+16>)
    at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:169
#41 0x00007f6ec57d4889 in WTF::RunLoop::$_0::operator()(_GSource*, int (*)(void*), void*) const
    (this=0x2010420, source=0x2010420, callback=0x7f6ec57d4910 <WTF::RunLoop::TimerBase::TimerBase(WTF::RunLoop&)::$_3::__invoke(void*)>, userData=0x7f6eca76a9d8 <WebCore::MainThreadSharedTimer::singleton()::instance+16>) at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:53
#42 0x00007f6ec57d3a95 in WTF::RunLoop::$_0::__invoke(_GSource*, int (*)(void*), void*)
    (source=0x2010420, callback=0x7f6ec57d4910 <WTF::RunLoop::TimerBase::TimerBase(WTF::RunLoop&)::$_3::__invoke(void*)>, userData=0x7f6eca76a9d8 <WebCore::MainThreadSharedTimer::singleton()::instance+16>)
    at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:45
#43 0x00007f6ebb427294 in g_main_dispatch (context=0x1d6e3c0) at ../glib/gmain.c:3381
#44 g_main_context_dispatch (context=0x1d6e3c0) at ../glib/gmain.c:4099
#45 0x00007f6ebb427638 in g_main_context_iterate (context=0x1d6e3c0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4175
#46 0x00007f6ebb427943 in g_main_loop_run (loop=0x1d48160) at ../glib/gmain.c:4373
#47 0x00007f6ec57d4008 in WTF::RunLoop::run() () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:108
#48 0x00007f6ec373c014 in WebKit::AuxiliaryProcessMainBase<WebKit::WebProcess, true>::run(int, char**) (this=0x7fff843a09a0, argc=3, argv=0x7fff843a0b58)
    at /app/webkit/Source/WebKit/Shared/AuxiliaryProcessMain.h:70
#49 0x00007f6ec3736f70 in WebKit::AuxiliaryProcessMain<WebKit::WebProcessMainWPE>(int, char**) (argc=3, argv=0x7fff843a0b58) at /app/webkit/Source/WebKit/Shared/AuxiliaryProcessMain.h:96
#50 0x00007f6ec373535b in WebKit::WebProcessMain(int, char**) (argc=3, argv=0x7fff843a0b58) at /app/webkit/Source/WebKit/WebProcess/wpe/WebProcessMainWPE.cpp:117
#51 0x0000000000201812 in main(int, char**) (argc=3, argv=0x7fff843a0b58) at /app/webkit/Source/WebKit/WebProcess/EntryPoint/unix/WebProcessMain.cpp:31
Comment 1 Philippe Normand 2022-03-19 04:50:59 PDT
Was USE_TEXTURE_MAPPER_DMABUF enabled by default preternaturally?
Comment 2 Zan Dobersek 2022-03-19 15:20:18 PDT
No, just that the assert should be using <=.
Comment 3 Zan Dobersek 2022-03-20 01:21:01 PDT
Created attachment 455191 [details]
Patch
Comment 4 EWS 2022-03-20 04:41:55 PDT
Committed r291541 (248647@main): <https://commits.webkit.org/248647@main>

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455191 [details].