RESOLVED FIXED 289007
REGRESSION(262954@main): [GTK] Attempts access to disengaged optional with caret blinking disabled
https://bugs.webkit.org/show_bug.cgi?id=289007
Summary REGRESSION(262954@main): [GTK] Attempts access to disengaged optional with ca...
Adrian Perez
Reported 2025-03-03 14:53:49 PST
After enabling C++ library assertions (bug #266396), configuring the system to disable caret blinking (in the GNOME Control Center, for example), will hit this when tabbing in-out and back into a text field: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/optional:475: _Tp &std::_Optional_base_impl<WTF::Seconds, std::_Optional_base<WTF::Seconds>>::_M_get() [_Tp = WTF::Seconds, _Dp = std::_Optional_base<WTF::Seconds>]: Assertion 'this->_M_is_engaged()' failed. The backtrace is: (gdb) bt #0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44 #1 0x00007d5da80a56d3 in __pthread_kill_internal (threadid=<optimized out>, signo=6) at pthread_kill.c:89 #2 0x00007d5da804bba0 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #3 0x00007d5da8033582 in __GI_abort () at abort.c:73 #4 0x00007d5da30d3f70 in std::__glibcxx_assert_fail (file=<optimized out>, line=<optimized out>, function=<optimized out>, condition=<optimized out>) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/assert_fail.cc:41 #5 0x00007d5dabfa0f9f in std::_Optional_base_impl<WTF::Seconds, std::_Optional_base<WTF::Seconds, true, true> >::_M_get (this=<optimized out>) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/optional:475 #6 std::optional<WTF::Seconds>::operator*() & (this=<optimized out>) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/optional:972 #7 WebCore::SimpleCaretAnimator::updateAnimationProperties (this=0x7d5d820ccf00) at /usr/src/debug/webkitgtk-6.0-devel/webkitgtk-2.47.90/Source/WebCore/platform/SimpleCaretAnimator.cpp:62 #8 0x00007d5dabeaa67d in WTF::Function<void(WebCore::Document&)>::operator() (this=0x7ffdb6b52b80, in=...) at WTF/Headers/wtf/Function.h:82 #9 WebCore::Page::forEachRenderableDocument (this=<optimized out>, functor=...) at /usr/src/debug/webkitgtk-6.0-devel/webkitgtk-2.47.90/Source/WebCore/page/Page.cpp:4400 #10 0x00007d5dabea929c in WebCore::Page::updateRendering()::$_0::operator()(WebCore::RenderingUpdateStep, WTF::Function<void (WebCore::Document&)> const&) const (step=WebCore::RenderingUpdateStep::CaretAnimation, perDocumentFunction=..., this=<optimized out>) at /usr/src/debug/webkitgtk-6.0-devel/webkitgtk-2.47.90/Source/WebCore/page/Page.cpp:2108 #11 WebCore::Page::updateRendering (this=0x7d5d8d001800) at /usr/src/debug/webkitgtk-6.0-devel/webkitgtk-2.47.90/Source/WebCore/page/Page.cpp:2176 #12 0x00007d5daa04e2c3 in WebKit::WebPage::updateRendering (this=0x7d5d8d001200) at /usr/src/debug/webkitgtk-6.0-devel/webkitgtk-2.47.90/Source/WebKit/WebProcess/WebPage/WebPage.cpp:5040 #13 WebKit::LayerTreeHost::flushLayers (this=0x7d5d820a82a0) at /usr/src/debug/webkitgtk-6.0-devel/webkitgtk-2.47.90/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:184 #14 0x00007d5daa0501e6 in WebKit::LayerTreeHost::layerFlushTimerFired (this=0x7d5d820a82a0) at /usr/src/debug/webkitgtk-6.0-devel/webkitgtk-2.47.90/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:255 #15 0x00007d5daa0535d0 in WTF::RunLoop::Timer::Timer<WebKit::LayerTreeHost>(WTF::Ref<WTF::RunLoop, WTF::RawPtrTraits<WTF::RunLoop>, WTF::DefaultRefDerefTraits<WTF::RunLoop> >&&, WebKit::LayerTreeHost*, void (WebKit::LayerTreeHost::*)()) requires WTF::HasCheckedPtrMemberFunctions<WebKit::LayerTreeHost>::value&&(!WTF::HasRefPtrMemberFunctions<WebKit::LayerTreeHost>::value)::{lambda()#1}::operator()() const (this=<optimized out>) at WTF/Headers/wtf/RunLoop.h:200 #16 WTF::Detail::CallableWrapper<WTF::RunLoop::Timer::Timer<WebKit::LayerTreeHost>(WTF::Ref<WTF::RunLoop, WTF::RawPtrTraits<WTF::RunLoop>, WTF::DefaultRefDerefTraits<WTF::RunLoop> >&&, WebKit::LayerTreeHost*, void (WebKit::LayerTreeHost::*)()) requires WTF::HasCheckedPtrMemberFunctions<WebKit::LayerTreeHost>::value&&(!WTF::HasRefPtrMemberFunctions<WebKit::LayerTreeHost>::value)::{lambda()#1}, void>::call() (this=<optimized out>) at WTF/Headers/wtf/Function.h:53 #17 0x00007d5da7cbeec3 in WTF::RunLoop::TimerBase::TimerBase(WTF::Ref<WTF::RunLoop, WTF::RawPtrTraits<WTF::RunLoop>, WTF::DefaultRefDerefTraits<WTF::RunLoop> >&&)::$_0::operator()(void*) const (userData=0x7d5d820a8320, this=<optimized out>) at /usr/src/debug/webkitgtk-6.0-devel/webkitgtk-2.47.90/Source/WTF/wtf/glib/RunLoopGLib.cpp:177 #18 WTF::RunLoop::TimerBase::TimerBase(WTF::Ref<WTF::RunLoop, WTF::RawPtrTraits<WTF::RunLoop>, WTF::DefaultRefDerefTraits<WTF::RunLoop> >&&)::$_0::__invoke(void*) (userData=0x7d5d820a8320) at /usr/src/debug/webkitgtk-6.0-devel/webkitgtk-2.47.90/Source/WTF/wtf/glib/RunLoopGLib.cpp:169 #19 0x00007d5da7cbd9f0 in WTF::RunLoop::$_0::operator() (source=0x6499227afda0, callback=0x7d5da7cbee30 <WTF::RunLoop::TimerBase::TimerBase(WTF::Ref<WTF::RunLoop, WTF::RawPtrTraits<WTF::RunLoop>, WTF::DefaultRefDerefTraits<WTF::RunLoop> >&&)::$_0::__invoke(void*)>, userData=0x7d5d820a8320, this=<optimized out>) at /usr/src/debug/webkitgtk-6.0-devel/webkitgtk-2.47.90/Source/WTF/wtf/glib/RunLoopGLib.cpp:53 #20 WTF::RunLoop::$_0::__invoke (source=0x6499227afda0, callback=0x7d5da7cbee30 <WTF::RunLoop::TimerBase::TimerBase(WTF::Ref<WTF::RunLoop, WTF::RawPtrTraits<WTF::RunLoop>, WTF::DefaultRefDerefTraits<WTF::RunLoop> >&&)::$_0::__invoke(void*)>, userData=0x7d5d820a8320) at /usr/src/debug/webkitgtk-6.0-devel/webkitgtk-2.47.90/Source/WTF/wtf/glib/RunLoopGLib.cpp:45 #21 0x00007d5da36de919 in g_main_dispatch (context=0x6499226bf610) at ../glib/glib/gmain.c:3357 #22 0x00007d5da37415d7 in g_main_context_dispatch_unlocked (context=0x6499226bf610) at ../glib/glib/gmain.c:4208 #23 g_main_context_iterate_unlocked.isra.0 (context=0x6499226bf610, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4273 #24 0x00007d5da36df647 in g_main_loop_run (loop=0x6499226b6050) at ../glib/glib/gmain.c:4475 #25 0x00007d5da7cbe4d2 in WTF::RunLoop::run () at /usr/src/debug/webkitgtk-6.0-devel/webkitgtk-2.47.90/Source/WTF/wtf/glib/RunLoopGLib.cpp:108 #26 0x00007d5daa0611dd in WebKit::AuxiliaryProcessMainBase<WebKit::WebProcess, true>::run (this=0x7ffdb6b52ea0, argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/webkitgtk-6.0-devel/webkitgtk-2.47.90/Source/WebKit/Shared/AuxiliaryProcessMain.h:77 #27 WebKit::AuxiliaryProcessMain<WebKit::WebProcessMainGtk> (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/webkitgtk-6.0-devel/webkitgtk-2.47.90/Source/WebKit/Shared/AuxiliaryProcessMain.h:103 #28 WebKit::WebProcessMain (argc=4, argv=<optimized out>) at /usr/src/debug/webkitgtk-6.0-devel/webkitgtk-2.47.90/Source/WebKit/WebProcess/gtk/WebProcessMainGtk.cpp:114 #29 0x00007d5da8035488 in __libc_start_call_main (main=main@entry=0x649913b98710 <main(int, char**)>, argc=argc@entry=4, argv=argv@entry=0x7ffdb6b53038) at ../sysdeps/nptl/libc_start_call_main.h:58 #30 0x00007d5da803554c in __libc_start_main_impl (main=0x649913b98710 <main(int, char**)>, argc=4, argv=0x7ffdb6b53038, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffdb6b53028) at ../csu/libc-start.c:360 #31 0x0000649913b98635 in _start () (gdb)
Attachments
Adrian Perez
Comment 1 2025-03-03 14:59:57 PST
EWS
Comment 2 2025-03-04 00:24:07 PST
Committed 291555@main (09ad2dad9a7a): <https://commits.webkit.org/291555@main> Reviewed commits have been landed. Closing PR #41808 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.