Bug 282409
| Summary: | REGRESSION(285310@main): [GTK] Cannot open links on various websites | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Michael Catanzaro <mcatanzaro> |
| Component: | WebKitGTK | Assignee: | Carlos Garcia Campos <cgarcia> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | bugs-noreply, cgarcia, jmason, mcatanzaro |
| Priority: | P2 | ||
| Version: | Other | ||
| Hardware: | PC | ||
| OS: | Linux | ||
Michael Catanzaro
Using Epiphany with WebKitGTK 2.47.1, visit: https://www.reddit.com/r/news/comments/1ggpaiu/rapper_young_thug_accepts_plea_deal_in_georgia/
Click on the "abcnews.go.com" link (which actually goes to https://abcnews.go.com/US/rapper-young-thug-accepts-plea-deal-georgia-rico/story?id=115370318), underneath the image
Observe that Epiphany opens an empty tab instead of loading the page as expected.
It works fine if you right click the link and select Open Link in New Tab.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Michael Catanzaro
(Interestingly, attempting to close the Blank Page causes the Epiphany UI process to crash, but that's surely a separate bug.)
Michael Catanzaro
This UI process crash occurs if the Blank Page is closed *after* its opener page. Epiphany assumes that the opener view is not destroyed before the new view is ready to show. Arguably this is an error, because the user might have a superhuman reaction time, but realistically I'd say this is WebKit's fault for emitting ready-to-show late.
(gdb) bt
#0 0x00007fc0fb0dd1f5 in gtk_widget_get_root (widget=widget@entry=0x556e5ab888c0) at ../gtk/gtkwidget.c:6205
#1 0x00007fc0fbdc9608 in web_view_ready_cb (web_view=0x556e5bc25390 [EphyWebView], parent_web_view=0x556e5ab888c0) at ../src/ephy-window.c:1940
#6 0x00007fc0fbab51b3 in <emit signal 'ready-to-show' on instance 0x556e5bc25390 [EphyWebView]>
(instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../gobject/gsignal.c:3582
#2 0x00007fc0fba9799a in g_closure_invoke
(closure=0x556e5ba04d80, return_value=0x0, n_param_values=1, param_values=0x7ffe9c74c950, invocation_hint=0x7ffe9c74c8a0) at ../gobject/gclosure.c:833
#3 0x00007fc0fbaad5c3 in signal_emit_unlocked_R
(node=node@entry=0x7ffe9c74ca10, detail=detail@entry=0, instance=instance@entry=0x556e5bc25390, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffe9c74c950) at ../gobject/gsignal.c:3887
#4 0x00007fc0fbaaf071 in signal_emit_valist_unlocked
(instance=instance@entry=0x556e5bc25390, signal_id=signal_id@entry=277, detail=detail@entry=0, var_args=var_args@entry=0x7ffe9c74cb80)
at ../gobject/gsignal.c:3519
#5 0x00007fc0fbab50f1 in g_signal_emit_valist (instance=0x556e5bc25390, signal_id=277, detail=0, var_args=0x7ffe9c74cb80) at ../gobject/gsignal.c:3262
#7 0x00007fc0f61f652b in IPC::callMemberFunction<WebKit::WebPageProxy, WebKit::WebPageProxy, void (), std::tuple<> >(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(), std::tuple<>&&)::{lambda((auto:1&&)...)#1}::operator()<>() const (this=<optimized out>)
at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Platform/IPC/HandleMessage.h:133
#8 std::__invoke_impl<void, IPC::callMemberFunction<WebKit::WebPageProxy, WebKit::WebPageProxy, void (), std::tuple<> >(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(), std::tuple<>&&)::{lambda((auto:1&&)...)#1}>(std::__invoke_other, IPC::callMemberFunction<WebKit::WebPageProxy, WebKit::WebPageProxy, void (), std::tuple<> >(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(), std::tuple<>&&)::{lambda((auto:1&&)...)#1}&&) (__f=<optimized out>)
at /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/14.2.0/../../../../include/c++/14.2.0/bits/invoke.h:61
#9 std::__invoke<IPC::callMemberFunction<WebKit::WebPageProxy, WebKit::WebPageProxy, void (), std::tuple<> >(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(), std::tuple<>&&)::{lambda((auto:1&&)...)#1}>(IPC::callMemberFunction<WebKit::WebPageProxy, WebKit::WebPageProxy, void (), std::tuple<> >(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(), std::tuple<>&&)::{lambda((auto:1&&)...)#1}&&) (__fn=<optimized out>)
at /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/14.2.0/../../../../include/c++/14.2.0/bits/invoke.h:96
#10 _ZSt12__apply_implIZN3IPC18callMemberFunctionIN6WebKit12WebPageProxyES3_FvvESt5tupleIJEEEEvPT_MT0_T1_OT2_EUlDpOT_E_S6_TpTnmJEEDcOS7_OS9_St16integer_sequenceImJXspT1_EEE (__f=<optimized out>, __t=<optimized out>) at /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/14.2.0/../../../../include/c++/14.2.0/tuple:2921
#11 _ZSt5applyIZN3IPC18callMemberFunctionIN6WebKit12WebPageProxyES3_FvvESt5tupleIJEEEEvPT_MT0_T1_OT2_EUlDpOT_E_TkSt12__tuple_likeS6_EDcOS7_OS9_
(__f=<optimized out>, __t=<optimized out>) at /usr/bin/../lib/gcc/x86_64-unknown-linux-gnu/14.2.0/../../../../include/c++/14.2.0/tuple:2936
#12 IPC::callMemberFunction<WebKit::WebPageProxy, WebKit::WebPageProxy, void (), std::tuple<> >(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(), std::tuple<>&&) (object=0x7fc0e1b4c680, function=<optimized out>, tuple=<optimized out>)
at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Platform/IPC/HandleMessage.h:131
#13 IPC::handleMessage<Messages::WebPageProxy::ShowPage, IPC::Connection, WebKit::WebPageProxy, WebKit::WebPageProxy, void()>
(connection=..., decoder=..., object=0x7fc0e1b4c680, function=<optimized out>)
at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Platform/IPC/HandleMessage.h:233
#14 WebKit::WebPageProxy::didReceiveMessage (this=0x7fc0e1b4c680, connection=..., decoder=...)
at /buildstream/gnome/sdk/webkitgtk-6.0.bst/_builddir/DerivedSources/WebKit/WebPageProxyMessageReceiver.cpp:326
#15 0x00007fc0f6620321 in IPC::MessageReceiverMap::dispatchMessage (this=<optimized out>, connection=..., decoder=...)
at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Platform/IPC/MessageReceiverMap.cpp:129
#16 0x00007fc0f673251c in WebKit::WebProcessProxy::dispatchMessage (this=0x556e5ab888c0, connection=..., decoder=...)
at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/UIProcess/WebProcessProxy.cpp:1239
#17 0x00007fc0f6225cea in WebKit::WebProcessProxy::didReceiveMessage (this=0x556e5ab888c0, connection=..., decoder=...)
at /buildstream/gnome/sdk/webkitgtk-6.0.bst/_builddir/DerivedSources/WebKit/WebProcessProxyMessageReceiver.cpp:194
#18 0x00007fc0f6619c26 in IPC::Connection::dispatchMessage (this=0x7fc0e1032560, message=...)
at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Platform/IPC/Connection.cpp:1434
#19 0x00007fc0f661a139 in IPC::Connection::dispatchIncomingMessages (this=0x7fc0e1032560)
at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WebKit/Platform/IPC/Connection.cpp:1550
#20 0x00007fc0f54380bb in WTF::Function<void()>::operator() (this=<optimized out>) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WTF/wtf/Function.h:82
#21 WTF::RunLoop::performWork (this=0x7fc0e10180e0) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WTF/wtf/RunLoop.cpp:147
#22 0x00007fc0f54d8fed in WTF::RunLoop::RunLoop()::$_0::operator()(void*) const (userData=0x556e5ab888c0,
userData@entry=0x7fc0e10180e0, this=<optimized out>) at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WTF/wtf/glib/RunLoopGLib.cpp:80
#23 WTF::RunLoop::RunLoop()::$_0::__invoke(void*) (userData=0x556e5ab888c0)
at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WTF/wtf/glib/RunLoopGLib.cpp:79
#24 0x00007fc0f54d8071 in WTF::RunLoop::$_0::operator()
(source=0x556e59867e00, callback=0x7fc0f54d8fe0 <WTF::RunLoop::RunLoop()::$_0::__invoke(void*)>, userData=0x7fc0e10180e0, this=<optimized out>)
at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WTF/wtf/glib/RunLoopGLib.cpp:53
#25 WTF::RunLoop::$_0::__invoke (source=0x556e59867e00, callback=0x7fc0f54d8fe0 <WTF::RunLoop::RunLoop()::$_0::__invoke(void*)>, userData=0x7fc0e10180e0)
at /buildstream/gnome/sdk/webkitgtk-6.0.bst/Source/WTF/wtf/glib/RunLoopGLib.cpp:45
#26 0x00007fc0fb985477 in g_main_dispatch (context=context@entry=0x556e5982d680) at ../glib/gmain.c:3361
#27 0x00007fc0fb987787 in g_main_context_dispatch_unlocked (context=0x556e5982d680) at ../glib/gmain.c:4212
#28 g_main_context_iterate_unlocked (context=context@entry=0x556e5982d680, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
at ../glib/gmain.c:4277
#29 0x00007fc0fb987f73 in g_main_context_iteration (context=context@entry=0x556e5982d680, may_block=may_block@entry=1) at ../glib/gmain.c:4342
#30 0x00007fc0fbbe1105 in g_application_run (application=0x556e5986f6b0 [EphyShell], argc=<optimized out>, argv=<optimized out>)
at ../gio/gapplication.c:2715
#31 0x0000556e35fb303c in main (argc=<optimized out>, argv=<optimized out>) at ../src/ephy-main.c:445
Carlos Garcia Campos
I guess related pages are broken, probably after a site isolation related commit.
Carlos Garcia Campos
Maybe related https://bugs.webkit.org/show_bug.cgi?id=281747
Jim Mason
FYI, the issue appeared for me between
285143@main (working)
and
285821@main (broken)
Jim Mason
(In reply to Carlos Garcia Campos from comment #4)
> Maybe related https://bugs.webkit.org/show_bug.cgi?id=281747
Confirmed. Reverting 285310@main cleared this issue for me.
Carlos Garcia Campos
Pull request: https://github.com/WebKit/WebKit/pull/36316
EWS
Committed 286275@main (c4caec74bda9): <https://commits.webkit.org/286275@main>
Reviewed commits have been landed. Closing PR #36316 and removing active labels.