Bug 236637

Summary: [GTK][WPE] Some GStreamer tests crash with ANGLE enabled
Product: WebKit Reporter: Chris Lord <clord>
Component: ANGLEAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: alex, dino, kbr, kkinnunen, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on: 236587    
Bug Blocks: 237649    
Attachments:
Description Flags
Crash log
none
crash log none

Description Chris Lord 2022-02-15 00:57:36 PST
It's reported that some GStreamer tests crash with ANGLE enabled due to incorrectly accessing some X11 API - this needs investigation.
Comment 1 Alejandro G. Castro 2022-02-15 11:09:41 PST
For the record these are the tests crashing:

webgl/1.0.3/conformance/extensions/oes-texture-float-with-video.html
webgl/1.0.3/conformance/extensions/oes-texture-half-float-with-video.html
webgl/1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-video-rgb565.html
webgl/1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-video-rgba4444.html
webgl/1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-video-rgba5551.html
webgl/1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-video.html
webgl/1.0.3/conformance/textures/texture-upload-size.html
webgl/1.0.x/conformance/textures/misc/texture-corner-case-videos.html
webgl/pending/conformance/textures/misc/tex-image-video-repeated.html
Comment 2 Alejandro G. Castro 2022-02-15 11:12:49 PST
Created attachment 452059 [details]
Crash log

This is one of the crash logs.
Comment 3 Alejandro G. Castro 2022-07-12 12:26:14 PDT
The only crash pending is in webgl/1.0.3/conformance/textures/texture-upload-size.html, the other ones are fixed, the crash backtrace is:

Thread 1 (Thread 0x7f79ff51abc0 (LWP 255659)):
#0  g_logv (log_domain=0x7f7a0360b000 "GLib-GObject", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=<optimized out>) at ../glib/gmessages.c:1418
#1  0x00007f7a034e8073 in g_log (log_domain=log_domain@entry=0x7f7a0360b000 "GLib-GObject", log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0x7f7a035459f8 "%s: assertion '%s' failed") at ../glib/gmessages.c:1456
#2  0x00007f7a034e877d in g_return_if_fail_warning (log_domain=log_domain@entry=0x7f7a0360b000 "GLib-GObject", pretty_function=pretty_function@entry=0x7f7a03614750 <__func__.16> "g_signal_connect_data", expression=expression@entry=0x7f7a03610d38 "G_TYPE_CHECK_INSTANCE (instance)") at ../glib/gmessages.c:2942
#3  0x00007f7a035f60bd in g_signal_connect_data (instance=0x0, detailed_signal=0x7f7a11fd086a "child-added", c_handler=0x7f7a0c9fd02b <_FUN(GstChildProxy*, GObject*, gchar*, gpointer)>, data=0x7f77e4486a20, destroy_data=0x7f7a0c9fd09b <_FUN(gpointer, GClosure*)>, connect_flags=0) at ../gobject/gsignal.c:2570
#4  0x00007f7a0c9fd16c in WebCore::createAutoAudioSink(WTF::String const&) (role="video") at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:515
#5  0x00007f7a0c9fd1b9 in WebCore::createPlatformAudioSink(WTF::String const&) (role="video") at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:543
#6  0x00007f7a0ca24121 in WebCore::MediaPlayerPrivateGStreamer::createAudioSink() (this=0x7f79b0586d80) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1252
#7  0x00007f7a0ca1e495 in WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer(WebCore::MediaPlayer*) (this=0x7f79b0586d80, player=0x7f79fec536f0) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:200
#8  0x00007f7a0ca454b2 in std::make_unique<WebCore::MediaPlayerPrivateGStreamer, WebCore::MediaPlayer*&>(WebCore::MediaPlayer*&) () at /usr/include/c++/12/bits/unique_ptr.h:1065
#9  0x00007f7a0ca425ad in WTF::makeUnique<WebCore::MediaPlayerPrivateGStreamer, WebCore::MediaPlayer*&>(WebCore::MediaPlayer*&) () at /mnt/fast_disk/alex_sourcecode/WebKit/WebKitBuild/Debug/WTF/Headers/wtf/StdLibExtras.h:540
#10 0x00007f7a0ca425db in WebCore::MediaPlayerFactoryGStreamer::createMediaEnginePlayer(WebCore::MediaPlayer*) const (this=0x7f77e44f3f90, player=0x7f79fec536f0) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:288
#11 0x00007f7a0ff5d53f in WebCore::MediaPlayer::loadWithNextMediaEngine(WebCore::MediaPlayerFactory const*) (this=0x7f79fec536f0, current=0x0) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/platform/graphics/MediaPlayer.cpp:625
#12 0x00007f7a0ff5cd90 in WebCore::MediaPlayer::load(WTF::URL const&, WebCore::ContentType const&, WTF::String const&) (this=0x7f79fec536f0, url=..., contentType=..., keySystem="(null)") at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/platform/graphics/MediaPlayer.cpp:521
#13 0x00007f7a0f32e7bd in WebCore::HTMLMediaElement::loadResource(WTF::URL const&, WebCore::ContentType&, WTF::String const&) (this=0x7f7900324010, initialURL=..., contentType=..., keySystem="(null)") at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/html/HTMLMediaElement.cpp:1616
#14 0x00007f7a0f32d47d in operator()() const (__closure=0x7f79a8738468) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/html/HTMLMediaElement.cpp:1457
#15 0x00007f7a0f35e4d6 in WTF::Detail::CallableWrapper<WebCore::HTMLMediaElement::selectMediaResource()::<lambda()>, void>::call(void) (this=0x7f79a8738460) at /mnt/fast_disk/alex_sourcecode/WebKit/WebKitBuild/Debug/WTF/Headers/wtf/Function.h:53
#16 0x00007f7a0b1ce111 in WTF::Function<void ()>::operator()() const (this=0x7f79485d8838) at /mnt/fast_disk/alex_sourcecode/WebKit/WebKitBuild/Debug/WTF/Headers/wtf/Function.h:82
#17 0x00007f7a0e7a5152 in WTF::CancellableTask::operator()() (this=0x7f79485d8828) at /mnt/fast_disk/alex_sourcecode/WebKit/WebKitBuild/Debug/WTF/Headers/wtf/CancellableTask.h:86
#18 0x00007f7a0f361ee0 in WebCore::ActiveDOMObject::queueCancellableTaskKeepingObjectAlive<WebCore::HTMLMediaElement>(WebCore::HTMLMediaElement&, WebCore::TaskSource, WTF::TaskCancellationGroup&, WTF::Function<void ()>&&)::{lambda()#1}::operator()() (__closure=0x7f79485d8818) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/dom/ActiveDOMObject.h:119
#19 0x00007f7a0f3921b8 in WTF::Detail::CallableWrapper<WebCore::ActiveDOMObject::queueCancellableTaskKeepingObjectAlive<WebCore::HTMLMediaElement>(WebCore::HTMLMediaElement&, WebCore::TaskSource, WTF::TaskCancellationGroup&, WTF::Function<void ()>&&)::{lambda()#1}, void>::call() (this=0x7f79485d8810) at /mnt/fast_disk/alex_sourcecode/WebKit/WebKitBuild/Debug/WTF/Headers/wtf/Function.h:53
#20 0x00007f7a0b1ce111 in WTF::Function<void ()>::operator()() const (this=0x7f79a87384a8) at /mnt/fast_disk/alex_sourcecode/WebKit/WebKitBuild/Debug/WTF/Headers/wtf/Function.h:82
#21 0x00007f7a0efa226e in WebCore::EventLoopFunctionDispatchTask::execute() (this=0x7f79a8738488) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/dom/EventLoop.cpp:159
#22 0x00007f7a0ef981ae in WebCore::EventLoop::run() (this=0x7f79fec53378) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/dom/EventLoop.cpp:123
#23 0x00007f7a0f0d6a99 in WebCore::WindowEventLoop::didReachTimeToRun() (this=0x7f79fec53378) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/dom/WindowEventLoop.cpp:121
#24 0x00007f7a0f0ebe88 in std::__invoke_impl<void, void (WebCore::WindowEventLoop::*&)(), WebCore::WindowEventLoop*&>(std::__invoke_memfun_deref, void (WebCore::WindowEventLoop::*&)(), WebCore::WindowEventLoop*&) (__f=@0x7f79a87b8568: (void (WebCore::WindowEventLoop::*)(class WebCore::WindowEventLoop * const)) 0x7f7a0f0d6a6e <WebCore::WindowEventLoop::didReachTimeToRun()>, __t=@0x7f79a87b8578: 0x7f79fec53378) at /usr/include/c++/12/bits/invoke.h:74
#25 0x00007f7a0f0ebdf3 in std::__invoke<void (WebCore::WindowEventLoop::*&)(), WebCore::WindowEventLoop*&>(void (WebCore::WindowEventLoop::*&)(), WebCore::WindowEventLoop*&) (__fn=@0x7f79a87b8568: (void (WebCore::WindowEventLoop::*)(class WebCore::WindowEventLoop * const)) 0x7f7a0f0d6a6e <WebCore::WindowEventLoop::didReachTimeToRun()>) at /usr/include/c++/12/bits/invoke.h:96
#26 0x00007f7a0f0ebd7c in std::_Bind<void (WebCore::WindowEventLoop::*(WebCore::WindowEventLoop*))()>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) (this=0x7f79a87b8568, __args=...) at /usr/include/c++/12/functional:484
#27 0x00007f7a0f0ebd30 in std::_Bind<void (WebCore::WindowEventLoop::*(WebCore::WindowEventLoop*))()>::operator()<, void>() (this=0x7f79a87b8568) at /usr/include/c++/12/functional:567
#28 0x00007f7a0f0ebd08 in WTF::Detail::CallableWrapper<std::_Bind<void (WebCore::WindowEventLoop::*(WebCore::WindowEventLoop*))()>, void>::call() (this=0x7f79a87b8560) at /mnt/fast_disk/alex_sourcecode/WebKit/WebKitBuild/Debug/WTF/Headers/wtf/Function.h:53
#29 0x00007f7a0b1ce111 in WTF::Function<void ()>::operator()() const (this=0x7f79fec53410) at /mnt/fast_disk/alex_sourcecode/WebKit/WebKitBuild/Debug/WTF/Headers/wtf/Function.h:82
#30 0x00007f7a0ba0d07c in WebCore::Timer::fired() (this=0x7f79fec533e8) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/platform/Timer.h:135
#31 0x00007f7a0fd78c33 in WebCore::ThreadTimers::sharedTimerFiredInternal() (this=0x7f79fec86730) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/platform/ThreadTimers.cpp:127
#32 0x00007f7a0fd78579 in operator()() const (__closure=0x7f79fecf94c8) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/platform/ThreadTimers.cpp:67
#33 0x00007f7a0fd7b3b6 in WTF::Detail::CallableWrapper<WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::<lambda()>, void>::call(void) (this=0x7f79fecf94c0) at /mnt/fast_disk/alex_sourcecode/WebKit/WebKitBuild/Debug/WTF/Headers/wtf/Function.h:53
#34 0x00007f7a0b1ce111 in WTF::Function<void ()>::operator()() const (this=0x7f7a186d5fc8 <WebCore::MainThreadSharedTimer::singleton()::instance+8>) at /mnt/fast_disk/alex_sourcecode/WebKit/WebKitBuild/Debug/WTF/Headers/wtf/Function.h:82
#35 0x00007f7a0fd2ec6c in WebCore::MainThreadSharedTimer::fired() (this=0x7f7a186d5fc0 <WebCore::MainThreadSharedTimer::singleton()::instance>) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebCore/platform/MainThreadSharedTimer.cpp:83
#36 0x00007f7a0fd38f94 in std::__invoke_impl<void, void (WebCore::MainThreadSharedTimer::*&)(), WebCore::MainThreadSharedTimer*&>(std::__invoke_memfun_deref, void (WebCore::MainThreadSharedTimer::*&)(), WebCore::MainThreadSharedTimer*&) (__f=@0x7f79fecfa9e8: (void (WebCore::MainThreadSharedTimer::*)(class WebCore::MainThreadSharedTimer * const)) 0x7f7a0fd2ebe4 <WebCore::MainThreadSharedTimer::fired()>, __t=@0x7f79fecfa9f8: 0x7f7a186d5fc0 <WebCore::MainThreadSharedTimer::singleton()::instance>) at /usr/include/c++/12/bits/invoke.h:74
#37 0x00007f7a0fd38f0d in std::__invoke<void (WebCore::MainThreadSharedTimer::*&)(), WebCore::MainThreadSharedTimer*&>(void (WebCore::MainThreadSharedTimer::*&)(), WebCore::MainThreadSharedTimer*&) (__fn=@0x7f79fecfa9e8: (void (WebCore::MainThreadSharedTimer::*)(class WebCore::MainThreadSharedTimer * const)) 0x7f7a0fd2ebe4 <WebCore::MainThreadSharedTimer::fired()>) at /usr/include/c++/12/bits/invoke.h:96
#38 0x00007f7a0fd38e96 in std::_Bind<void (WebCore::MainThreadSharedTimer::*(WebCore::MainThreadSharedTimer*))()>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) (this=0x7f79fecfa9e8, __args=...) at /usr/include/c++/12/functional:484
#39 0x00007f7a0fd38e4a in std::_Bind<void (WebCore::MainThreadSharedTimer::*(WebCore::MainThreadSharedTimer*))()>::operator()<, void>() (this=0x7f79fecfa9e8) at /usr/include/c++/12/functional:567
#40 0x00007f7a0fd38e02 in WTF::Detail::CallableWrapper<std::_Bind<void (WebCore::MainThreadSharedTimer::*(WebCore::MainThreadSharedTimer*))()>, void>::call() (this=0x7f79fecfa9e0) at /mnt/fast_disk/alex_sourcecode/WebKit/WebKitBuild/Debug/WTF/Headers/wtf/Function.h:53
#41 0x00007f7a0b1ce111 in WTF::Function<void ()>::operator()() const (this=0x7f7a186d5ff8 <WebCore::MainThreadSharedTimer::singleton()::instance+56>) at /mnt/fast_disk/alex_sourcecode/WebKit/WebKitBuild/Debug/WTF/Headers/wtf/Function.h:82
#42 0x00007f7a0fd38e22 in WTF::RunLoop::Timer<WebCore::MainThreadSharedTimer>::fired() (this=0x7f7a186d5fd0 <WebCore::MainThreadSharedTimer::singleton()::instance+16>) at /mnt/fast_disk/alex_sourcecode/WebKit/WebKitBuild/Debug/WTF/Headers/wtf/RunLoop.h:188
#43 0x00007f7a07ace571 in operator()(gpointer) const (__closure=0x0, userData=0x7f7a186d5fd0 <WebCore::MainThreadSharedTimer::singleton()::instance+16>) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WTF/wtf/glib/RunLoopGLib.cpp:177
#44 0x00007f7a07ace5b1 in _FUN(gpointer) () at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WTF/wtf/glib/RunLoopGLib.cpp:181
#45 0x00007f7a07acdb75 in operator()(GSource*, GSourceFunc, gpointer) const (__closure=0x0, source=0x1e15000, callback=0x7f7a07ace594 <_FUN(gpointer)>, userData=0x7f7a186d5fd0 <WebCore::MainThreadSharedTimer::singleton()::instance+16>) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WTF/wtf/glib/RunLoopGLib.cpp:53
#46 0x00007f7a07acdbc3 in _FUN(GSource*, GSourceFunc, gpointer) () at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WTF/wtf/glib/RunLoopGLib.cpp:56
#47 0x00007f7a034e2f4f in g_main_dispatch (context=0x1da6310) at ../glib/gmain.c:3417
#48 g_main_context_dispatch (context=0x1da6310) at ../glib/gmain.c:4135
#49 0x00007f7a03538168 in g_main_context_iterate.constprop.0 (context=0x1da6310, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4211
#50 0x00007f7a034e266f in g_main_loop_run (loop=0x1dd3c90) at ../glib/gmain.c:4411
#51 0x00007f7a07ace1fb in WTF::RunLoop::run() () at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WTF/wtf/glib/RunLoopGLib.cpp:108
#52 0x00007f7a0c85cbb7 in WebKit::AuxiliaryProcessMainBase<WebKit::WebProcess, true>::run(int, char**) (this=0x7fff60884ca0, argc=4, argv=0x7fff60884e58) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebKit/Shared/AuxiliaryProcessMain.h:70
#53 0x00007f7a0c85c821 in WebKit::AuxiliaryProcessMain<WebKit::WebProcessMainGtk>(int, char**) (argc=4, argv=0x7fff60884e58) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebKit/Shared/AuxiliaryProcessMain.h:96
#54 0x00007f7a0c85c19e in WebKit::WebProcessMain(int, char**) (argc=4, argv=0x7fff60884e58) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebKit/WebProcess/gtk/WebProcessMainGtk.cpp:98
#55 0x0000000000401146 in main(int, char**) (argc=4, argv=0x7fff60884e58) at /mnt/fast_disk/alex_sourcecode/WebKit/Source/WebKit/WebProcess/EntryPoint/unix/WebProcessMain.cpp:31
Comment 4 Alejandro G. Castro 2022-07-12 12:26:56 PDT
Created attachment 460818 [details]
crash log
Comment 5 Alejandro G. Castro 2022-07-14 10:34:38 PDT
Ok, so just tested inside flatpak and the list of crashes are the original one. And the dump some X11 issue as reported in previous comments. So there are multiple situations depending if we test inside or outside flatpak.
Comment 6 Alejandro G. Castro 2022-09-23 08:06:34 PDT
This is already fixed after the last patches for ANGLE. 

https://commits.webkit.org/254751@main
Comment 7 Radar WebKit Bug Importer 2022-09-23 08:07:19 PDT
<rdar://problem/100325136>