[Webkit-unassigned] [Bug 254918] New: [GTK] Hang in CompositingRunLoop

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Apr 3 07:45:42 PDT 2023


https://bugs.webkit.org/show_bug.cgi?id=254918

            Bug ID: 254918
           Summary: [GTK] Hang in CompositingRunLoop
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: WebKitGTK
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: mcatanzaro at gnome.org
                CC: bugs-noreply at webkitgtk.org

Created attachment 465746

  --> https://bugs.webkit.org/attachment.cgi?id=465746&action=review

All-threads backtrace

I have a web process that crashed in WebKit::crashAfter10Seconds on the new watchdog thread after failing to quit within 10 seconds of the UI process shutting down. It was hung in CompositingRunLoop. Here is the backtrace of the main thread, to show what it was doing at the time of the hang:

Thread 4 (Thread 0x7fb1b6d6b9c0 (LWP 2)):
#0  __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0x7fb19e008360) at futex-internal.c:57
#1  __futex_abstimed_wait_common (futex_word=futex_word at entry=0x7fb19e008360, expected=expected at entry=0, clockid=clockid at entry=0, abstime=abstime at entry=0x0, private=private at entry=0, cancel=cancel at entry=true) at futex-internal.c:87
#2  0x00007fb1be08bc1f in __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word at entry=0x7fb19e008360, expected=expected at entry=0, clockid=clockid at entry=0, abstime=abstime at entry=0x0, private=private at entry=0) at futex-internal.c:139
#3  0x00007fb1be08e4d1 in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=<optimized out>, cond=0x7fb19e008338) at pthread_cond_wait.c:503
#4  ___pthread_cond_wait (cond=0x7fb19e008338, mutex=<optimized out>) at pthread_cond_wait.c:618
#5  0x00007fb1bda784a0 in WTF::ThreadCondition::wait(WTF::Mutex&) (this=0x7fb19e008338, mutex=...) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WTF/wtf/posix/ThreadingPOSIX.cpp:603
#6  WTF::ThreadCondition::timedWait(WTF::Mutex&, WTF::WallTime) (this=0x7fb19e008338, mutex=..., absoluteTime=<error reading variable: That operation is not available on integers of more than 8 bytes.>) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WTF/wtf/posix/ThreadingPOSIX.cpp:613
#7  0x00007fb1bda0ce43 in WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&) (address=0x7fb19e11aec1, validation=..., beforeSleep=..., timeout=...) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WTF/wtf/ParkingLot.cpp:595
#8  0x00007fb1bee176db in WTF::ParkingLot::parkConditionally<WTF::Condition::waitUntilUnchecked<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)::{lambda()#1}, WTF::Condition::waitUntilUnchecked<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)::{lambda()#2}>(void const*, WTF::Condition::waitUntilUnchecked<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)::{lambda()#1} const&, WTF::Condition::waitUntilUnchecked<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)::{lambda()#2} const&, WTF::TimeWithDynamicClockType const&) (address=0x7fb19e11aec1, validation=..., beforeSleep=..., timeout=...) at WTF/Headers/wtf/ParkingLot.h:82
#9  WTF::Condition::waitUntilUnchecked<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&) (this=0x7fb19e11aec1, lock=..., timeout=...) at WTF/Headers/wtf/Condition.h:192
#10 0x00007fb1beee3868 in WTF::Condition::waitUntil(WTF::Lock&, WTF::TimeWithDynamicClockType const&) (this=0x7fb19e008360, lock=..., timeout=...) at WTF/Headers/wtf/Condition.h:77
#11 WTF::Condition::wait(WTF::Lock&) (this=0x7fb19e008360, lock=...) at WTF/Headers/wtf/Condition.h:127
#12 WebKit::CompositingRunLoop::performTaskSync(WTF::Function<void ()>&&) (this=0x7fb19e11ae80, function=...) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:85
#13 0x00007fb1beee4340 in WebKit::ThreadedCompositor::suspend() (this=0x7fb19e071260) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:151
#14 0x00007fb1bf225d4d in WebKit::LayerTreeHost::pauseRendering() (this=0xfffffffffffffe00) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:263
#15 WebKit::DrawingAreaCoordinatedGraphics::suspendPainting() (this=0x7fb19e0ac220) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:611
#16 WebKit::DrawingAreaCoordinatedGraphics::activityStateDidChange(WTF::OptionSet<WebCore::ActivityState::Flag>, unsigned long, WTF::CompletionHandler<void ()>&&) (this=0x7fb19e0ac220, changed=..., completionHandler=...) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:408
#17 0x00007fb1bf1eef4b in WebKit::WebPage::setActivityState(WTF::OptionSet<WebCore::ActivityState::Flag>, unsigned long, WTF::CompletionHandler<void ()>&&) (this=0x7fb19e0b4730, activityState=..., activityStateChangeID=0, callback=...) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/WebProcess/WebPage/WebPage.cpp:3775
#18 0x00007fb1bec19c58 in _ZZN3IPC18callMemberFunctionIN6WebKit7WebPageES2_FvN3WTF9OptionSetIN7WebCore13ActivityState4FlagEEEmONS3_17CompletionHandlerIFvvEEEESt5tupleIJS8_mEESA_EEvPT_MT0_T1_OT2_ONS9_IT3_EEENKUlDpOT_E_clIJS8_mEEEDaSS_ (args=@0x7ffc5c766040: 0, this=<optimized out>, args=<optimized out>) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Platform/IPC/HandleMessage.h:147
#19 _ZSt13__invoke_implIvZN3IPC18callMemberFunctionIN6WebKit7WebPageES3_FvN3WTF9OptionSetIN7WebCore13ActivityState4FlagEEEmONS4_17CompletionHandlerIFvvEEEESt5tupleIJS9_mEESB_EEvPT_MT0_T1_OT2_ONSA_IT3_EEEUlDpOT_E_JS9_mEESH_St14__invoke_otherOSJ_DpOT1_ (__args=@0x7ffc5c766040: 0, __f=<optimized out>, __args=<optimized out>) at /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/12.2.0/../../../../include/c++/12.2.0/bits/invoke.h:61
#20 _ZSt8__invokeIZN3IPC18callMemberFunctionIN6WebKit7WebPageES3_FvN3WTF9OptionSetIN7WebCore13ActivityState4FlagEEEmONS4_17CompletionHandlerIFvvEEEESt5tupleIJS9_mEESB_EEvPT_MT0_T1_OT2_ONSA_IT3_EEEUlDpOT_E_JS9_mEENSt15__invoke_resultISH_JDpT0_EE4typeEOSH_DpOSW_ (__args=@0x7ffc5c766040: 0, __fn=<optimized out>, __args=<optimized out>) at /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/12.2.0/../../../../include/c++/12.2.0/bits/invoke.h:96
#21 _ZSt12__apply_implIZN3IPC18callMemberFunctionIN6WebKit7WebPageES3_FvN3WTF9OptionSetIN7WebCore13ActivityState4FlagEEEmONS4_17CompletionHandlerIFvvEEEESt5tupleIJS9_mEESB_EEvPT_MT0_T1_OT2_ONSA_IT3_EEEUlDpOT_E_SG_JLm0ELm1EEEDcOSH_OSJ_St16integer_sequenceImJXspT1_EEE (__t=..., __f=<optimized out>) at /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/12.2.0/../../../../include/c++/12.2.0/tuple:1852
#22 _ZSt5applyIZN3IPC18callMemberFunctionIN6WebKit7WebPageES3_FvN3WTF9OptionSetIN7WebCore13ActivityState4FlagEEEmONS4_17CompletionHandlerIFvvEEEESt5tupleIJS9_mEESB_EEvPT_MT0_T1_OT2_ONSA_IT3_EEEUlDpOT_E_SG_EDcOSH_OSJ_ (__t=..., __f=<optimized out>) at /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/12.2.0/../../../../include/c++/12.2.0/tuple:1863
#23 IPC::callMemberFunction<WebKit::WebPage, WebKit::WebPage, void (WTF::OptionSet<WebCore::ActivityState::Flag>, unsigned long, WTF::CompletionHandler<void ()>&&), std::tuple<WTF::OptionSet<WebCore::ActivityState::Flag>, unsigned long>, void ()>(WebKit::WebPage*, void (WebKit::WebPage::*)(WTF::OptionSet<WebCore::ActivityState::Flag>, unsigned long, WTF::CompletionHandler<void ()>&&), std::tuple<WTF::OptionSet<WebCore::ActivityState::Flag>, unsigned long>&&, WTF::CompletionHandler<void ()>&&) (object=0x7fb19e0b4730, function=<optimized out>, tuple=..., completionHandler=...) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Platform/IPC/HandleMessage.h:145
#24 IPC::handleMessageAsync<Messages::WebPage::SetActivityState, WebKit::WebPage, WebKit::WebPage, void (WTF::OptionSet<WebCore::ActivityState::Flag>, unsigned long, WTF::CompletionHandler<void ()>&&)>(IPC::Connection&, IPC::Decoder&, WebKit::WebPage*, void (WebKit::WebPage::*)(WTF::OptionSet<WebCore::ActivityState::Flag>, unsigned long, WTF::CompletionHandler<void ()>&&)) (connection=..., decoder=<optimized out>, object=0x7fb19e0b4730, function=<optimized out>) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Platform/IPC/HandleMessage.h:320
#25 WebKit::WebPage::didReceiveWebPageMessage(IPC::Connection&, IPC::Decoder&) (this=0x7fb19e0b4730, connection=..., decoder=<optimized out>) at DerivedSources/WebKit/WebPageMessageReceiver.cpp:292
#26 0x00007fb1bf1fec53 in WebKit::WebPage::didReceiveMessage(IPC::Connection&, IPC::Decoder&) (this=0x7fb19e0b4730, connection=..., decoder=...) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/WebProcess/WebPage/WebPage.cpp:5602
#27 0x00007fb1bee9773e in IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&, IPC::Decoder&) (this=<optimized out>, connection=..., decoder=...) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Platform/IPC/MessageReceiverMap.cpp:129
#28 0x00007fb1bf123843 in WebKit::WebProcess::didReceiveMessage(IPC::Connection&, IPC::Decoder&) (this=0x7fb19e02c180, connection=..., decoder=...) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/WebProcess/WebProcess.cpp:931
#29 0x00007fb1bee8f9e1 in IPC::Connection::dispatchMessage(IPC::Decoder&) (this=0x7fb19e0501a0, decoder=...) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Platform/IPC/Connection.cpp:1197
#30 0x00007fb1bee8fbb5 in IPC::Connection::dispatchMessage(std::unique_ptr<IPC::Decoder, std::default_delete<IPC::Decoder> >) (this=0x7fb19e0501a0, message=std::unique_ptr<IPC::Decoder> = {...}) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Platform/IPC/Connection.cpp:1245
#31 0x00007fb1bee8fe15 in IPC::Connection::dispatchOneIncomingMessage() (this=0x7fb19e0501a0) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Platform/IPC/Connection.cpp:1310
#32 0x00007fb1bda1010b in WTF::Function<void ()>::operator()() const (this=<optimized out>) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WTF/wtf/Function.h:82
#33 WTF::RunLoop::performWork() (this=0x7fb19e0100e0) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WTF/wtf/RunLoop.cpp:147
#34 0x00007fb1bda74d7d in WTF::RunLoop::RunLoop()::$_1::operator()(void*) const (userData=0x7fb19e008360, userData at entry=0x7fb19e0100e0, this=<optimized out>) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WTF/wtf/glib/RunLoopGLib.cpp:80
#35 WTF::RunLoop::RunLoop()::$_1::__invoke(void*) (userData=0x7fb19e008360) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WTF/wtf/glib/RunLoopGLib.cpp:79
#36 0x00007fb1bda74161 in WTF::RunLoop::$_0::operator()(_GSource*, int (*)(void*), void*) const (source=0x55c8b3469200, callback=0x7fb1bda74d70 <WTF::RunLoop::RunLoop()::$_1::__invoke(void*)>, userData=0x7fb19e0100e0, this=<optimized out>) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WTF/wtf/glib/RunLoopGLib.cpp:53
#37 WTF::RunLoop::$_0::__invoke(_GSource*, int (*)(void*), void*) (source=0x55c8b3469200, callback=0x7fb1bda74d70 <WTF::RunLoop::RunLoop()::$_1::__invoke(void*)>, userData=0x7fb19e0100e0) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WTF/wtf/glib/RunLoopGLib.cpp:45
#38 0x00007fb1ba676d49 in g_main_dispatch (context=<optimized out>) at ../glib/gmain.c:3460
#39 g_main_context_dispatch (context=<optimized out>) at ../glib/gmain.c:4200
#40 0x00007fb1ba6772a8 in g_main_context_iterate (context=0x55c8b342be60, block=block at entry=1, dispatch=dispatch at entry=1, self=<optimized out>) at ../glib/gmain.c:4276
#41 0x00007fb1ba67758f in g_main_loop_run (loop=0x55c8b344f250) at ../glib/gmain.c:4479
#42 0x00007fb1bda74746 in WTF::RunLoop::run() () at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WTF/wtf/glib/RunLoopGLib.cpp:108
#43 0x00007fb1bf237217 in WebKit::AuxiliaryProcessMainBase<WebKit::WebProcess, true>::run(int, char**) (this=0x7ffc5c766680, argc=3, argv=0x7ffc5c766818) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Shared/AuxiliaryProcessMain.h:71
#44 WebKit::AuxiliaryProcessMain<WebKit::WebProcessMainGtk>(int, char**) (argc=3, argv=0x7ffc5c766818) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Shared/AuxiliaryProcessMain.h:97
#45 0x00007fb1be02954a in __libc_start_call_main (main=main at entry=0x55c8b2c13150 <main>, argc=argc at entry=3, argv=argv at entry=0x7ffc5c766818) at ../sysdeps/nptl/libc_start_call_main.h:58
#46 0x00007fb1be02960b in __libc_start_main_impl (main=0x55c8b2c13150 <main>, argc=3, argv=0x7ffc5c766818, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=<optimized out>) at ../csu/libc-start.c:389
#47 0x000055c8b2c13085 in _start ()

I will attach a backtrace showing all threads. Possibly-relevant: thread 29 is blocked inside  WebCore::TextureMapperShaderProgram::create and thread 36 is blocked inside gst_gl_context_egl_create_context.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20230403/b6370694/attachment-0001.htm>


More information about the webkit-unassigned mailing list