[Webkit-unassigned] [Bug 246459] New: Crash in webkitWebViewBaseSnapshot when opening link from external application while Ephy Tech Preview is closed

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Oct 13 07:02:52 PDT 2022


https://bugs.webkit.org/show_bug.cgi?id=246459

            Bug ID: 246459
           Summary: Crash in webkitWebViewBaseSnapshot when opening link
                    from external application while Ephy Tech Preview is
                    closed
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: WebKitGTK
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: mcatanzaro at gnome.org
                CC: bugs-noreply at webkitgtk.org
            Blocks: 210100

Make sure Ephy Tech Preview is closed and is your default browser. Also make sure it is GTK 4 (we have switched it from GTK 3 to GTK 4 again for testing purposes). Click on a link in any application (mail client, feed reader, whatever). For me, Epiphany will crash on startup. Unfortunately, Exalm cannot reproduce this bug, so maybe it's only me. Looks to be related to accelerated compositing mode.

The backtrace:

#0  0x00007fa7f387e8ba in webkitWebViewBaseSnapshot (snapshot=<optimized out>, widget=<optimized out>)
    at /usr/lib/debug/source/sdk/webkit2gtk-5.0.bst/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:742
#1  webkitWebViewBaseSnapshot(GtkWidget*, GtkSnapshot*) (widget=<optimized out>, snapshot=<optimized out>)
    at /usr/lib/debug/source/sdk/webkit2gtk-5.0.bst/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:726
#2  0x00007fa7f75ef598 in gtk_widget_create_render_node (widget=<optimized out>, snapshot=<optimized out>)
    at ../gtk/gtkwidget.c:11606
#3  0x00007fa7f75f231c in gtk_widget_do_snapshot (widget=<optimized out>, snapshot=<optimized out>)
    at ../gtk/gtkwidget.c:11646
#4  0x00007fa7f75ff232 in gtk_widget_snapshot_child
    (widget=<optimized out>, child=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:12067
#5  0x00007fa7f74e3d6b in gtk_overlay_snapshot_child
    (snapshot=<optimized out>, child=<optimized out>, overlay=<optimized out>) at ../gtk/gtkoverlay.c:201
#6  gtk_overlay_snapshot (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkoverlay.c:224
BFD: reopening /usr/lib/debug/usr/lib/x86_64-linux-gnu/libadwaita-1.so.0.debug: No such file or directory

BFD: reopening /usr/lib/debug/usr/lib/x86_64-linux-gnu/libadwaita-1.so.0.debug: No such file or directory

BFD: reopening /usr/lib/debug/usr/lib/x86_64-linux-gnu/libadwaita-1.so.0.debug: No such file or directory

warning: Can't read data for section '.debug_loclists' in file '/usr/lib/debug/usr/lib/x86_64-linux-gnu/libadwaita-1.so.0.debug'
#7  0x00007fa7f75ef18b in gtk_widget_create_render_node (widget=<optimized out>, snapshot=<optimized out>)
    at ../gtk/gtkwidget.c:11611
#8  0x00007fa7f75f231c in gtk_widget_do_snapshot (widget=<optimized out>, snapshot=<optimized out>)
    at ../gtk/gtkwidget.c:11646
#9  0x00007fa7f75ff232 in gtk_widget_snapshot_child
    (widget=<optimized out>, child=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:12067
#10 0x00007fa7f75ff2de in gtk_widget_real_snapshot (widget=<optimized out>, snapshot=<optimized out>)
    at ../gtk/gtkwidget.c:762
#11 0x00007fa7f75ef18b in gtk_widget_create_render_node (widget=<optimized out>, snapshot=<optimized out>)
    at ../gtk/gtkwidget.c:11611
#12 0x00007fa7f75f231c in gtk_widget_do_snapshot (widget=<optimized out>, snapshot=<optimized out>)
    at ../gtk/gtkwidget.c:11646
#13 0x00007fa7f75ff232 in gtk_widget_snapshot_child
    (widget=<optimized out>, child=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:12067
#14 0x00007fa7f75ff2de in gtk_widget_real_snapshot (widget=<optimized out>, snapshot=<optimized out>)
    at ../gtk/gtkwidget.c:762
#15 0x00007fa7f75ef18b in gtk_widget_create_render_node (widget=<optimized out>, snapshot=<optimized out>)
    at ../gtk/gtkwidget.c:11611
#16 0x00007fa7f75f231c in gtk_widget_do_snapshot (widget=<optimized out>, snapshot=<optimized out>)
    at ../gtk/gtkwidget.c:11646
#17 0x00007fa7f75ff232 in gtk_widget_snapshot_child
    (widget=<optimized out>, child=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:12067
#18 0x00007fa7f6c321fc in adw_tab_view_snapshot (widget=<optimized out>, snapshot=<optimized out>)
    at ../src/adw-tab-view.c:1987
#19 0x00007fa7f75ef18b in gtk_widget_create_render_node (widget=<optimized out>, snapshot=<optimized out>)
    at ../gtk/gtkwidget.c:11611
#20 0x00007fa7f75f231c in gtk_widget_do_snapshot (widget=<optimized out>, snapshot=<optimized out>)
    at ../gtk/gtkwidget.c:11646
#21 0x00007fa7f75ff232 in gtk_widget_snapshot_child
    (widget=<optimized out>, child=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:12067
#22 0x00007fa7f75ff2de in gtk_widget_real_snapshot (widget=<optimized out>, snapshot=<optimized out>)
    at ../gtk/gtkwidget.c:762
#23 0x00007fa7f75ef18b in gtk_widget_create_render_node (widget=<optimized out>, snapshot=<optimized out>)
    at ../gtk/gtkwidget.c:11611
#24 0x00007fa7f75f231c in gtk_widget_do_snapshot (widget=<optimized out>, snapshot=<optimized out>)
    at ../gtk/gtkwidget.c:11646
#25 0x00007fa7f75ff232 in gtk_widget_snapshot_child
    (widget=<optimized out>, child=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:12067
#26 0x00007fa7f75ff2de in gtk_widget_real_snapshot (widget=<optimized out>, snapshot=<optimized out>)
--Type <RET> for more, q to quit, c to continue without paging--c
    at ../gtk/gtkwidget.c:762
#27 0x00007fa7f75ef18b in gtk_widget_create_render_node (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:11611
#28 0x00007fa7f75f231c in gtk_widget_do_snapshot (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:11646
#29 0x00007fa7f75ff232 in gtk_widget_snapshot_child (widget=<optimized out>, child=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:12067
#30 0x00007fa7f6c04a90 in adw_flap_snapshot (widget=<optimized out>, snapshot=<optimized out>) at ../src/adw-flap.c:1066
#31 0x00007fa7f75ef598 in gtk_widget_create_render_node (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:11606
#32 0x00007fa7f75f231c in gtk_widget_do_snapshot (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:11646
#33 0x00007fa7f75ff232 in gtk_widget_snapshot_child (widget=<optimized out>, child=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:12067
#34 0x00007fa7f75ff2de in gtk_widget_real_snapshot (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:762
#35 0x00007fa7f75ef18b in gtk_widget_create_render_node (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:11611
#36 0x00007fa7f75f231c in gtk_widget_do_snapshot (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:11646
#37 0x00007fa7f75ff232 in gtk_widget_snapshot_child (widget=<optimized out>, child=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:12067
#38 0x00007fa7f75ff2de in gtk_widget_real_snapshot (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:762
#39 0x00007fa7f75ef598 in gtk_widget_create_render_node (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:11606
#40 0x00007fa7f75f231c in gtk_widget_do_snapshot (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:11646
#41 0x00007fa7f75ff232 in gtk_widget_snapshot_child (widget=<optimized out>, child=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:12067
BFD: reopening /usr/lib/debug/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7400.1.debug: No such file or directory

BFD: reopening /usr/lib/debug/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7400.1.debug: No such file or directory

BFD: reopening /usr/lib/debug/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7400.1.debug: No such file or directory

warning: Can't read data for section '.debug_loclists' in file '/usr/lib/debug/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7400.1.debug'
#42 0x00007fa7f75ff2de in gtk_widget_real_snapshot (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:762
#43 0x00007fa7f75ef18b in gtk_widget_create_render_node (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:11611
#44 0x00007fa7f75f231c in gtk_widget_do_snapshot (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:11646
#45 0x00007fa7f75ff232 in gtk_widget_snapshot_child (widget=<optimized out>, child=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:12067
#46 0x00007fa7f75ff2de in gtk_widget_real_snapshot (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:762
#47 0x00007fa7f75ef598 in gtk_widget_create_render_node (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:11606
#48 0x00007fa7f75f231c in gtk_widget_do_snapshot (widget=<optimized out>, snapshot=<optimized out>) at ../gtk/gtkwidget.c:11646
#49 0x00007fa7f75fe96c in gtk_widget_snapshot (snapshot=<optimized out>, widget=<optimized out>) at ../gtk/gtkwidget.c:11668
#50 gtk_widget_render (widget=<optimized out>, surface=<optimized out>, region=<optimized out>) at ../gtk/gtkwidget.c:11700
#51 0x00007fa7f7606379 in surface_render (surface=<optimized out>, region=<optimized out>, widget=<optimized out>) at ../gtk/gtkwindow.c:4689
BFD: reopening /usr/lib/debug/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.1.debug: No such file or directory

BFD: reopening /usr/lib/debug/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.1.debug: No such file or directory

BFD: reopening /usr/lib/debug/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.1.debug: No such file or directory

warning: Can't read data for section '.debug_loclists' in file '/usr/lib/debug/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.1.debug'
#52 0x00007fa7f770f787 in _gdk_marshal_BOOLEAN__BOXEDv (closure=<optimized out>, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=<optimized out>) at gdk/gdkmarshalers.c:130
#53 0x00007fa7f7e706fa in _g_closure_invoke_va (closure=<optimized out>, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, n_params=<optimized out>, param_types=<optimized out>) at ../gobject/gclosure.c:895
#54 0x00007fa7f7e8b52e in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=<optimized out>) at ../gobject/gsignal.c:3456
#55 0x00007fa7f7e8c2f3 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../gobject/gsignal.c:3606
#56 0x00007fa7f773cce2 in gdk_surface_process_updates_internal (surface=<optimized out>) at ../gdk/gdksurface.c:1334
BFD: reopening /usr/lib/debug/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7400.1.debug: No such file or directory

BFD: reopening /usr/lib/debug/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7400.1.debug: No such file or directory

BFD: reopening /usr/lib/debug/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7400.1.debug: No such file or directory

warning: Can't read data for section '.debug_loclists' in file '/usr/lib/debug/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7400.1.debug'
#57 gdk_surface_paint_on_clock (clock=<optimized out>, data=<optimized out>) at ../gdk/gdksurface.c:1422
#58 0x00007fa7f7e706fa in _g_closure_invoke_va (closure=<optimized out>, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, n_params=<optimized out>, param_types=<optimized out>) at ../gobject/gclosure.c:895
BFD: reopening /usr/lib/debug/usr/lib/x86_64-linux-gnu/libc.so.6.debug: No such file or directory

BFD: reopening /usr/lib/debug/usr/lib/x86_64-linux-gnu/libc.so.6.debug: No such file or directory

BFD: reopening /usr/lib/debug/usr/lib/x86_64-linux-gnu/libc.so.6.debug: No such file or directory

warning: Can't read data for section '.debug_loclists' in file '/usr/lib/debug/usr/lib/x86_64-linux-gnu/libc.so.6.debug'
#59 0x00007fa7f7e8c0ef in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=<optimized out>) at ../gobject/gsignal.c:3456
#60 0x00007fa7f7e8c2f3 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../gobject/gsignal.c:3606
#61 0x00007fa7f772bc6d in _gdk_frame_clock_emit_paint (frame_clock=<optimized out>) at ../gdk/gdkframeclock.c:708
#62 0x00007fa7f772c94e in gdk_frame_clock_paint_idle (data=<optimized out>) at ../gdk/gdkframeclockidle.c:609
#63 0x00007fa7f7d7435f in g_timeout_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>) at ../glib/gmain.c:5007
#64 0x00007fa7f7d73661 in g_main_dispatch (context=<optimized out>) at ../glib/gmain.c:3444
#65 g_main_context_dispatch (context=<optimized out>) at ../glib/gmain.c:4162
#66 0x00007fa7f7d73bb8 in g_main_context_iterate (context=<optimized out>, block=<optimized out>, dispatch=<optimized out>, self=<optimized out>) at ../

The problem is here:

    auto* pageSnapshot = gtk_snapshot_new();
    if (!webViewBase->priv->isBlank) {
        ASSERT(drawingArea->isInAcceleratedCompositingMode());
        webViewBase->priv->acceleratedBackingStore->snapshot(pageSnapshot); <-- this is line 742 for 2.38.0
    }

Shame that's not a release assert.


Referenced Bugs:

https://bugs.webkit.org/show_bug.cgi?id=210100
[Bug 210100] [META][GTK][GTK4] Support GTK4
-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20221013/27f71a7c/attachment-0001.htm>


More information about the webkit-unassigned mailing list