RESOLVED FIXED 199444
[GTK] fast/events/context-activated-by-key-event.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=199444
Summary [GTK] fast/events/context-activated-by-key-event.html is crashing
Alicia Boya García
Reported 2019-07-03 07:30:29 PDT
fast/events/context-activated-by-key-event.html is crashing in an assertion since long ago ASSERTION FAILED: isProcessingMouseEvents() ../../Source/WebKit/UIProcess/WebPageProxy.cpp(5981) : void WebKit::WebPageProxy::showContextMenu(WebKit::ContextMenuContextData&&, const WebKit::UserData&) 1 0x7f144a3e11e1 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(WTFCrash+0x9) [0x7f144a3e11e1] 2 0x7f145737f7bb /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebKit::WebPageProxy::showContextMenu(WebKit::ContextMenuContextData&&, WebKit::UserData const&)+0x73) [0x7f145737f7bb] 3 0x7f1456d593a7 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(void IPC::callMemberFunctionImpl<WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(WebKit::ContextMenuContextData&&, WebKit::UserData const&), std::tuple<WebKit::ContextMenuContextData, WebKit::UserData>, 0ul, 1ul>(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WebKit::ContextMenuContextData&&, WebKit::UserData const&), std::tuple<WebKit::ContextMenuContextData, WebKit::UserData>&&, std::integer_sequence<unsigned long, 0ul, 1ul>)+0x9c) [0x7f1456d593a7] 4 0x7f1456d48c17 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(void IPC::callMemberFunction<WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(WebKit::ContextMenuContextData&&, WebKit::UserData const&), std::tuple<WebKit::ContextMenuContextData, WebKit::UserData>, std::integer_sequence<unsigned long, 0ul, 1ul> >(std::tuple<WebKit::ContextMenuContextData, WebKit::UserData>&&, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WebKit::ContextMenuContextData&&, WebKit::UserData const&))+0x3b) [0x7f1456d48c17] 5 0x7f1456d39030 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(void IPC::handleMessage<Messages::WebPageProxy::ShowContextMenu, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(WebKit::ContextMenuContextData&&, WebKit::UserData const&)>(IPC::Decoder&, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WebKit::ContextMenuContextData&&, WebKit::UserData const&))+0xe9) [0x7f1456d39030] 6 0x7f1456d27efd /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebKit::WebPageProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&)+0x44b7) [0x7f1456d27efd] 7 0x7f14571e27fc /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&, IPC::Decoder&)+0x126) [0x7f14571e27fc] 8 0x7f14572e8b79 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebKit::AuxiliaryProcessProxy::dispatchMessage(IPC::Connection&, IPC::Decoder&)+0x2f) [0x7f14572e8b79] 9 0x7f145741ddf9 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&)+0x2b) [0x7f145741ddf9] 10 0x7f14571c0aed /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::Connection::dispatchMessage(IPC::Decoder&)+0x183) [0x7f14571c0aed] 11 0x7f14571c0c68 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::Connection::dispatchMessage(std::unique_ptr<IPC::Decoder, std::default_delete<IPC::Decoder> >)+0x178) [0x7f14571c0c68] 12 0x7f14571bc7c9 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::Connection::SyncMessageState::dispatchMessages(IPC::Connection*)+0x16b) [0x7f14571bc7c9] 13 0x7f14571c05c6 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::Connection::dispatchSyncMessage(IPC::Decoder&)+0x22a) [0x7f14571c05c6] 14 0x7f14571c0c48 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::Connection::dispatchMessage(std::unique_ptr<IPC::Decoder, std::default_delete<IPC::Decoder> >)+0x158) [0x7f14571c0c48] 15 0x7f14571bc7c9 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::Connection::SyncMessageState::dispatchMessages(IPC::Connection*)+0x16b) [0x7f14571bc7c9] 16 0x7f14571be978 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::Connection::waitForSyncReply(unsigned long, WTF::Seconds, WTF::OptionSet<IPC::SendSyncOption>)+0xae) [0x7f14571be978] 17 0x7f14571be7e4 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::Connection::sendSyncMessage(unsigned long, std::unique_ptr<IPC::Encoder, std::default_delete<IPC::Encoder> >, WTF::Seconds, WTF::OptionSet<IPC::SendSyncOption>)+0x1ca) [0x7f14571be7e4] 18 0x7f14571bdbdc /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::Connection::sendMessage(std::unique_ptr<IPC::Encoder, std::default_delete<IPC::Encoder> >, WTF::OptionSet<IPC::SendOption>)+0x24a) [0x7f14571bdbdc] 19 0x7f14572e8a0f /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebKit::AuxiliaryProcessProxy::sendMessage(std::unique_ptr<IPC::Encoder, std::default_delete<IPC::Encoder> >, WTF::OptionSet<IPC::SendOption>)+0xc1) [0x7f14572e8a0f] 20 0x7f14573d2a4c /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(bool WebKit::AuxiliaryProcessProxy::send<Messages::WebPage::ContextMenuForKeyEvent>(Messages::WebPage::ContextMenuForKeyEvent&&, unsigned long, WTF::OptionSet<IPC::SendOption>)+0xa4) [0x7f14573d2a4c] 21 0x7f14573bb2c2 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(bool WebKit::AuxiliaryProcessProxy::send<Messages::WebPage::ContextMenuForKeyEvent, WebCore::PageIdentifierType>(Messages::WebPage::ContextMenuForKeyEvent&&, WTF::ObjectIdentifier<WebCore::PageIdentifierType>, WTF::OptionSet<IPC::SendOption>)+0x4a) [0x7f14573bb2c2] 22 0x7f145737ff08 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebKit::WebPageProxy::handleContextMenuKeyEvent()+0x52) [0x7f145737ff08] 23 0x7f14575b28a9 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0xac1a8a9) [0x7f14575b28a9] 24 0x7f144c357a46 /home/slave/webkitgtk/gtk-linux-64-debug-tests/build/WebKitBuild/DependenciesGTK/Root/lib/libgtk-3.so.0(+0x227a46) [0x7f144c357a46] 25 0x7f144bdbad3d /home/slave/webkitgtk/gtk-linux-64-debug-tests/build/WebKitBuild/DependenciesGTK/Root/lib/libgobject-2.0.so.0(g_closure_invoke+0x19d) [0x7f144bdbad3d] 26 0x7f144bdcd58d /home/slave/webkitgtk/gtk-linux-64-debug-tests/build/WebKitBuild/DependenciesGTK/Root/lib/libgobject-2.0.so.0(+0x2258d) [0x7f144bdcd58d] 27 0x7f144bdd5da1 /home/slave/webkitgtk/gtk-linux-64-debug-tests/build/WebKitBuild/DependenciesGTK/Root/lib/libgobject-2.0.so.0(g_signal_emitv+0x281) [0x7f144bdd5da1] 28 0x7f144c247e4a /home/slave/webkitgtk/gtk-linux-64-debug-tests/build/WebKitBuild/DependenciesGTK/Root/lib/libgtk-3.so.0(+0x117e4a) [0x7f144c247e4a] 29 0x7f144c2482e8 /home/slave/webkitgtk/gtk-linux-64-debug-tests/build/WebKitBuild/DependenciesGTK/Root/lib/libgtk-3.so.0(+0x1182e8) [0x7f144c2482e8] 30 0x7f144c248450 /home/slave/webkitgtk/gtk-linux-64-debug-tests/build/WebKitBuild/DependenciesGTK/Root/lib/libgtk-3.so.0(+0x118450) [0x7f144c248450] 31 0x7f144c249572 /home/slave/webkitgtk/gtk-linux-64-debug-tests/build/WebKitBuild/DependenciesGTK/Root/lib/libgtk-3.so.0(gtk_bindings_activate_event+0x92) [0x7f144c249572]
Attachments
Patch with platform guard (1.72 KB, patch)
2020-07-16 17:52 PDT, Lauro Moura
no flags
Patch removing assert (2.94 KB, patch)
2020-07-17 15:19 PDT, Lauro Moura
no flags
Carlos Garcia Campos
Comment 1 2019-07-17 04:53:42 PDT
This regressed in r239686, the assert assumes context menu is always triggered by a mouse event, which is not true for all ports. I'm not sure whether it's worth adding a member m_processingContextMenuForKeyboardEvent or something like that just for this assert. I would just remove the assert or guard it inside !PLATFORM(GTK). What do you think Brian?
Michael Catanzaro
Comment 2 2019-07-17 08:25:32 PDT
(In reply to Carlos Garcia Campos from comment #1) > I would just remove the assert or guard it inside !PLATFORM(GTK). PLATFORM(GTK) isn't appropriate here... you can use PLATFORM(COCOA) if Cocoa ports don't allow opening a context menu without the mouse, but it looks like no assert at all would probably be best?
Carlos Garcia Campos
Comment 3 2019-07-17 08:55:37 PDT
I think only GTK port supports context menu triggered by keyboard event.
Alicia Boya García
Comment 4 2019-07-17 10:33:30 PDT
(In reply to Carlos Garcia Campos from comment #3) > I think only GTK port supports context menu triggered by keyboard event. I don't know if this is already covered, but opening context menu with a key is also commonplace in Windows. Would that affect the WinCairo port for instance?
Lauro Moura
Comment 5 2020-07-16 17:52:54 PDT
Created attachment 404505 [details] Patch with platform guard Patch with the platform guard to revive the discussion. Regarding WinCairo, it is failing there since a long time ago.
Michael Catanzaro
Comment 6 2020-07-17 07:30:55 PDT
Comment on attachment 404505 [details] Patch with platform guard I think you can simply remove the assert and avoid the need for ifdefs here. It doesn't seem to be accomplishing anything: the following code doesn't look like it's going to do the wrong thing if we are not processing mouse events.
Lauro Moura
Comment 7 2020-07-17 15:19:40 PDT
Created attachment 404604 [details] Patch removing assert
EWS
Comment 8 2020-07-17 16:41:02 PDT
Committed r264555: <https://trac.webkit.org/changeset/264555> All reviewed patches have been landed. Closing bug and clearing flags on attachment 404604 [details].
Note You need to log in before you can comment on or make changes to this bug.