Bug 199666 - [GTK][X11] X Error received in WebProcess on NVidia binary drivers
Summary: [GTK][X11] X Error received in WebProcess on NVidia binary drivers
Status: RESOLVED FIXED
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: 2019-07-10 05:19 PDT by Tomas Popela
Modified: 2021-10-02 01:56 PDT (History)
7 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tomas Popela 2019-07-10 05:19:59 PDT
Using the following demo program inside the Toolbox running on T460p with GeFroce 940MX crashes the web process. I can reproduce it easily, so if anything is needed Miguel, I can provide it.

// gcc demo.c -o demo `pkg-config --libs --cflags gtk±3.0 webkit2gtk-4.0
#include <gtk/gtk.h>
#include <webkit2/webkit2.h>

static void activate(GtkApplication *app, gpointer user_data);

int main(int argc, char **argv)
{
    GtkApplication *app;
    int status;

    app = gtk_application_new("org.test.test", G_APPLICATION_FLAGS_NONE);
    g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
    status = g_application_run(G_APPLICATION(app), argc, argv);
    g_object_unref(app);
    return status;
}

static void activate(GtkApplication *app, gpointer user_data)
{
    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    WebKitWebView *web_view;

    gtk_application_add_window(app, GTK_WINDOW(window));

    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    gtk_window_set_default_size(GTK_WINDOW(window), 400, 400);
    gtk_window_set_title(GTK_WINDOW(window), "Demo");

    web_view = WEBKIT_WEB_VIEW(webkit_web_view_new());

    gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(web_view));

    gtk_widget_set_size_request(window, 100, 100);
    webkit_web_view_load_uri(web_view, "https://www.youtube.com/embed/?v=vCoF21OXu2E");
    gtk_widget_show_all(window);
}


(WebKitWebProcess:12512): Gdk-ERROR **: 13:39:16.802: The program 'WebKitWebProcess' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadValue (integer parameter out of range for operation)'.
  (Details: serial 300 error_code 2 request_code 53 (core protocol) minor_code 0)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the GDK_SYNCHRONIZE environment
   variable to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

Thread 17 "eadedCompositor" received signal SIGTRAP, Trace/breakpoint trap.
[Switching to Thread 0x7fb6999fd700 (LWP 12603)]
0x00007fb726dae1c5 in _g_log_abort (breakpoint=1) at ../glib/gmessages.c:554
554	../glib/gmessages.c: No such file or directory.
(gdb) bt
#0  0x00007fb726dae1c5 in _g_log_abort (breakpoint=1) at ../glib/gmessages.c:554
#1  0x00007fb726db0bbc in g_log_writer_default (log_level=6, log_level@entry=G_LOG_LEVEL_ERROR, fields=fields@entry=0x7fb6999fbec0, n_fields=n_fields@entry=6, user_data=user_data@entry=0x0) at ../glib/gmessages.c:2690
#2  0x00007fb726daee17 in g_log_structured_array (n_fields=6, fields=0x7fb6999fbec0, log_level=G_LOG_LEVEL_ERROR) at ../glib/gmessages.c:1923
#3  0x00007fb726daee17 in g_log_structured_array (log_level=G_LOG_LEVEL_ERROR, fields=0x7fb6999fbec0, n_fields=6) at ../glib/gmessages.c:1896
#4  0x00007fb726daf844 in g_log_structured_standard
    (log_domain=log_domain@entry=0x7fb72731a017 "Gdk", log_level=log_level@entry=G_LOG_LEVEL_ERROR, file=file@entry=0x7fb7273381bc "gdkdisplay-x11.c", line=line@entry=0x7fb727338268 "2763", func=func@entry=0x7fb727338ed0 <__func__.76909> "_gdk_x11_display_error_event", message_format=message_format@entry=0x7fb727339238 "%s") at ../glib/gmessages.c:1980
#5  0x00007fb7272d8bea in _gdk_x11_display_error_event (display=display@entry=0x55a4f7b0f0e0 [GdkX11Display], error=error@entry=0x7fb6999fc510) at gdkdisplay-x11.c:2763
#6  0x00007fb7272e5b93 in gdk_x_error (error=0x7fb6999fc510, xdisplay=0x55a4f7afea20) at gdkmain-x11.c:307
#7  0x00007fb7272e5b93 in gdk_x_error (xdisplay=0x55a4f7afea20, error=0x7fb6999fc510) at gdkmain-x11.c:269
#8  0x00007fb724702402 in _XError (dpy=dpy@entry=0x55a4f7afea20, rep=rep@entry=0x7fb67800a410) at XlibInt.c:1444
#9  0x00007fb7246ff297 in handle_error (dpy=0x55a4f7afea20, err=0x7fb67800a410, in_XReply=<optimized out>) at xcb_io.c:199
#10 0x00007fb7246ff33d in handle_response (dpy=0x55a4f7afea20, response=0x7fb67800a410, in_XReply=<optimized out>) at xcb_io.c:324
#11 0x00007fb7247002b0 in _XReply (dpy=dpy@entry=0x55a4f7afea20, rep=rep@entry=0x7fb6999fc6c0, extra=extra@entry=0, discard=discard@entry=1) at xcb_io.c:634
#12 0x00007fb7246fbb01 in XSync (dpy=0x55a4f7afea20, discard=discard@entry=0) at Sync.c:44
#13 0x00007fb7246fbb9f in _XSyncFunction (dpy=<optimized out>) at Synchro.c:35
#14 0x00007fb7246de5e4 in XCreatePixmap (dpy=0x55a4f7afea20, d=586, width=1, height=1, depth=128) at CrPixmap.c:58
#15 0x00007fb6d9dc0429 in  () at /lib64/libGLX_system.so.0
#16 0x00007fb7242bb2a9 in glXCreatePbuffer () at /lib64/libGLX.so.0
#17 0x00007fb72998e49b in WebCore::GLContextGLX::createPbufferContext(WebCore::PlatformDisplay&, __GLXcontextRec*) (platformDisplay=..., sharingContext=sharingContext@entry=0x0)
    at ../Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:233
#18 0x00007fb72998ec78 in WebCore::GLContextGLX::createSharingContext(WebCore::PlatformDisplay&) (platformDisplay=...) at ../Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:296
#19 0x00007fb72995ab26 in WebCore::GLContext::createSharingContext(WebCore::PlatformDisplay&) (display=...) at ../Source/WebCore/platform/graphics/GLContext.cpp:119
#20 0x00007fb72a0c409e in WebCore::PlatformDisplay::sharingGLContext() (this=this@entry=0x7fb6c0a03140) at ../Source/WebCore/platform/graphics/PlatformDisplay.cpp:163
#21 0x00007fb72998eb60 in WebCore::GLContextGLX::createContext(unsigned long, WebCore::PlatformDisplay&) (window=window@entry=52428804, platformDisplay=...) at ../Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:284
#22 0x00007fb72995a96b in WebCore::GLContext::createContextForWindow(unsigned long, WebCore::PlatformDisplay*) (windowHandle=52428804, platformDisplay=<optimized out>) at ../Source/WebCore/platform/graphics/GLContext.cpp:94
#23 0x00007fb72857cde0 in WebKit::ThreadedCompositor::createGLContext() (this=0x7fb69aa61660) at ../Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:90
#24 0x00007fb72857bdc7 in WTF::Function<void()>::CallableWrapper<WebKit::CompositingRunLoop::performTaskSync(WTF::Function<void()>&&)::<lambda()> >::call(void) (this=0x7fb69aa4b648) at /usr/include/c++/9/bits/unique_ptr.h:357
#25 0x00007fb72674b9d5 in WTF::RunLoop::performWork() () at /lib64/libjavascriptcoregtk-4.0.so.18
#26 0x00007fb726795cfd in  () at /lib64/libjavascriptcoregtk-4.0.so.18
#27 0x00007fb726da7fd0 in g_main_dispatch (context=0x7fb678000b20) at ../glib/gmain.c:3189
#28 0x00007fb726da7fd0 in g_main_context_dispatch (context=context@entry=0x7fb678000b20) at ../glib/gmain.c:3854
#29 0x00007fb726da8368 in g_main_context_iterate (context=0x7fb678000b20, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:3927
#30 0x00007fb726da86b3 in g_main_loop_run (loop=0x7fb678002500) at ../glib/gmain.c:4123
#31 0x00007fb726796770 in WTF::RunLoop::run() () at /lib64/libjavascriptcoregtk-4.0.so.18
#32 0x00007fb72674cd68 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) () at /lib64/libjavascriptcoregtk-4.0.so.18
#33 0x00007fb726796afd in  () at /lib64/libjavascriptcoregtk-4.0.so.18
#34 0x00007fb72507a5a2 in start_thread () at /lib64/libpthread.so.0
#35 0x00007fb727c35023 in clone () at /lib64/libc.so.6
(gdb) bt full
#0  0x00007fb726dae1c5 in _g_log_abort (breakpoint=1) at ../glib/gmessages.c:554
        debugger_present = 1
#1  0x00007fb726db0bbc in g_log_writer_default (log_level=6, log_level@entry=G_LOG_LEVEL_ERROR, fields=fields@entry=0x7fb6999fbec0, n_fields=n_fields@entry=6, user_data=user_data@entry=0x0) at ../glib/gmessages.c:2690
        initialized = 1
        stderr_is_journal = 0
        __FUNCTION__ = "g_log_writer_default"
#2  0x00007fb726daee17 in g_log_structured_array (n_fields=6, fields=0x7fb6999fbec0, log_level=G_LOG_LEVEL_ERROR) at ../glib/gmessages.c:1923
        writer_func = 0x7fb726db0a40 <g_log_writer_default>
        writer_user_data = 0x0
        recursion = 0
        depth = <optimized out>
        __FUNCTION__ = "g_log_structured_array"
        __FUNCTION__ = "g_log_structured_array"
#3  0x00007fb726daee17 in g_log_structured_array (log_level=G_LOG_LEVEL_ERROR, fields=0x7fb6999fbec0, n_fields=6) at ../glib/gmessages.c:1896
        __FUNCTION__ = "g_log_structured_array"
#4  0x00007fb726daf844 in g_log_structured_standard
    (log_domain=log_domain@entry=0x7fb72731a017 "Gdk", log_level=log_level@entry=G_LOG_LEVEL_ERROR, file=file@entry=0x7fb7273381bc "gdkdisplay-x11.c", line=line@entry=0x7fb727338268 "2763", func=func@entry=0x7fb727338ed0 <__func__.76909> "_gdk_x11_display_error_event", message_format=message_format@entry=0x7fb727339238 "%s") at ../glib/gmessages.c:1980
        fields = 
            {{key = 0x7fb726dff594 "PRIORITY", value = 0x7fb726df9223, length = -1}, {key = 0x7fb726dff59d "CODE_FILE", value = 0x7fb7273381bc, length = -1}, {key = 0x7fb726dff5a7 "CODE_LINE", value = 0x7fb727338268, length = -1}, {key = 0x7fb726dff5b1 "CODE_FUNC", value = 0x7fb727338ed0 <__func__.76909>, length = -1}, {key = 0x7fb726dff581 "MESSAGE", value = 0x7fb67801c240, length = -1}, {key = 0x7fb726dff5ee "GLIB_DOMAIN", value = 0x7fb72731a017, length = -1}}
        n_fields = 6
        message_allocated = 0x7fb67801c240 "The program 'WebKitWebProcess' received an X Window System error.\nThis probably reflects a bug in the program.\nThe error was 'BadValue (integer parameter out of range for operation)'.\n  (Details: seri"...
        buffer = "\240\266\317'\267\177\000\000\372q\336ٶ\177\000\000\340ğ\231\266\177\000\000D\b\272'\267\177\000\000\310\f\234\001\000\000\000\000\264\277\237\231\266\177\000\000\273\002\000\000\000\000\000\000\220\300\237\231\266\177\000\000\060\222\330ٶ\177\000\000\200\300\237\231\266\177\000\000\310\023\231!\267\177\000\000x", '\000' <repeats 24 times>, "\340\005\000\000\000\000\000\200\300\237\231\266\177\000\000\000\000\000\000\000\000\000\000\336\017\331ٶ\177\000\000(h\000x\266\177\000\000\220\300\237\231\v\000\000\000\006\062\003g\000\000\000\000\b\375\303*\267\177\000\000\062\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001", '\000' <repeats 15 times>...
        args = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7fb6999fc438, reg_save_area = 0x7fb6999fc360}}
#5  0x00007fb7272d8bea in _gdk_x11_display_error_event (display=display@entry=0x55a4f7b0f0e0 [GdkX11Display], error=error@entry=0x7fb6999fc510) at gdkdisplay-x11.c:2763
        buf = "BadValue (integer parameter out of range for operation)\000\000\000\000\000\000\000\000"
        msg = <optimized out>
        display_x11 = 0x55a4f7b0f0e0 [GdkX11Display]
        tmp_list = <optimized out>
        ignore = 0
        __func__ = "_gdk_x11_display_error_event"
#6  0x00007fb7272e5b93 in gdk_x_error (error=0x7fb6999fc510, xdisplay=0x55a4f7afea20) at gdkmain-x11.c:307
        error_display = 0x55a4f7b0f0e0 [GdkX11Display]
        manager = <optimized out>
        displays = 0x0
#7  0x00007fb7272e5b93 in gdk_x_error (xdisplay=0x55a4f7afea20, error=0x7fb6999fc510) at gdkmain-x11.c:269
#8  0x00007fb724702402 in _XError (dpy=dpy@entry=0x55a4f7afea20, rep=rep@entry=0x7fb67800a410) at XlibInt.c:1444
        rtn_val = <optimized out>
        event = 
422238160496}, xunmap = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, event = 140422227703042, window = 140422238160496, from_configure = -139461408}, xmap = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, event = 140422227703042, window = 140422238160496, override_redirect = -139461408}, xmaprequest = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, parent = 140422227703042, window = 140422238160496}, xreparent = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, event = 140422227703042, window = 140422238160496, parent = 94167018503392, x = -1717582416, y = 32694, override_redirect = -1717582448}, xconfigure = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, event = 140422227703042, window = 140422238160496, x = -139461408, y = 21924, width = -1717582416, height = 32694, border_width = -1717582448, above = 301, override_redirect = -1717582456}, xgravity = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, event = 140422227703042, window = 140422238160496, x = -139461408, y = 21924}, xresizerequest = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, window = 140422227703042, width = -1717582224, height = 32694}, xconfigurerequest = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, parent = 140422227703042, window = 140422238160496, x = -139461408, y = 21924, width = -1717582416, height = 32694, border_width = -1717582448, above = 301, detail = -1717582456, value_mask = 140424558418985}, xcirculate = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, event = 140422227703042, window = 140422238160496, place = -139461408}, xcirculaterequest = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, parent = 140422227703042, window = 140422238160496, place = -139461408}, xproperty = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, window = 140422227703042, atom = 140422238160496, time = 94167018503392, state = -1717582416}, xselectionclear = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, window = 140422227703042, selection = 140422238160496, time = 94167018503392}, xselectionrequest = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, owner = 140422227703042, requestor = 140422238160496, selection = 94167018503392, target = 140422238160304, property = 140422238160272, time = 301}, xselection = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, requestor = 140422227703042, selection = 140422238160496, target = 94167018503392, property = 140422238160304, time = 140422238160272}, xcolormap = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, window = 140422227703042, colormap = 140422238160496, new = -139461408, state = 21924}, xclient = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, window = 140422227703042, message_type = 140422238160496, format = -139461408, data = {b = "\260ş\231\266\177\000\000\220ş\231\266\177\000\000-\001\000", s = {-14928, -26209, 32694, 0, -14960, -26209, 32694, 0, 301, 0}, l = {140422238160304, 140422238160272, 301, 140422238160264, 140424558418985}}}, xmapping = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, window = 140422227703042, request = -1717582224, first_keycode = 32694, count = -139461408}, xerror = {type = 0, display = 0x55a4f7afea20, resourceid = 128, serial = 300, error_code = 2 '\002', request_code = 53 '5', minor_code = 0 '\000'}, xkeymap = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, window = 140422227703042, key_vector = "pƟ\231\266\177\000\000\340\374\257\367\244U\000\000\260ş\231\266\177\000\000\220ş\231\266\177\000"}, xgeneric = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, extension = -1728039678, evtype = 32694}, xcookie = {type = 0, serial = 94167018498592, send_event = 128, display = 0x12c, extension = -1728039678, evtype = 32694, cookie = 2577385072, data = 0x55a4f7affce0}, pad = {94162862997504, 94167018498592, 128, 300, 140422227703042, 140422238160496, 94167018503392, 140422238160304, 140422238160272, 301, 140422238160264, 140424558418985, 301, 140424558419301, 0, 140421674118320, 301, 140422238160304, 0, 140422238160400, 0, 0, 0, 0}}
        async = <optimized out>
        next = <optimized out>
#9  0x00007fb7246ff297 in handle_error (dpy=0x55a4f7afea20, err=0x7fb67800a410, in_XReply=<optimized out>) at xcb_io.c:199
        ext = <optimized out>
        ret_code = 21924
#10 0x00007fb7246ff33d in handle_response (dpy=0x55a4f7afea20, response=0x7fb67800a410, in_XReply=<optimized out>) at xcb_io.c:324
        async = <optimized out>
        next = <optimized out>
#11 0x00007fb7247002b0 in _XReply (dpy=dpy@entry=0x55a4f7afea20, rep=rep@entry=0x7fb6999fc6c0, extra=extra@entry=0, discard=discard@entry=1) at xcb_io.c:634
        event = <optimized out>
        req = <optimized out>
        response = 0x7fb678012cb0
        error = 0x0
        c = <optimized out>
        reply = <optimized out>
        current = 0x7fb67800e030
        dpy_request = <optimized out>
        __PRETTY_FUNCTION__ = "_XReply"
#12 0x00007fb7246fbb01 in XSync (dpy=0x55a4f7afea20, discard=discard@entry=0) at Sync.c:44
        rep = {type = 112 'p', revertTo = 163 '\243', sequenceNumber = 30720, length = 32694, focus = 4155501088, pad1 = 21924, pad2 = 0, pad3 = 0, pad4 = 4155501088, pad5 = 21924}
#13 0x00007fb7246fbb9f in _XSyncFunction (dpy=<optimized out>) at Synchro.c:35
#14 0x00007fb7246de5e4 in XCreatePixmap (dpy=0x55a4f7afea20, d=586, width=1, height=1, depth=128) at CrPixmap.c:58
        pid = 52428811
        req = <optimized out>
#15 0x00007fb6d9dc0429 in  () at /lib64/libGLX_system.so.0
#16 0x00007fb7242bb2a9 in glXCreatePbuffer () at /lib64/libGLX.so.0
#17 0x00007fb72998e49b in WebCore::GLContextGLX::createPbufferContext(WebCore::PlatformDisplay&, __GLXcontextRec*) (platformDisplay=..., sharingContext=sharingContext@entry=0x0)
    at ../Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:233
        fbConfigAttributes = {32784, 4, 32785, 1, 8, 1, 9, 1, 10, 1, 11, 1, 5, 0, 0}
        returnedElements = 39
        display = 0x55a4f7afea20
        configs = std::unique_ptr<struct __GLXFBConfigRec *> = {get() = 0x7fb67801a910}
        pbufferAttributes = {32833, 1, 32832, 1, 0}
        pbuffer = {m_resource = 140424562083872}
        context = std::unique_ptr<struct __GLXcontextRec> = {get() = 0xfffffffffffffff0}
#18 0x00007fb72998ec78 in WebCore::GLContextGLX::createSharingContext(WebCore::PlatformDisplay&) (platformDisplay=...) at ../Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:296
        context = std::unique_ptr<class WebCore::GLContextGLX> = {get() = 0x7fb72a19d6fe}
#19 0x00007fb72995ab26 in WebCore::GLContext::createSharingContext(WebCore::PlatformDisplay&) (display=...) at ../Source/WebCore/platform/graphics/GLContext.cpp:119
        glxContext = std::unique_ptr<class WebCore::GLContextGLX> = {get() = 0x7fb72a19d6fe}
#20 0x00007fb72a0c409e in WebCore::PlatformDisplay::sharingGLContext() (this=this@entry=0x7fb6c0a03140) at ../Source/WebCore/platform/graphics/PlatformDisplay.cpp:163
#21 0x00007fb72998eb60 in WebCore::GLContextGLX::createContext(unsigned long, WebCore::PlatformDisplay&) (window=window@entry=52428804, platformDisplay=...) at ../Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:284
        glxSharingContext = <optimized out>
        context = std::unique_ptr<class WebCore::GLContextGLX> = {get() = 0x7fb6e0001810}
#22 0x00007fb72995a96b in WebCore::GLContext::createContextForWindow(unsigned long, WebCore::PlatformDisplay*) (windowHandle=52428804, platformDisplay=<optimized out>) at ../Source/WebCore/platform/graphics/GLContext.cpp:94
        glxContext = std::unique_ptr<class WebCore::GLContextGLX> = {get() = 0x7fb6e0001810}
        display = 
          @0x7fb6c0a03140: {_vptr.PlatformDisplay = 0x7fb72ab58250 <vtable for WebCore::PlatformDisplayX11+16>, m_nativeDisplayOwned = WebCore::PlatformDisplay::NativeDisplayOwned::No, m_eglDisplay = 0x0, m_sharingGLContext = std::unique_ptr<class WebCore::GLContext> = {get() = 0x0}, m_eglDisplayInitialized = false, m_eglMajorVersion = 0, m_eglMinorVersion = 0}
#23 0x00007fb72857cde0 in WebKit::ThreadedCompositor::createGLContext() (this=0x7fb69aa61660) at ../Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:90
#24 0x00007fb72857bdc7 in WTF::Function<void()>::CallableWrapper<WebKit::CompositingRunLoop::performTaskSync(WTF::Function<void()>&&)::<lambda()> >::call(void) (this=0x7fb69aa4b648) at /usr/include/c++/9/bits/unique_ptr.h:357
#25 0x00007fb72674b9d5 in WTF::RunLoop::performWork() () at /lib64/libjavascriptcoregtk-4.0.so.18
#26 0x00007fb726795cfd in  () at /lib64/libjavascriptcoregtk-4.0.so.18
#27 0x00007fb726da7fd0 in g_main_dispatch (context=0x7fb678000b20) at ../glib/gmain.c:3189
        dispatch = <optimized out>
        prev_source = 0x0
        was_in_call = 0
        user_data = 0x7fb69aa59000
        callback = 0x7fb726795cf0
        cb_funcs = 0x7fb726e7a280 <g_source_callback_funcs>
        cb_data = 0x7fb6780025b0
        need_destroy = <optimized out>
        source = 0x7fb678002520
        current = 0x7fb678002710
        i = 0
        __FUNCTION__ = "g_main_dispatch"
#28 0x00007fb726da7fd0 in g_main_context_dispatch (context=context@entry=0x7fb678000b20) at ../glib/gmain.c:3854
#29 0x00007fb726da8368 in g_main_context_iterate (context=0x7fb678000b20, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:3927
        max_priority = 2147483647
        timeout = -1
        some_ready = 1
        nfds = <optimized out>
        allocated_nfds = 1
        fds = 0x7fb678002660
#30 0x00007fb726da86b3 in g_main_loop_run (loop=0x7fb678002500) at ../glib/gmain.c:4123
        __FUNCTION__ = "g_main_loop_run"
#31 0x00007fb726796770 in WTF::RunLoop::run() () at /lib64/libjavascriptcoregtk-4.0.so.18
#32 0x00007fb72674cd68 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) () at /lib64/libjavascriptcoregtk-4.0.so.18
#33 0x00007fb726796afd in  () at /lib64/libjavascriptcoregtk-4.0.so.18
#34 0x00007fb72507a5a2 in start_thread () at /lib64/libpthread.so.0
#35 0x00007fb727c35023 in clone () at /lib64/libc.so.6
Comment 1 Tomas Popela 2019-07-10 05:21:01 PDT
Reported in the Fedora Discussion - https://discussion.fedoraproject.org/t/webkitwebprocess-error/1852
Comment 2 uwb17174 2020-06-28 08:54:01 PDT
Hi, I was redirected from this Epiphany Browser issue in:
https://gitlab.gnome.org/GNOME/epiphany/-/issues/1235

I am using NVidia GeForce GT 610 (binary driver from NVidia) & Intel Core 2 Duo with X11. Epiphany crashes in the tech preview (3.37.2-90-g6406a3481+), but it's working normal in the regular version in Debian Bulleye (3.36.2).

Any idea? Thanks in advance!

Here is the core dump:

$ ./.local/share/bin/flatpak-coredumpctl org.gnome.Epiphany.Devel//master
Executable /usr/libexec/webkit2gtk-4.0/WebKitWebProcess doesn't seem to be a flatpaked application.
Running: `"flatpak" "run" "--filesystem=home" "--filesystem=/tmp" "--command=gdb" "--devel" "org.gnome.Epiphany.Devel//master" "/usr/libexec/webkit2gtk-4.0/WebKitWebProcess" "/tmp/tmpnd8qsr5o"`
/usr/share/gdb/python/gdb/command/prompt.py:48: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if self.value is not '':
/usr/share/gdb/python/gdb/command/prompt.py:60: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if self.value is not '':
GNU gdb (GDB) 8.3.1
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/libexec/webkit2gtk-4.0/WebKitWebProcess...
Reading symbols from /usr/lib/debug//usr/libexec/webkit2gtk-4.0/WebKitWebProcess.debug...

warning: core file may not match specified executable file.
[New LWP 85]
[New LWP 43]
[New LWP 45]
[New LWP 46]
[New LWP 48]
[New LWP 47]
[New LWP 49]
[New LWP 51]
[New LWP 50]
[New LWP 53]
[New LWP 54]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/x86_64-linux-gnu/libthread_db.so.1".
could not find '.gnu_debugaltlink' file for /usr/lib/debug/usr/lib/x86_64-linux-gnu/libsystemd.so.0.28.0.debug

warning: the debug information found in "/usr/lib/debug//usr/lib/x86_64-linux-gnu/libicudata.so.65.1.debug" does not match "/usr/lib/x86_64-linux-gnu/libicudata.so.65" (CRC mismatch).


warning: the debug information found in "/usr/lib/debug//usr/lib/x86_64-linux-gnu/libicudata.so.65.1.debug" does not match "/usr/lib/x86_64-linux-gnu/libicudata.so.65" (CRC mismatch).


warning: the debug information found in "/usr/lib/debug//usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0.debug" does not match "/usr/lib/x86_64-linux-gnu/libX11-xcb.so.1" (CRC mismatch).


warning: the debug information found in "/usr/lib/debug//usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0.debug" does not match "/usr/lib/x86_64-linux-gnu/libX11-xcb.so.1" (CRC mismatch).


warning: the debug information found in "/usr/lib/debug//app/lib/libdazzle-1.0.so.0.debug" does not match "/app/lib/libdazzle-1.0.so.0" (CRC mismatch).

Core was generated by `/usr/libexec/webkit2gtk-4.0/WebKitWebProcess 15 37'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  WebCore::GLContextGLX::createPbufferContext (platformDisplay=..., 
    sharingContext=sharingContext@entry=0x0)
    at ../Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:232
--Type <RET> for more, q to quit, c to continue without paging--c
232	    XUniqueGLXPbuffer pbuffer(glXCreatePbuffer(display, configs.get()[0], pbufferAttributes));
[Current thread is 1 (Thread 0x7f3b294ff700 (LWP 85))]
(gdb) bt full
#0  0x00007f3b83929718 in WebCore::GLContextGLX::createPbufferContext(WebCore::PlatformDisplay&, __GLXcontextRec*)
    (platformDisplay=..., sharingContext=sharingContext@entry=0x0)
    at ../Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:232
        fbConfigAttributes = 
          {32784, 4, 32785, 1, 8, 1, 9, 1, 10, 1, 11, 1, 5, 0, 0}
        returnedElements = 56
        display = 0x55d0e47484c0
        configs = std::unique_ptr<__GLXFBConfigRec *> = {get() = 0x0}
        pbufferAttributes = {32833, 1, 32832, 1, 0}
        pbuffer = {m_resource = 1}
        context = std::unique_ptr<__GLXcontextRec> = {get() = 0x3100000007}
#1  0x00007f3b83929d18 in WebCore::GLContextGLX::createSharingContext(WebCore::PlatformDisplay&) (platformDisplay=...)
    at ../Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:295
        context = 
          std::unique_ptr<WebCore::GLContextGLX> = {get() = 0x7f3b7d834260 <__glvndPthreadFuncs>}
#2  0x00007f3b838fb706 in WebCore::GLContext::createSharingContext(WebCore::PlatformDisplay&) (display=...)
    at ../Source/WebCore/platform/graphics/GLContext.cpp:115
        glxContext = 
          std::unique_ptr<WebCore::GLContextGLX> = {get() = 0x7f3b7d834260 <__gl--Type <RET> for more, q to quit, c to continue without paging--
vndPthreadFuncs>}
#3  0x00007f3b838fc0ae in WebCore::PlatformDisplay::sharingGLContext()
    (this=this@entry=0x7f3b794fb270)
    at ../Source/WebCore/platform/graphics/PlatformDisplay.cpp:172
#4  0x00007f3b83929c00 in WebCore::GLContextGLX::createContext(unsigned long, WebCore::PlatformDisplay&) (window=window@entry=50331652, platformDisplay=...)
    at ../Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:283
        glxSharingContext = <optimized out>
        context = std::unique_ptr<WebCore::GLContextGLX> = {get() = 0x0}
#5  0x00007f3b838fb52f in WebCore::GLContext::createContextForWindow(unsigned long, WebCore::PlatformDisplay*)
    (windowHandle=50331652, platformDisplay=<optimized out>)
    at ../Source/WebCore/platform/graphics/GLContext.cpp:89
        glxContext = std::unique_ptr<WebCore::GLContextGLX> = {get() = 0x0}
        display = 
            @0x7f3b794fb270: {_vptr.PlatformDisplay = 0x7f3b84d8ea28 <vtable for WebCore::PlatformDisplayX11+16>, m_nativeDisplayOwned = WebCore::PlatformDisplay::NativeDisplayOwned::No, m_eglDisplay = 0x0, m_sharingGLContext = std::unique_ptr<WebCore::GLContext> = {get() = 0x0}, m_eglDisplayInitialized = false, m_eglMajorVersion = 0, m_eglMinorVersion = 0, m_gstGLDisplay = {m_ptr = 0x0}, m_gstGLContext = {m_ptr = 0x0}}
#6  0x00007f3b82336800 in WebKit::ThreadedCompositor::createGLContext()
    (this=0x7f3b29915f80)
--Type <RET> for more, q to quit, c to continue without paging--
    at ../Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:87
#7  0x00007f3b82334cf7 in WTF::Function<void ()>::operator()() const
    (this=<optimized out>) at /usr/include/c++/10.1.0/bits/unique_ptr.h:420
        locker = <optimized out>
#8  0x00007f3b82334cf7 in operator() (__closure=<optimized out>)
    at ../Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:90
        locker = <optimized out>
#9  0x00007f3b82334cf7 in WTF::Detail::CallableWrapper<WebKit::CompositingRunLoop::performTaskSync(WTF::Function<void()>&&)::<lambda()>, void>::call(void)
    (this=0x7f3b2990c288) at DerivedSources/ForwardingHeaders/wtf/Function.h:52
#10 0x00007f3b80bd78e9 in WTF::Function<void ()>::operator()() const
    (this=<synthetic pointer>) at ../Source/WTF/wtf/Vector.h:341
        function = 
            {m_callableWrapper = std::unique_ptr<WTF::Detail::CallableWrapperBase<void>> = {get() = 0x7f3b2990c288}}
        functionsHandled = 0
        functionsToHandle = 1
        didSuspendFunctions = false
#11 0x00007f3b80bd78e9 in WTF::RunLoop::performWork() (this=0x7f3b295f8000)
    at ../Source/WTF/wtf/RunLoop.cpp:140
        function = 
--Type <RET> for more, q to quit, c to continue without paging--
            {m_callableWrapper = std::unique_ptr<WTF::Detail::CallableWrapperBase<void>> = {get() = 0x7f3b2990c288}}
        functionsHandled = 0
        functionsToHandle = 1
        didSuspendFunctions = false
#12 0x00007f3b80c2558d in operator() (userData=<optimized out>, __closure=0x0)
    at ../Source/WTF/wtf/glib/RunLoopGLib.cpp:68
#13 0x00007f3b80c2558d in _FUN(gpointer) ()
    at ../Source/WTF/wtf/glib/RunLoopGLib.cpp:70
#14 0x00007f3b8129ce6f in g_main_dispatch (context=0x7f3b0c000b60)
    at ../glib/gmain.c:3313
        dispatch = 0x7f3b80c255a0 <_FUN(GSource*, GSourceFunc, gpointer)>
        prev_source = 0x0
        was_in_call = 0
        user_data = 0x7f3b295f8000
        callback = 0x7f3b80c25580 <_FUN(gpointer)>
        cb_funcs = <optimized out>
        cb_data = 0x7f3b0c001dd0
        need_destroy = <optimized out>
        source = 0x7f3b0c001d60
        current = 0x7f3b0c002b40
        i = 0
        __func__ = "g_main_dispatch"
--Type <RET> for more, q to quit, c to continue without paging--c
#15 0x00007f3b8129ce6f in g_main_context_dispatch (context=0x7f3b0c000b60) at ../glib/gmain.c:3978
#16 0x00007f3b8129d218 in g_main_context_iterate (context=0x7f3b0c000b60, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4051
        max_priority = 100
        timeout = 0
        some_ready = 1
        nfds = <optimized out>
        allocated_nfds = <optimized out>
        fds = 0x7f3b0c002a90
#17 0x00007f3b8129d533 in g_main_loop_run (loop=loop@entry=0x7f3b0c001d40) at ../glib/gmain.c:4245
        __func__ = "g_main_loop_run"
#18 0x00007f3b80c260a0 in WTF::RunLoop::run() () at ../Source/WTF/wtf/glib/RunLoopGLib.cpp:96
        runLoop = @0x7f3b295f8000: {<WTF::FunctionDispatcher> = {<WTF::ThreadSafeRefCounted<WTF::FunctionDispatcher, (WTF::DestructionThread)0>> = {<WTF::ThreadSafeRefCountedBase> = {m_refCount = {<std::__atomic_base<unsigned int>> = {static _S_alignment = 4, _M_i = 2}, static is_always_lock_free = true}}, <No data fields>}, _vptr.FunctionDispatcher = 0x7f3b80f720d0 <vtable for WTF::RunLoop+16>}, m_functionQueueLock = {static isHeldBit = 1 '\001', static hasParkedBit = 2 '\002', m_byte = {value = {<std::__atomic_base<unsigned char>> = {static _S_alignment = 1, _M_i = 0 '\000'}, static is_always_lock_free = true}}}, m_functionQueue = {m_start = 1, m_end = 1, m_buffer = {<WTF::VectorBufferBase<WTF::Function<void()>, WTF::FastMalloc>> = {m_buffer = 0x7f3b295f6000, m_capacity = 16, m_size = 0}, <No data fields>}}, m_isFunctionDispatchSuspended = false, m_hasSuspendedFunctions = false, m_mainContext = {m_ptr = 0x7f3b0c000b60}, m_mainLoops = {<WTF::VectorBuffer<WTF::GRefPtr<_GMainLoop>, 0, WTF::FastMalloc>> = {<WTF::VectorBufferBase<WTF::GRefPtr<_GMainLoop>, WTF::FastMalloc>> = {m_buffer = 0x7f3b295f7000, m_capacity = 16, m_size = 1}, <No data fields>}, <No data fields>}, m_source = {m_ptr = 0x7f3b0c001d60}}
        mainContext = 0x7f3b0c000b60
        innermostLoop = 0x7f3b0c001d40
        nestedMainLoop = <optimized out>
#19 0x00007f3b80bd90bd in WTF::Function<void ()>::operator()() const (this=<synthetic pointer>) at ../Source/WTF/wtf/Function.h:81
        function = {m_callableWrapper = std::unique_ptr<WTF::Detail::CallableWrapperBase<void>> = {get() = 0x7f3b2990c258}}
#20 0x00007f3b80bd90bd in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7f3b29903e58) at ../Source/WTF/wtf/Threading.cpp:167
        function = {m_callableWrapper = std::unique_ptr<WTF::Detail::CallableWrapperBase<void>> = {get() = 0x7f3b2990c258}}
#21 0x00007f3b80c2764d in WTF::wtfThreadEntryPoint(void*) (context=<optimized out>) at ../Source/WTF/wtf/posix/ThreadingPOSIX.cpp:197
#22 0x00007f3b7f2994d2 in start_thread (arg=<optimized out>) at pthread_create.c:477
        ret = <optimized out>
        pd = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139892072904448, 4951441610445275893, 140729881238750, 140729881238751, 139892072901952, 8396800, -4989601947617213707, -4989438931772652811}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
#23 0x00007f3b817bd563 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb)
Comment 3 Michael Catanzaro 2020-06-28 18:37:43 PDT
(In reply to uwb17174 from comment #2)
> Hi, I was redirected from this Epiphany Browser issue in:
> https://gitlab.gnome.org/GNOME/epiphany/-/issues/1235
> 
> I am using NVidia GeForce GT 610 (binary driver from NVidia) & Intel Core 2
> Duo with X11. Epiphany crashes in the tech preview (3.37.2-90-g6406a3481+),
> but it's working normal in the regular version in Debian Bulleye (3.36.2).

Epiphany version doesn't matter here, only WebKit version. First thing to check: could you try installing libwebkit2gtk-4.0-37 from Debian experimental and see if that introduces the crash? It should be version 2.29.2-1. If so, then we know we have a WebKit regression that can be bisected.
Comment 4 steph 2020-07-14 16:06:09 PDT
Hit this bug on a yelp page on a Flatpak application: https://github.com/getting-things-gnome/gtg/issues/421

Not sure how to get the flatpak version of the webkit2gtk dependency. Can't reproduce with system yelp running on webkit2gtk 2.28.3-1
Comment 5 Enrique Ocaña 2020-10-05 11:20:04 PDT
(In reply to uwb17174 from comment #2)

> #0  0x00007f3b83929718 in
> WebCore::GLContextGLX::createPbufferContext(WebCore::PlatformDisplay&,
> __GLXcontextRec*)
>     (platformDisplay=..., sharingContext=sharingContext@entry=0x0)
>     at ../Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:232
>         fbConfigAttributes = 
>           {32784, 4, 32785, 1, 8, 1, 9, 1, 10, 1, 11, 1, 5, 0, 0}
>         returnedElements = 56
>         display = 0x55d0e47484c0
>         configs = std::unique_ptr<__GLXFBConfigRec *> = {get() = 0x0}
>         pbufferAttributes = {32833, 1, 32832, 1, 0}
>         pbuffer = {m_resource = 1}
>         context = std::unique_ptr<__GLXcontextRec> = {get() = 0x3100000007}

I'm also experiencing a crash in this very same place here, using NVidia proprietary drivers. I've reported it as bug 217323.

In both stacktraces, yours and mine, configs is pointing to null (so 0 elements have been returned by glXChooseFBConfig()) but returnedElements is different from zero. That's because glXChooseFBConfig() has an early return that leaves returnedElements untouched. It still holds its original uninitialized value, a random integer likely different from 0.

Once fixed the crash is gone, but I'm getting a different error, more similar to the one originally reported in this bug and out of the scope of bug 217323:

$ run-minibrowser --gtk http://google.com
libEGL warning: DRI2: failed to authenticate

(WebKitWebProcess:34): Gdk-WARNING **: 11:17:39.044: The program 'WebKitWebProcess' received an X Window System error.
This probably reflects a bug in the program.
The error was '179'.
  (Details: serial 193 error_code 179 request_code 154 (unknown) minor_code 21)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the GDK_SYNCHRONIZE environment
   variable to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)
Comment 6 Philippe Normand 2021-09-29 03:56:41 PDT
Is this still an issue?
Comment 7 Enrique Ocaña 2021-09-29 04:24:39 PDT
Not anymore for me, at least.

This issue disappeared after https://bugs.webkit.org/show_bug.cgi?id=230891 landed. That patch uses the flatpack extension for the Nvidia proprietary drivers (on systems that have them).

Still, I had to install the nvidia flatpak extensions manually in the WebKit flatpak with this command that Phil suggested to me (adapt the path for your case):

  FLATPAK_USER_DIR=$HOME/WebKit/WebKitBuild/UserFlatpak flatpak install --user org.freedesktop.Platform.GL.nvidia-460-91

Later, after considering Patrick's feedback, Phil suggested a new command to install it system-wide and avoid reinstalls every time the WebKit flatpack (UserFlatpak) is regenerated:

  flatpak install --system org.freedesktop.Platform.GL.nvidia-460-91

After this, both MiniBrowser and Epiphany Canary (following instructions from https://base-art.net/Articles/introducing-the-gnome-web-canary-flavor/) worked fine (including HTML5 video) in X11 using the proprietary drivers. They even worked in wayland in an X-Window weston session, something that I couldn't ever get working before.

Phil, thanks for whatever you did to fix this! Now my nvidia laptop has changed from being an expensive paperweight to be a useful machine for upstream developing again. :-)))
Comment 8 Philippe Normand 2021-10-02 01:56:11 PDT
Alright, let's close this. Please re-open if folks still have issues about this :)