Bug 246459 - [GTK] Crash in webkitWebViewBaseSnapshot when opening link from external application while Ephy Tech Preview is closed
Summary: [GTK] Crash in webkitWebViewBaseSnapshot when opening link from external appl...
Status: RESOLVED DUPLICATE of bug 247463
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKitGTK (show other bugs)
Version: WebKit Nightly Build
Hardware: PC Linux
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks: GTK4
  Show dependency treegraph
 
Reported: 2022-10-13 07:02 PDT by Michael Catanzaro
Modified: 2022-12-01 14:18 PST (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Catanzaro 2022-10-13 07:02:52 PDT
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.
Comment 1 Michael Catanzaro 2022-10-25 14:10:24 PDT

*** This bug has been marked as a duplicate of bug 238343 ***
Comment 2 Michael Catanzaro 2022-12-01 14:18:23 PST

*** This bug has been marked as a duplicate of bug 247463 ***