Bug 211957 - [GTK] "ASSERTION FAILED: !m_adoptionIsRequired" when double clicking on a word
Summary: [GTK] "ASSERTION FAILED: !m_adoptionIsRequired" when double clicking on a word
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKitGTK (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
: 212070 (view as bug list)
Depends on:
Blocks:
 
Reported: 2020-05-15 07:51 PDT by Alicia Boya García
Modified: 2020-05-19 12:36 PDT (History)
7 users (show)

See Also:


Attachments
Patch (48.99 KB, patch)
2020-05-17 05:14 PDT, Carlos Garcia Campos
aperez: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Alicia Boya García 2020-05-15 07:51:11 PDT
How to reproduce:

1. Open a .txt file in the minibrowser.
2. Double click on a word.

ASSERTION FAILED: !m_adoptionIsRequired

#0  WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:303
#1  0x00007fefb67ef1b8 in CRASH_WITH_INFO(...) () at DerivedSources/ForwardingHeaders/wtf/Assertions.h:713
#2  0x00007fefb68000c7 in WTF::RefCountedBase::ref (this=0x7ffc7f2a1120) at DerivedSources/ForwardingHeaders/wtf/RefCounted.h:47
#3  0x00007fefb72ce403 in WTF::Ref<WebCore::SelectionData, WTF::DumbPtrTraits<WebCore::SelectionData> >::Ref (this=0x7ffc7f2a10e8, object=...) at DerivedSources/ForwardingHeaders/wtf/Ref.h:67
#4  0x00007fefb72cc115 in WebKit::WebSelectionData::WebSelectionData (this=0x7ffc7f2a10e8, data=...) at ../../Source/WebKit/Shared/gtk/WebSelectionData.cpp:35
#5  0x00007fefb7acae59 in WebKit::WebPlatformStrategies::writeToClipboard (this=0x7fefc1d2f3a0 <WebKit::WebPlatformStrategies::initialize()::platformStrategies>, pasteboardName="PRIMARY", selectionData=...)
    at ../../Source/WebKit/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:328
#6  0x00007fefb9fdc7b7 in WebCore::Pasteboard::write (this=0x7fef9fd23888, pasteboardContent=...) at ../../Source/WebCore/platform/gtk/PasteboardGtk.cpp:190
#7  0x00007fefb7af88d4 in WebKit::WebEditorClient::updateGlobalSelection (this=0x7fef9fdf5288, frame=0x7fef9fd82000) at ../../Source/WebKit/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:148
#8  0x00007fefb7abe720 in WebKit::WebEditorClient::respondToChangedSelection (this=0x7fef9fdf5288, frame=0x7fef9fd82000) at ../../Source/WebKit/WebProcess/WebCoreSupport/WebEditorClient.cpp:245
#9  0x00007fefb9497d07 in WebCore::Editor::respondToChangedSelection (this=0x7fef9fd69580, options=...) at ../../Source/WebCore/editing/Editor.cpp:3649
#10 0x00007fefb94a3d34 in WebCore::FrameSelection::setSelectionWithoutUpdatingAppearance (this=0x7fef9fd68130, newSelectionPossiblyWithoutDirection=..., options=..., align=WebCore::FrameSelection::AlignCursorOnScrollIfNeeded, 
    granularity=WebCore::WordGranularity) at ../../Source/WebCore/editing/FrameSelection.cpp:397
#11 0x00007fefb94a3e0d in WebCore::FrameSelection::setSelection (this=0x7fef9fd68130, selection=..., options=..., intent=..., align=WebCore::FrameSelection::AlignCursorOnScrollIfNeeded, granularity=WebCore::WordGranularity)
    at ../../Source/WebCore/editing/FrameSelection.cpp:408
#12 0x00007fefb94a3749 in WebCore::FrameSelection::setSelectionByMouseIfDifferent (this=0x7fef9fd68130, passedNewSelection=..., granularity=WebCore::WordGranularity, 
    endpointsAdjustmentMode=WebCore::FrameSelection::EndPointsAdjustmentMode::DoNotAdjust) at ../../Source/WebCore/editing/FrameSelection.cpp:326
#13 0x00007fefb9bf0bdd in WebCore::EventHandler::updateSelectionForMouseDownDispatchingSelectStart (this=0x7fef9fd80000, targetNode=0x7fef9feba840, selection=..., granularity=WebCore::WordGranularity)
    at ../../Source/WebCore/page/EventHandler.cpp:549
#14 0x00007fefb9bf0d74 in WebCore::EventHandler::selectClosestWordFromHitTestResult (this=0x7fef9fd80000, result=..., appendTrailingWhitespace=WebCore::DontAppendTrailingWhitespace) at ../../Source/WebCore/page/EventHandler.cpp:569
#15 0x00007fefb9bf0e55 in WebCore::EventHandler::selectClosestWordFromMouseEvent (this=0x7fef9fd80000, result=...) at ../../Source/WebCore/page/EventHandler.cpp:581
#16 0x00007fefb9bf13df in WebCore::EventHandler::handleMousePressEventDoubleClick (this=0x7fef9fd80000, event=...) at ../../Source/WebCore/page/EventHandler.cpp:652
#17 0x00007fefb9bf252c in WebCore::EventHandler::handleMousePressEvent (this=0x7fef9fd80000, event=...) at ../../Source/WebCore/page/EventHandler.cpp:849
#18 0x00007fefb9bf624c in WebCore::EventHandler::handleMousePressEvent (this=0x7fef9fd80000, platformMouseEvent=...) at ../../Source/WebCore/page/EventHandler.cpp:1851
#19 0x00007fefba52e190 in WebCore::UserInputBridge::handleMousePressEvent (this=0x7fef9fdff660, mouseEvent=...) at ../../Source/WebCore/replay/UserInputBridge.cpp:57
#20 0x00007fefb7b15a7b in WebKit::handleMouseEvent (mouseEvent=..., page=0x7fef50cf6000) at ../../Source/WebKit/WebProcess/WebPage/WebPage.cpp:2713
#21 0x00007fefb7b15d19 in WebKit::WebPage::mouseEvent (this=0x7fef50cf6000, mouseEvent=...) at ../../Source/WebKit/WebProcess/WebPage/WebPage.cpp:2780
#22 0x00007fefb6d9923c in IPC::callMemberFunctionImpl<WebKit::WebPage, void (WebKit::WebPage::*)(WebKit::WebMouseEvent const&), std::tuple<WebKit::WebMouseEvent>, 0ul> (object=0x7fef50cf6000, function=
    (void (WebKit::WebPage::*)(WebKit::WebPage * const, const WebKit::WebMouseEvent &)) 0x7fefb7b15b60 <WebKit::WebPage::mouseEvent(WebKit::WebMouseEvent const&)>, args=...) at ../../Source/WebKit/Platform/IPC/HandleMessage.h:41
#23 0x00007fefb6d91204 in IPC::callMemberFunction<WebKit::WebPage, void (WebKit::WebPage::*)(WebKit::WebMouseEvent const&), std::tuple<WebKit::WebMouseEvent>, std::integer_sequence<unsigned long, 0ul> > (args=..., object=0x7fef50cf6000, 
    function=(void (WebKit::WebPage::*)(WebKit::WebPage * const, const WebKit::WebMouseEvent &)) 0x7fefb7b15b60 <WebKit::WebPage::mouseEvent(WebKit::WebMouseEvent const&)>) at ../../Source/WebKit/Platform/IPC/HandleMessage.h:47
#24 0x00007fefb6d85db4 in IPC::handleMessage<Messages::WebPage::MouseEvent, WebKit::WebPage, void (WebKit::WebPage::*)(WebKit::WebMouseEvent const&)> (decoder=..., object=0x7fef50cf6000, function=
    (void (WebKit::WebPage::*)(WebKit::WebPage * const, const WebKit::WebMouseEvent &)) 0x7fefb7b15b60 <WebKit::WebPage::mouseEvent(WebKit::WebMouseEvent const&)>) at ../../Source/WebKit/Platform/IPC/HandleMessage.h:114
#25 0x00007fefb6d7ec3e in WebKit::WebPage::didReceiveWebPageMessage (this=0x7fef50cf6000, connection=..., decoder=...) at DerivedSources/WebKit/WebPageMessageReceiver.cpp:1062
#26 0x00007fefb7b1bb33 in WebKit::WebPage::didReceiveMessage (this=0x7fef50cf6000, connection=..., decoder=...) at ../../Source/WebKit/WebProcess/WebPage/WebPage.cpp:4594
#27 0x00007fefb71adfe9 in IPC::MessageReceiverMap::dispatchMessage (this=0x7fef9fdf3070, connection=..., decoder=...) at ../../Source/WebKit/Platform/IPC/MessageReceiverMap.cpp:123
#28 0x00007fefb77b7167 in WebKit::WebProcess::didReceiveMessage (this=0x7fef9fdf3000, connection=..., decoder=...) at ../../Source/WebKit/WebProcess/WebProcess.cpp:757
#29 0x00007fefb719094d in IPC::Connection::dispatchMessage (this=0x7fef9fde5000, decoder=...) at ../../Source/WebKit/Platform/IPC/Connection.cpp:996
#30 0x00007fefb7190f66 in IPC::Connection::dispatchMessage (this=0x7fef9fde5000, message=std::unique_ptr<IPC::Decoder> = {...}) at ../../Source/WebKit/Platform/IPC/Connection.cpp:1065
#31 0x00007fefb7191438 in IPC::Connection::dispatchOneIncomingMessage (this=0x7fef9fde5000) at ../../Source/WebKit/Platform/IPC/Connection.cpp:1134
#32 0x00007fefb71906c0 in IPC::Connection::<lambda()>::operator()(void) (__closure=0x7fef9fd3efe8) at ../../Source/WebKit/Platform/IPC/Connection.cpp:973
#33 0x00007fefb7196954 in WTF::Detail::CallableWrapper<IPC::Connection::enqueueIncomingMessage(std::unique_ptr<IPC::Decoder>)::<lambda()>, void>::call(void) (this=0x7fef9fd3efe0) at DerivedSources/ForwardingHeaders/wtf/Function.h:52
#34 0x00007fefb67f2557 in WTF::Function<void ()>::operator()() const (this=0x7ffc7f2a2db8) at DerivedSources/ForwardingHeaders/wtf/Function.h:84
#35 0x00007fefa8d7be8d in WTF::RunLoop::performWork (this=0x7fef9fdf8000) at ../../Source/WTF/wtf/RunLoop.cpp:119
#36 0x00007fefa8df8456 in WTF::RunLoop::<lambda(gpointer)>::operator()(gpointer) const (__closure=0x0, userData=0x7fef9fdf8000) at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:68
#37 0x00007fefa8df847a in WTF::RunLoop::<lambda(gpointer)>::_FUN(gpointer) () at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:70
#38 0x00007fefa8df8408 in WTF::<lambda(GSource*, GSourceFunc, gpointer)>::operator()(GSource *, GSourceFunc, gpointer) const (__closure=0x0, source=0x24c4640, callback=0x7fefa8df845d <WTF::RunLoop::<lambda(gpointer)>::_FUN(gpointer)>, 
    userData=0x7fef9fdf8000) at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:45
#39 0x00007fefa8df8438 in WTF::<lambda(GSource*, GSourceFunc, gpointer)>::_FUN(GSource *, GSourceFunc, gpointer) () at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:46
#40 0x00007fefa25b692f in g_main_dispatch () at ../../Source/glib-2.58.1/glib/gmain.c:3182
#41 g_main_context_dispatch () at ../../Source/glib-2.58.1/glib/gmain.c:3847
#42 0x00007fefa25b6cc0 in g_main_context_iterate () at ../../Source/glib-2.58.1/glib/gmain.c:3920
#43 0x00007fefa25b6fd3 in g_main_loop_run () at ../../Source/glib-2.58.1/glib/gmain.c:4116
#44 0x00007fefa8df8953 in WTF::RunLoop::run () at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:96
#45 0x00007fefb7b9f624 in WebKit::AuxiliaryProcessMain<WebKit::WebProcess, WebKit::WebProcessMainGtk> (argc=3, argv=0x7ffc7f2a3188) at ../../Source/WebKit/Shared/AuxiliaryProcessMain.h:68
#46 0x00007fefb7b9bdcb in WebKit::WebProcessMain (argc=3, argv=0x7ffc7f2a3188) at ../../Source/WebKit/WebProcess/gtk/WebProcessMainGtk.cpp:66
#47 0x0000000000400c55 in main (argc=3, argv=0x7ffc7f2a3188) at ../../Source/WebKit/WebProcess/EntryPoint/unix/WebProcessMain.cpp:45
Comment 1 Carlos Garcia Campos 2020-05-15 08:07:47 PDT
hmm, I guess we can't stack allocate SelectionData because it's ref counted. I'll fix it.
Comment 2 Carlos Garcia Campos 2020-05-17 05:14:19 PDT
Created attachment 399587 [details]
Patch
Comment 3 EWS Watchlist 2020-05-17 05:15:17 PDT
Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API
Comment 4 Carlos Garcia Campos 2020-05-18 01:37:46 PDT
Committed r261802: <https://trac.webkit.org/changeset/261802>
Comment 5 Adrian Perez 2020-05-19 12:36:25 PDT
*** Bug 212070 has been marked as a duplicate of this bug. ***