Bug 199444 - [GTK] fast/events/context-activated-by-key-event.html is crashing
Summary: [GTK] fast/events/context-activated-by-key-event.html is crashing
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKitGTK (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Lauro Moura
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-07-03 07:30 PDT by Alicia Boya García
Modified: 2020-07-17 16:41 PDT (History)
6 users (show)

See Also:


Attachments
Patch with platform guard (1.72 KB, patch)
2020-07-16 17:52 PDT, Lauro Moura
no flags Details | Formatted Diff | Diff
Patch removing assert (2.94 KB, patch)
2020-07-17 15:19 PDT, Lauro Moura
no flags 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 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]
Comment 1 Carlos Garcia Campos 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?
Comment 2 Michael Catanzaro 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?
Comment 3 Carlos Garcia Campos 2019-07-17 08:55:37 PDT
I think only GTK port supports context menu triggered by keyboard event.
Comment 4 Alicia Boya García 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?
Comment 5 Lauro Moura 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.
Comment 6 Michael Catanzaro 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.
Comment 7 Lauro Moura 2020-07-17 15:19:40 PDT
Created attachment 404604 [details]
Patch removing assert
Comment 8 EWS 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].