Bug 238721 - [GTK] Crash in glXCreateContext
Summary: [GTK] Crash in glXCreateContext
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKitGTK (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-04-04 00:08 PDT by Milan Crha
Modified: 2022-05-26 12:38 PDT (History)
3 users (show)

See Also:


Attachments
webkitgtk-backtrace.txt (9.26 KB, text/plain)
2022-05-26 10:27 PDT, Michael Orlitzky
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Milan Crha 2022-04-04 00:08:55 PDT
Moving this from a downstream bug report:
https://gitlab.gnome.org/GNOME/evolution/-/issues/1854

The WebKitWebProcess crashes with SIGSEGV in Evolution, when using 2.36.0 release, as built in Fedora 35, specifically webkit2gtk3-2.36.0-2.fc35.x86_64.

Here is the terminal output:

$ evolution
libEGL warning: MESA-LOADER: failed to open swrast:
/usr/lib64/dri/swrast_dri.so: cannot open shared object file: No such
file or directory (search paths /usr/lib64/dri, suffix _dri)

EGLDisplay Initialization failed: EGL_NOT_INITIALIZED
Cannot create EGL sharing context: invalid display (last error:
EGL_SUCCESS)


and here is the corecumpctl info:

           PID: 3075 (WebKitWebProces)
           UID: 1001 (peter)
           GID: 100 (users)
        Signal: 11 (SEGV)
     Timestamp: Fri 2022-04-01 21:55:24 CEST (4min 46s ago)
  Command Line: /usr/libexec/webkit2gtk-4.0/WebKitWebProcess 13 35
    Executable: /usr/libexec/webkit2gtk-4.0/WebKitWebProcess
 Control Group:
/user.slice/user-1001.slice/user@1001.service/app.slice/vte-spawn-
a39e67fa-5035-4c1d-b775-2ddab4ae166b.scope
          Unit: user@1001.service
     User Unit: vte-spawn-a39e67fa-5035-4c1d-b775-2ddab4ae166b.scope
         Slice: user-1001.slice
     Owner UID: 1001 (peter)
       Boot ID: ba0.........076
    Machine ID: 244.........70e
      Hostname: gygv
       Storage: none
       Message: Process 3075 (WebKitWebProces) of user 1001 dumped core.

As I said I had earlier installed mesa-dri-drivers with the swrast file, and although the swrast failure report went away, I still got the very same error report in Evolution, with no mail bodies visible. So I deinstalled the package with swrast.

I also noticed that a new dependency came with 2.36.0 which is not used by 2.34.0: libglvnd-opengl-1:1.3.4-2.fc35.x86_64
Comment 1 Michael Catanzaro 2022-04-04 08:17:12 PDT
/usr/lib64/dri/swrast_dri.so is not a symlink, and all of /usr/lib64 is mounted in the web process sandbox... very strange. Does it work using WEBKIT_FORCE_SANDBOX=0?
Comment 2 Michael Catanzaro 2022-04-04 08:18:02 PDT
(In reply to Milan Crha from comment #0)
> As I said I had earlier installed mesa-dri-drivers with the swrast file, and
> although the swrast failure report went away, I still got the very same
> error report in Evolution, with no mail bodies visible. So I deinstalled the
> package with swrast.

What exactly did you uninstall? /usr/lib64/dri/swrast_dri.so is provided by mesa-dri-drivers. Surely you didn't remove that?
Comment 3 Milan Crha 2022-04-04 22:31:34 PDT
(In reply to Michael Catanzaro from comment #1)
> /usr/lib64/dri/swrast_dri.so is not a symlink, and all of /usr/lib64 is
> mounted in the web process sandbox... very strange. Does it work using
> WEBKIT_FORCE_SANDBOX=0?

Evolution 3.42.4 disables the sandbox, due to the printing bug #202363:
https://gitlab.gnome.org/GNOME/evolution/-/blob/gnome-41/src/shell/main.c#L478

(In reply to Michael Catanzaro from comment #2)
> What exactly did you uninstall? /usr/lib64/dri/swrast_dri.so is provided by
> mesa-dri-drivers. Surely you didn't remove that?

From the downstream reporter:

I don't have mesa-dri-drivers on my system, nothing requires it. When I saw the error message when starting evolution in a terminal about the missing swrast file, I found out that it is provided by mesa-dri- drivers, so I installed that package. But apart from silencing the swrast message in the terminal, it didn't solve any problems, so I uninstalled the package.

With current evolution, and the webkit2gt3 2.34.0,  evolution works nicely without  mesa-dri-drivers, as does anything else. That is I don't have this file right now: /usr/lib64/dri/swrast_dri.so
Comment 4 Milan Crha 2022-04-04 22:41:57 PDT
Backtrace of the crash. I specifically asked to not install debuginfo package for the WebKitGTK due to its size.

Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `/usr/libexec/webkit2gtk-4.0/WebKitWebProcess 13
23'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f5ee97b487e in glXCreateContext () from /lib64/libGLX.so.0
[Current thread is 1 (Thread 0x7f5e3f5ff640 (LWP 4492))]
Missing separate debuginfos, use: dnf debuginfo-install webkit2gtk3-
2.36.0-2.fc35.x86_64
(gdb) bt
#0 0x00007f5ee97b487e in glXCreateContext () from /lib64/libGLX.so.0
#1 0x00007f5eee1108b6 in
WebCore::GLContext::createContextForWindow(unsigned long,
WebCore::PlatformDisplay*) () from /lib64/libwebkit2gtk-4.0.so.37
#2 0x00007f5eecf758b8 in
WTF::Detail::CallableWrapper<WebKit::ThreadedCompositor::ThreadedCompos
itor(WebKit::ThreadedCompositor::Client&,
WebKit::ThreadedDisplayRefreshMonitor::Client&, unsigned int,
WebCore::IntSize const&, float, unsigned int)::{lambda()#2},
void>::call() () from /lib64/libwebkit2gtk-4.0.so.37
#3 0x00007f5eecf6bb87 in
WTF::Detail::CallableWrapper<WebKit::CompositingRunLoop::performTaskSyn
c(WTF::Function<void ()>&&)::{lambda()#1}, void>::call() ()
from /lib64/libwebkit2gtk-4.0.so.37
#4 0x00007f5eebb8d22d in
WTF::RunLoop::RunLoop()::{lambda(void*)#1}::_FUN(void*) [clone
.lto_priv.0] () from /lib64/libjavascriptcoregtk-4.0.so.18
#5 0x00007f5eebb8ace3 in WTF::RunLoop::{lambda(_GSource*, int
(*)(void*), void*)#1}::_FUN(_GSource*, int (*)(void*), void*) [clone
.lto_priv.0] ()
from /lib64/libjavascriptcoregtk-4.0.so.18
#6 0x00007f5eec1040af in g_main_context_dispatch ()
from /lib64/libglib-2.0.so.0
#7 0x00007f5eec159308 in g_main_context_iterate.constprop ()
from /lib64/libglib-2.0.so.0
#8 0x00007f5eec1037c3 in g_main_loop_run () from /lib64/libglib-
2.0.so.0
#9 0x00007f5eebb8d8f0 in WTF::RunLoop::run() ()
from /lib64/libjavascriptcoregtk-4.0.so.18
#10 0x00007f5eebb97267 in WTF::wtfThreadEntryPoint(void*) [clone
.lto_priv.0]
() from /lib64/libjavascriptcoregtk-4.0.so.18
#11 0x00007f5eec51eb1a in start_thread () from /lib64/libc.so.6
#12 0x00007f5eec5a3660 in clone3 () from /lib64/libc.so.6
Comment 5 Michael Orlitzky 2022-05-26 10:27:47 PDT
Created attachment 459788 [details]
webkitgtk-backtrace.txt

I have same problem, but have a backtrace with -ggdb information. To me it looks like the fallback case in

  Source/WebCore/platform/graphics/glx/GLContextGLX.cpp

is supplying NULL as the "vis" argument to glXCreateContext(), but that function immediately tries to use vis.

Note however that I don't get any libEGL or mesa warnings when I start evolution; those may be red herrings.
Comment 6 Michael Orlitzky 2022-05-26 12:18:56 PDT
Updating to evolution-3.44.1 fixes it, and my guess is that the NEWS item "Disable hardware acceleration for WebKitGTK" is responsible.