After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 784234 - Inspect Element causes WebKitWebProcess Segmentation fault
Inspect Element causes WebKitWebProcess Segmentation fault
Status: RESOLVED NOTGNOME
Product: epiphany
Classification: Core
Component: Interface
3.22.x (obsolete)
Other Linux
: Normal minor
: ---
Assigned To: Epiphany Maintainers
Epiphany Maintainers
Depends on:
Blocks:
 
 
Reported: 2017-06-27 03:00 UTC by Dan Jacobson
Modified: 2017-06-30 15:51 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Dan Jacobson 2017-06-27 03:00:56 UTC
No big deal, but:
User starts epiphany for the first time and sees
"Welcome to Web". This is poor English [BUG] and he wishes to copy and
paste it into a bug report.
He moves the cursor (pointer) over it and the cursor indeed changes into
an "I", but he cannot highlight and copy it [BUG!].
He also notices this window is called "Most Visited", but that only
shows up in the (icewm) window list, no where on the screen. [ODD!]
OK, in an effort to copy the poor English, he right clicks and picks
"Inspect Element", this time producing text he can indeed copy,
"Oops!
Something went wrong while displaying this page.

Please reload or visit a different page to continue."[Hmmm].
Comment 1 Michael Catanzaro 2017-06-27 06:14:08 UTC
(In reply to Dan Jacobson from comment #0)
> No big deal, but:
> User starts epiphany for the first time and sees
> "Welcome to Web". This is poor English [BUG] and he wishes to copy and
> paste it into a bug report.

I don't think it's bad English. The app is named "Web" and the welcome screen is there to welcome you to it.

On the other hand, it's certainly confusing if you're expecting it to be welcoming you to "the Web" rather than Web the app. I'm open to suggestions here.

> He moves the cursor (pointer) over it and the cursor indeed changes into
> an "I", but he cannot highlight and copy it [BUG!].

Load up ephy-resource:///org/gnome/epiphany/page-templates/about.css and look at this section:

.overview-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    margin-left: auto;
    margin-right: auto;
    height: 80%;
    max-width: 800px;
    opacity: 0.55; /* Adwaita's dim-label */
    -webkit-user-select: none;
    -webkit-user-drag: none;
}

It's caused by the use of -webkit-user-select: none. I don't remember why I decided the text should be unselectable, but it was intentional. It seems that other apps follow this pattern, at least the first one I checked: the Bluetooth dialog in control-center with no Bluetooth available. I can't drag the bluetooth image, and the text underneath the image is not selectable. My goal was to mimic a native GNOME empty state dialog, so I think that's probably right.

> He also notices this window is called "Most Visited", but that only
> shows up in the (icewm) window list, no where on the screen. [ODD!]

Good catch. It's by design that the title is not displayed in the window in this case, but certainly the window title should be something different than "Most Visited" when there is no history. That's a (minor) bug that we should fix.

> OK, in an effort to copy the poor English, he right clicks and picks
> "Inspect Element", this time producing text he can indeed copy,
> "Oops!
> Something went wrong while displaying this page.
> 
> Please reload or visit a different page to continue."[Hmmm].

And this is a serious bug. It indicates that the WebKit process displaying the content has crashed, which should never happen. Since I can't reproduce this either, we need a backtrace. But it's going to be harder to get than in your other bug, because you can't directly run the WebKit process. Normally I would tell you to get the backtrace out of coredumpctl, which is the greatest tool ever, but I know you won't have that enabled since you're using Debian. So instead, ensure you have only one Epiphany window with one tab open, then try attaching to the WebKitWebProcess with 'gdb -p'. Hit 'c' for "continue" and then you can reproduce the bug and get a backtrace that we can use. Once we have a backtrace, we'll be able to report that on WebKit Bugzilla.
Comment 2 Dan Jacobson 2017-06-27 12:39:58 UTC
Well all I know is here in Debian I do
$ epiphany
so it should say Welcome to Epiphany.
I suppose "Web" is some kind of Gnome thing but I don't think I'm using
(most of?) Gnome. All I know is I am using 'nodm' and 'icewm'.
I would have never guessed in 1000000 years that the
process/app/whatever is called "Web".
Hmmm,
$ ps
 8998 pts/0    00:00:01 epiphany
 9019 pts/0    00:00:00 WebKitNetworkPr
 9025 pts/0    00:00:00 WebKitWebProces
but that's as close as I get.

If the text is to be unselectable, then the pointer should stay as an
arrow, and not become an "I", misleading users...

OK on my other machine Inspect Element works fine, only producing

(epiphany:9480): Gtk-WARNING **: Allocating size to WebKitWebViewBase 0x562a1be282f0 without calling gtk_widget_get_preferred_width/height(). How does the code know the size to allocate?

So I will try it again soon on the bad machine and report back...
Comment 3 Michael Catanzaro 2017-06-27 13:28:13 UTC
(In reply to Dan Jacobson from comment #2)
> Well all I know is here in Debian I do
> $ epiphany
> so it should say Welcome to Epiphany.

To be clear, the user-visible name of this application is Web. "epiphany" is just a codename for developers and the name of the binary.

Of course, Debian could patch this if it wants, but I doubt it would want to.

> If the text is to be unselectable, then the pointer should stay as an
> arrow, and not become an "I", misleading users...

Good point. This is also a (minor) bug in WebKit. It would make sense to report this at the same time as reporting the more serious crash.

> OK on my other machine Inspect Element works fine, only producing
> 
> (epiphany:9480): Gtk-WARNING **: Allocating size to WebKitWebViewBase
> 0x562a1be282f0 without calling gtk_widget_get_preferred_width/height(). How
> does the code know the size to allocate?
> 
> So I will try it again soon on the bad machine and report back...

Thanks!

So to keep track, there are three bugs here:

 * Window title is "Most Visited" before anything has been visited (Epiphany bug)
 * Cursor should not change when hovering non-selectable element (WebKit bug)
 * Web process crash (WebKit bug)
Comment 4 Dan Jacobson 2017-06-29 03:30:34 UTC
1. I have now used your browser for a week and have got used to its two names. But new users will think it is poor English but I don't care anymore.

2. Please file a Window title is "Most Visited" before anything has been visited (Epiphany bug) if you understand the issue.

3. Please file a Cursor should not change when hovering non-selectable element (WebKit bug) if you understand the issue.

4. as for Web process crash (WebKit bug):
> Once we have a backtrace, we'll be able to report that on WebKit Bugzilla.

Browse a local file:///...

Right click "Inspect Element" on something.

I always get

"Oops!
Something went wrong while displaying this page.

Please reload or visit a different page to continue."

(By the way, big name browsers would add the error code name in the
message shown to the user here, "Error code: COMS_NOT_AUTHORIZED" etc.)

journalctl shows
 6月 29 10:10:10 jidanni3 kernel: WebKitWebProces[1753]: segfault at 1 ip b26aa430 sp bfd7e97c error 4 in libglib-2.0.so.0.5303.0[b2630000+12b000]


Hmmm, in fact doing Inspect Element on some empty part of the "Most
Visited" tab does the same:


$ epiphany&
[1] 2729
$ 
(WebKitWebProcess:2748): GLib-CRITICAL **: g_variant_new_string: assertion 'string != NULL' failed

(WebKitWebProcess:2748): GLib-CRITICAL **: g_variant_new_string: assertion 'string != NULL' failed

(WebKitWebProcess:2748): GLib-CRITICAL **: g_variant_new_string: assertion 'string != NULL' failed

(WebKitWebProcess:2748): GLib-CRITICAL **: g_variant_new_string: assertion 'string != NULL' failed
gdb -p `pidof WebKitWebProcess`
GNU gdb (Debian 8.0-1) 8.0...
Attaching to process 2748
[New LWP 2749]...
[New LWP 2769]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
0xb7769cf9 in __kernel_vsyscall ()
(gdb) c (And then I click Inspect Element.)
Continuing.
[Thread 0xa5a6db40 (LWP 2765) exited]
[New Thread 0xa5a6db40 (LWP 2797)]

Thread 1 "WebKitWebProces" received signal SIGSEGV, Segmentation fault.
0xb2718430 in g_utf8_validate () from /lib/i386-linux-gnu/libglib-2.0.so.0
(gdb) 
(WebKitWebProcess:2804): GLib-CRITICAL **: g_variant_new_string: assertion 'string != NULL' failed

(WebKitWebProcess:2804): GLib-CRITICAL **: g_variant_new_string: assertion 'string != NULL' failed

(WebKitWebProcess:2804): GLib-CRITICAL **: g_variant_new_string: assertion 'string != NULL' failed

(epiphany:2729): Gtk-WARNING **: Allocating size to WebKitWebViewBase 0x818f3400 without calling gtk_widget_get_preferred_width/height(). How does the code know the size to allocate?
bt
  • #0 g_utf8_validate
    from /lib/i386-linux-gnu/libglib-2.0.so.0
  • #1 g_variant_new_string
    from /lib/i386-linux-gnu/libglib-2.0.so.0
  • #2 ??
    from /lib/i386-linux-gnu/libglib-2.0.so.0
  • #3 ??
    from /lib/i386-linux-gnu/libglib-2.0.so.0
  • #4 ??
    from /lib/i386-linux-gnu/libglib-2.0.so.0
  • #5 g_variant_new_va
    from /lib/i386-linux-gnu/libglib-2.0.so.0
  • #6 g_variant_new
    from /lib/i386-linux-gnu/libglib-2.0.so.0
  • #7 Inspector::RemoteInspector::listingForInspectionTarget(Inspector::RemoteInspectionTarget const&) const
    from /usr/lib/i386-linux-gnu/libjavascriptcoregtk-4.0.so.18
  • #8 Inspector::RemoteInspector::listingForTarget(Inspector::RemoteControllableTarget const&) const
    from /usr/lib/i386-linux-gnu/libjavascriptcoregtk-4.0.so.18
  • #9 Inspector::RemoteInspector::updateTarget(Inspector::RemoteControllableTarget*)
    from /usr/lib/i386-linux-gnu/libjavascriptcoregtk-4.0.so.18
  • #10 Inspector::RemoteControllableTarget::update()
    from /usr/lib/i386-linux-gnu/libjavascriptcoregtk-4.0.so.18
  • #11 ??
    from /usr/lib/i386-linux-gnu/libwebkit2gtk-4.0.so.37
  • #26 ??
    from /usr/lib/i386-linux-gnu/libwebkit2gtk-4.0.so.37
  • #27 WTF::RunLoop::performWork()
    from /usr/lib/i386-linux-gnu/libjavascriptcoregtk-4.0.so.18
  • #28 ??
    from /usr/lib/i386-linux-gnu/libjavascriptcoregtk-4.0.so.18
  • #29 g_main_context_dispatch
    from /lib/i386-linux-gnu/libglib-2.0.so.0
  • #30 ??
    from /lib/i386-linux-gnu/libglib-2.0.so.0
  • #31 g_main_loop_run
    from /lib/i386-linux-gnu/libglib-2.0.so.0
  • #32 WTF::RunLoop::run()
    from /usr/lib/i386-linux-gnu/libjavascriptcoregtk-4.0.so.18
  • #33 ??
    from /usr/lib/i386-linux-gnu/libwebkit2gtk-4.0.so.37
  • #34 WebProcessMainUnix
    from /usr/lib/i386-linux-gnu/libwebkit2gtk-4.0.so.37
  • #35 main

Comment 5 André Klapper 2017-06-29 16:01:33 UTC
Thanks for taking the time to report this.
Unfortunately, that stack trace is missing some elements that will help a lot to solve the problem, so it will be hard for the developers to fix that crash. Can you get us a stack trace with debugging symbols? Please see https://wiki.gnome.org/Community/GettingInTouch/Bugzilla/GettingTraces for more information on how to do so and reopen this bug report. Thanks in advance!
Comment 6 Dan Jacobson 2017-06-29 23:02:09 UTC
Thread 1 "WebKitWebProces" received signal SIGSEGV, Segmentation fault.
g_utf8_validate (str=0x1 <error: Cannot access memory at address 0x1>, max_len=-1, end=0x0)
    at ../../../../glib/gutf8.c:1660
1660	../../../../glib/gutf8.c: No such file or directory.
(gdb) bt full
  • #0 g_utf8_validate
    at ../../../../glib/gutf8.c line 1660
  • #1 g_variant_new_string
    at ../../../../glib/gvariant.c line 1257
  • #2 g_variant_valist_new_nnp
    at ../../../../glib/gvariant.c line 4770
  • #3 g_variant_valist_new_leaf
    at ../../../../glib/gvariant.c line 4962
  • #4 g_variant_valist_new
    at ../../../../glib/gvariant.c line 5144
  • #5 g_variant_valist_new
    at ../../../../glib/gvariant.c line 5196
  • #6 g_variant_new_va
    at ../../../../glib/gvariant.c line 5372
  • #7 g_variant_new
  • #8 Inspector::RemoteInspector::listingForInspectionTarget(Inspector::RemoteInspectionTarget const&) const
    from /usr/lib/i386-linux-gnu/libjavascriptcoregtk-4.0.so.18
  • #9 Inspector::RemoteInspector::listingForTarget(Inspector::RemoteControllableTarget const&) const
    from /usr/lib/i386-linux-gnu/libjavascriptcoregtk-4.0.so.18
  • #10 Inspector::RemoteInspector::updateTarget(Inspector::RemoteControllableTarget*)
    from /usr/lib/i386-linux-gnu/libjavascriptcoregtk-4.0.so.18
  • #11 Inspector::RemoteControllableTarget::update()
    from /usr/lib/i386-linux-gnu/libjavascriptcoregtk-4.0.so.18
  • #12 WebCore::Page::remoteInspectorInformationDidChange
    at ./Source/WebCore/page/Page.cpp line 1824
  • #13 WebCore::InspectorController::connectFrontend
    at ./Source/WebCore/inspector/InspectorController.cpp line 274
  • #14 WebCore::InspectorController::show
    at ./Source/WebCore/inspector/InspectorController.cpp line 351
  • #15 WebCore::InspectorController::inspect
    at ./Source/WebCore/inspector/InspectorController.cpp line 396
  • #16 WebCore::ContextMenuController::contextMenuItemSelected
    at ./Source/WebCore/page/ContextMenuController.cpp line 515
  • #17 WebKit::WebContextMenu::itemSelected
    at ./Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp line 78
  • #18 WebKit::WebPage::didSelectItemFromActiveContextMenu
    at ./Source/WebKit2/WebProcess/WebPage/WebPage.cpp line 3973
  • #19 IPC::callMemberFunctionImpl<WebKit::WebPage, void
  • #22 WebKit::WebPage::didReceiveWebPageMessage
    at ./obj-i686-linux-gnu/DerivedSources/WebKit2/WebPageMessageReceiver.cpp line 921
  • #23 WebKit::WebPage::didReceiveMessage
    at ./Source/WebKit2/WebProcess/WebPage/WebPage.cpp line 4160
  • #24 IPC::MessageReceiverMap::dispatchMessage
    at ./Source/WebKit2/Platform/IPC/MessageReceiverMap.cpp line 123
  • #25 WebKit::WebProcess::didReceiveMessage
    at ./Source/WebKit2/WebProcess/WebProcess.cpp line 656
  • #26 IPC::Connection::dispatchMessage
    at ./Source/WebKit2/Platform/IPC/Connection.cpp line 901
  • #27 IPC::Connection::dispatchMessage
    at ./Source/WebKit2/Platform/IPC/Connection.cpp line 928
  • #28 IPC::Connection::dispatchOneMessage
    at ./Source/WebKit2/Platform/IPC/Connection.cpp line 959
  • #29 operator()
    at ./Source/WebKit2/Platform/IPC/Connection.cpp line 895
  • #30 call
    at ./Source/WTF/wtf/Function.h line 89
  • #31 WTF::RunLoop::performWork()
    from /usr/lib/i386-linux-gnu/libjavascriptcoregtk-4.0.so.18
  • #32 ??
    from /usr/lib/i386-linux-gnu/libjavascriptcoregtk-4.0.so.18
  • #33 g_main_dispatch
    at ../../../../glib/gmain.c line 3148
  • #34 g_main_context_dispatch
    at ../../../../glib/gmain.c line 3813
  • #35 g_main_context_iterate
    at ../../../../glib/gmain.c line 3886
  • #36 g_main_loop_run
    at ../../../../glib/gmain.c line 4082
  • #37 WTF::RunLoop::run()
    from /usr/lib/i386-linux-gnu/libjavascriptcoregtk-4.0.so.18
  • #38 WebKit::ChildProcessMain<WebKit::WebProcess, WebKit::WebProcessMain>
    at ./Source/WebKit2/Shared/unix/ChildProcessMain.h line 61
  • #39 WebProcessMainUnix
    at ./Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp line 69
  • #40 main
    at ./Source/WebKit2/WebProcess/EntryPoint/unix/WebProcessMain.cpp line 44
(gdb)
Comment 7 Dan Jacobson 2017-06-29 23:06:22 UTC
Note I am using a 32 bit machine today...
Comment 8 Michael Catanzaro 2017-06-30 15:16:30 UTC
OK great, that's exactly what we're looking for! Next step is to move the report to WebKit Bugzilla, since this is a bug in WebKit. Since you already have an account there, I trust you can do that:

Thanks for taking the time to report this.
This issue is most likely a bug in WebKit. Please report the bug to https://bugs.webkit.org/ including a link to this bug report and noting the version of WebKitGTK+ that you have installed. When reporting the WebKit bug, be sure to include the prefix '[GTK]' in the bug summary and select the 'WebKit Gtk' component.
Comment 9 Dan Jacobson 2017-06-30 15:44:14 UTC
OK made https://bugs.webkit.org/show_bug.cgi?id=174026 .