Bug 162497 - [GTK] _cairo_surface_has_snapshots (surface)' failed in AcceleratedBackingStoreX11::paint
Summary: [GTK] _cairo_surface_has_snapshots (surface)' failed in AcceleratedBackingSto...
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKitGTK (show other bugs)
Version: WebKit Local Build
Hardware: PC Linux
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-09-23 10:34 PDT by john.frankish
Modified: 2017-01-11 00:17 PST (History)
2 users (show)

See Also:


Attachments
CMakeError.log (863 bytes, application/octet-stream)
2016-11-30 20:27 PST, john.frankish
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description john.frankish 2016-09-23 10:34:13 PDT
Ref: https://bugzilla.gnome.org/show_bug.cgi?id=771872

Using epiphany-3.22.0 and webkitgtk-2.14.0

fails with:

epiphany: cairo-surface.c:1652: cairo_surface_mark_dirty_rectangle: Assertion `! _cairo_surface_has_snapshots (surface)' failed.
Aborted

epiphany-3.21.92 and webkitgtk-2.13.2 worked without problems

Program received signal SIGABRT, Aborted.
0x00007fffeb26b7c1 in raise () from /lib/libc.so.6
(gdb) bt full
#0  0x00007fffeb26b7c1 in raise () at /lib/libc.so.6
#1  0x00007fffeb26c6e2 in abort () at /lib/libc.so.6
#2  0x00007fffeb265e83 in __assert_fail () at /lib/libc.so.6
#3  0x00007fffeb265ec7 in __assert_perror_fail () at /lib/libc.so.6
#4  0x00007ffff279c8cb in cairo_surface_mark_dirty_rectangle () at /usr/local/lib/libcairo.so.2
#5  0x00007ffff279d591 in cairo_surface_mark_dirty () at /usr/local/lib/libcairo.so.2
#6  0x00007ffff64c5b7a in WebKit::AcceleratedBackingStoreX11::paint(_cairo*, WebCore::IntRect const&) ()
    at /usr/local/lib/libwebkit2gtk-4.0.so.37
#7  0x00007ffff64b6921 in webkitWebViewBaseDraw(_GtkWidget*, _cairo*) () at /usr/local/lib/libwebkit2gtk-4.0.so.37
#8  0x00007ffff381c701 in gtk_widget_draw_internal () at /usr/local/lib/libgtk-3.so.0
#9  0x00007ffff39d91be in gtk_container_propagate_draw () at /usr/local/lib/libgtk-3.so.0
#10 0x00007ffff39da166 in gtk_container_draw () at /usr/local/lib/libgtk-3.so.0
#11 0x00007ffff381c701 in gtk_widget_draw_internal () at /usr/local/lib/libgtk-3.so.0
#12 0x00007ffff39d91be in gtk_container_propagate_draw () at /usr/local/lib/libgtk-3.so.0
#13 0x00007ffff388a509 in gtk_paned_render () at /usr/local/lib/libgtk-3.so.0
#14 0x00007ffff3981b85 in gtk_css_custom_gadget_draw () at /usr/local/lib/libgtk-3.so.0
#15 0x00007ffff3994963 in gtk_css_gadget_draw () at /usr/local/lib/libgtk-3.so.0
#16 0x00007ffff387c78e in gtk_paned_draw () at /usr/local/lib/libgtk-3.so.0
#17 0x00007ffff381c701 in gtk_widget_draw_internal () at /usr/local/lib/libgtk-3.so.0
#18 0x00007ffff39d91be in gtk_container_propagate_draw () at /usr/local/lib/libgtk-3.so.0
#19 0x00007ffff39da166 in gtk_container_draw () at /usr/local/lib/libgtk-3.so.0
#20 0x00007ffff39be74e in gtk_box_draw_contents () at /usr/local/lib/libgtk-3.so.0
#21 0x00007ffff3981b85 in gtk_css_custom_gadget_draw () at /usr/local/lib/libgtk-3.so.0
---Type <return> to continue, or q <return> to quit---
#22 0x00007ffff3994963 in gtk_css_gadget_draw () at /usr/local/lib/libgtk-3.so.0
#23 0x00007ffff39bf1f2 in gtk_box_draw () at /usr/local/lib/libgtk-3.so.0
#24 0x00007ffff381c701 in gtk_widget_draw_internal () at /usr/local/lib/libgtk-3.so.0
#25 0x00007ffff39d91be in gtk_container_propagate_draw () at /usr/local/lib/libgtk-3.so.0
#26 0x00007ffff38ab7cf in gtk_notebook_draw_stack () at /usr/local/lib/libgtk-3.so.0
#27 0x00007ffff3981b85 in gtk_css_custom_gadget_draw () at /usr/local/lib/libgtk-3.so.0
#28 0x00007ffff3994963 in gtk_css_gadget_draw () at /usr/local/lib/libgtk-3.so.0
#29 0x00007ffff39c280a in gtk_box_gadget_draw () at /usr/local/lib/libgtk-3.so.0
#30 0x00007ffff3994963 in gtk_css_gadget_draw () at /usr/local/lib/libgtk-3.so.0
#31 0x00007ffff38ae55b in gtk_notebook_draw () at /usr/local/lib/libgtk-3.so.0
#32 0x00007ffff381c701 in gtk_widget_draw_internal () at /usr/local/lib/libgtk-3.so.0
#33 0x00007ffff39d91be in gtk_container_propagate_draw () at /usr/local/lib/libgtk-3.so.0
#34 0x00007ffff39da166 in gtk_container_draw () at /usr/local/lib/libgtk-3.so.0
#35 0x00007ffff380772d in gtk_window_draw.lto_priv () at /usr/local/lib/libgtk-3.so.0
#36 0x00007ffff381c701 in gtk_widget_draw_internal () at /usr/local/lib/libgtk-3.so.0
#37 0x00007ffff381d2c9 in gtk_widget_render () at /usr/local/lib/libgtk-3.so.0
#38 0x00007ffff38ce1bb in gtk_main_do_event () at /usr/local/lib/libgtk-3.so.0
#39 0x00007ffff34fd8b7 in _gdk_event_emit () at /usr/local/lib/libgdk-3.so.0
#40 0x00007ffff3507c2b in _gdk_window_process_updates_recurse_helper.lto_priv.323 () at /usr/local/lib/libgdk-3.so.0
#41 0x00007ffff350c266 in gdk_window_process_updates_internal () at /usr/local/lib/libgdk-3.so.0
#42 0x00007ffff350c3ba in gdk_window_process_updates_with_mode.lto_priv () at /usr/local/lib/libgdk-3.so.0
#43 0x00007fffecd775eb in g_closure_invoke () at /usr/local/lib/libgobject-2.0.so.0
#44 0x00007fffecd7b931 in signal_emit_unlocked_R.lto_priv.242 () at /usr/local/lib/libgobject-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#45 0x00007fffecd63201 in g_signal_emit_valist () at /usr/local/lib/libgobject-2.0.so.0
#46 0x00007fffecd7bda9 in g_signal_emit () at /usr/local/lib/libgobject-2.0.so.0
#47 0x00007ffff350606a in gdk_frame_clock_paint_idle () at /usr/local/lib/libgdk-3.so.0
#48 0x00007ffff351e046 in gdk_threads_dispatch () at /usr/local/lib/libgdk-3.so.0
#49 0x00007fffec69cbec in g_timeout_dispatch () at /usr/local/lib/libglib-2.0.so.0
#50 0x00007fffec69e52b in g_main_context_dispatch () at /usr/local/lib/libglib-2.0.so.0
#51 0x00007fffec6ae60e in g_main_context_iterate.isra.42.lto_priv () at /usr/local/lib/libglib-2.0.so.0
#52 0x00007fffec69cd7a in g_main_context_iteration () at /usr/local/lib/libglib-2.0.so.0
#53 0x00007fffedcd93ff in g_application_run () at /usr/local/lib/libgio-2.0.so.0
#54 0x0000000000432fb5 in main ()
(gdb)
Comment 1 Michael Catanzaro 2016-11-28 04:42:08 PST
It would be useful to have a better-quality backtrace here. I guess you're building WebKit manually as I see it's installed into /usr/local. You can pass -DCMAKE_BUILD_TYPE=RelWithDebInfo to get debug info.
Comment 2 john.frankish 2016-11-28 09:33:15 PST
I tried, but the build fails with:

[ 97%] Linking CXX shared library ../../lib/libwebkit2gtk-4.0.so
collect2: error: ld returned 1 exit status
make[2]: *** [Source/WebKit2/CMakeFiles/WebKit2.dir/build.make:19448: lib/libwebkit2gtk-4.0.so.37.14.9] Error 1
make[1]: *** [CMakeFiles/Makefile2:1534: Source/WebKit2/CMakeFiles/WebKit2.dir/all] Error 2
make: *** [Makefile:150: all] Error 2
Command exited with non-zero status 2

Using:

cmake -DCMAKE_C_FLAGS="-mtune=generic -Os -pipe" -DCMAKE_CXX_FLAGS="-mtune=generic -Os -pipe" -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_INSTALL_LIBDIR=/usr/local/lib -DCMAKE_INSTALL_LIBEXECDIR=/usr/local/lib -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_SKIP_RPATH=ON -DENABLE_ACCELERATED_2D_CANVAS=OFF -DUSE_LD_GOLD=OFF -DENABLE_MINIBROWSER=ON -DUSE_LIBHYPHEN=OFF -DPORT=GTK -Wno-dev ../

find . -name CMakeCache.txt -type f -exec sed -i 's/-O2//g' {} \;
find . -name CMakeCache.txt -type f -exec sed -i 's/-O3//g' {} \;

CC="gcc -flto -fuse-linker-plugin" CXX="g++ -flto -fuse-linker-plugin" -j5

Note that the same thing, but with -DCMAKE_BUILD_TYPE=Release works
Comment 3 john.frankish 2016-11-29 20:10:42 PST
How do you make the wegkitgtk build show more detailed error messages?

Is a file produced containing the error details?
Comment 4 john.frankish 2016-11-30 00:58:36 PST
I got webkitgtk to compile with "-DCMAKE_BUILD_TYPE=RelWithDebInfo", but the gdb backtrace is the same...
Comment 5 Michael Catanzaro 2016-11-30 09:50:34 PST
(In reply to comment #3)
> How do you make the wegkitgtk build show more detailed error messages?
> 
> Is a file produced containing the error details?

The detail we need is just a better stacktrace for this crash.

(In reply to comment #4)
> I got webkitgtk to compile with "-DCMAKE_BUILD_TYPE=RelWithDebInfo", but the
> gdb backtrace is the same...

You don't see any debuginfo when you run 'bt full', really? I don't know why that would be. Are you sure you didn't accidentally run 'bt' without the 'full'?
Comment 6 john.frankish 2016-11-30 20:27:38 PST
Created attachment 295813 [details]
CMakeError.log
Comment 7 john.frankish 2016-11-30 20:28:23 PST
I double-checked and found that with "bt full" I got this:

(gdb) bt full
#0  0x00007fffeae1fbb4 in raise () from /lib/libc.so.6
No symbol table info available.

I usually compile with "-g" removed and -flto, but if I leave "-g" in place and compile webkitgtk with "-DCMAKE_BUILD_TYPE=RelWithDebInfo", it fails with this the error below (see also CMakeError.log attached)

If I remove "-g" then webkitgtk compiles with "-DCMAKE_BUILD_TYPE=RelWithDebInfo" without problems, but I guess I need "-g" to get the symbol table info.

----------

cmake -DCMAKE_C_FLAGS="-mtune=generic -Os -pipe" -DCMAKE_CXX_FLAGS="-mtune=generic -Os -pipe" -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_INSTALL_LIBDIR=/usr/local/lib -DCMAKE_INSTALL_LIBEXECDIR=/usr/local/lib -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_SKIP_RPATH=ON -DENABLE_ACCELERATED_2D_CANVAS=OFF -DUSE_LD_GOLD=OFF -DENABLE_MINIBROWSER=ON -DUSE_LIBHYPHEN=OFF -DPORT=GTK -DUSE_SYSTEM_MALLOC=ON -DENABLE_GLES2=ON -Wno-dev ../

find . -name CMakeCache.txt -type f -exec sed -i 's/-O2//g' {} \;
find . -name CMakeCache.txt -type f -exec sed -i 's/-O3//g' {} \;

time make CC="gcc -flto -fuse-linker-plugin" CXX="g++ -flto -fuse-linker-plugin" -j5
...
collect2: error: ld returned 1 exit status
make[2]: *** [Source/WebKit2/CMakeFiles/WebKit2.dir/build.make:19447: lib/libwebkit2gtk-4.0.so.37.14.9] Error 1
make[2]: Leaving directory '/usr/src/webkitgtk-2.14.2/build'
make[1]: *** [CMakeFiles/Makefile2:1460: Source/WebKit2/CMakeFiles/WebKit2.dir/all] Error 2
make[1]: Leaving directory '/usr/src/webkitgtk-2.14.2/build'
make: *** [Makefile:150: all] Error 2
Command exited with non-zero status 2
Comment 8 Michael Catanzaro 2016-12-01 05:41:44 PST
Yes, if you remove -g then of course there will be no debuginfo at all. Don't do that. :) I suspect your build is failing because of one of your custom flags, try getting rid of all the custom stuff and just running a nice simple:

cmake -DPORT=GTK -DCMAKE_BUILD_TYPE=RelWithDebInfo
time make -j5

That might also "fix" this bug, who knows....
Comment 9 john.frankish 2016-12-02 07:01:28 PST
hopefully this is enough:

#4  0x00007ffff14548cb in cairo_surface_mark_dirty_rectangle () from /usr/local/lib/libcairo.so.2
No symbol table info available.
#5  0x00007ffff1455591 in cairo_surface_mark_dirty () from /usr/local/lib/libcairo.so.2
No symbol table info available.
#6  0x00007ffff57c74a8 in WebKit::AcceleratedBackingStoreX11::paint (this=this@entry=0xae6bf0, cr=cr@entry=0xb4fc00, 
    clipRect=...) at /mnt/sdc8/usr/src/webkitgtk-2.14.2/Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreX11.cpp:178
No locals.
#7  0x00007ffff57ad7ed in webkitWebViewBaseDraw (widget=0xacac10, cr=0xb4fc00)
    at /mnt/sdc8/usr/src/webkitgtk-2.14.2/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:543
---Type <return> to continue, or q <return> to quit---
        webViewBase = <optimized out>
        clipRect = {x = 0, y = 0, width = 1366, height = 694}
#8  0x00007ffff24d5701 in ?? () from /usr/local/lib/libgtk-3.so.0
No symbol table info available.
Comment 10 Michael Catanzaro 2016-12-02 08:21:11 PST
No, please post the full backtrace showing local variables for the entire stack, same as we expect from all other bug reports.
Comment 11 john.frankish 2016-12-02 09:03:35 PST
The full read out is at the start of the bug report.

How do you show the local variables?
Comment 12 Michael Catanzaro 2016-12-02 09:26:46 PST
(In reply to comment #11)
> The full read out is at the start of the bug report.
> 
> How do you show the local variables?

'bt full' just like you showed there... in the first comment you have a backtrace without any line numbers or local variables, in this last comment you have a partial backtrace with local variables 

Maybe it would be better to show you what we expect. Something like this:

https://bugzilla.redhat.com/attachment.cgi?id=1219931

We don't usually need all threads, just one is usually enough, and we don't need all the library state at the bottom, just the output of 'bt full'. But that needs to be a complete stacktrace of the crashing thread from the top frame down to the bottom one. You need this every time you report a C/C++ crash to the developers of any application; there's nothing WebKit-specific about this. Most distros make this easy; in Fedora gdb tells you run a 'dnf debuginfo-install' command, you wait two minutes for the debuginfo to be installed, and then you get the stacktrace again. If you're building everything yourself in /usr/local with no debuginfo then consequently you've got to rebuild everything in the stack with -g to get the debuginfo.
Comment 13 john.frankish 2016-12-03 00:23:10 PST
So, after recompiling glibc-2.24, glib-2.50.0, cairo-1.14.2 and gtk+-3.22.0

epiphany: cairo-surface.c:1652: cairo_surface_mark_dirty_rectangle: Assertion `! _cairo_surface_has_snapshots (surface)' failed.

Thread 1 "epiphany" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58
58      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.

(gdb) bt full
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58
        set = {__val = {0, 140737117909758, 140737488344104, 140737117070549, 140737415839744, 12925552, 
            12925653, 12925552, 12925552, 12925681, 12925852, 12925552, 12925852, 0, 0, 0}}
        pid = <optimized out>
        tid = <optimized out>
        ret = 0
#1  0x00007fffe9dbcaac in __GI_abort () at abort.c:89
        save_stage = 2
        act = {__sigaction_handler = {sa_handler = 0x674, sa_sigaction = 0x674}, sa_mask = {__val = {
              140737488344080, 47244640256, 140737488344128, 0, 4, 1056, 21474836480, 140737117909758, 
              140737117935504, 140737117909747, 0, 0, 140737117909747, 140737354002432, 140737240800308, 
              140737240799872}}, sa_flags = 510, sa_restorer = 0x0}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x00007fffe9db6205 in __assert_fail_base (fmt=<optimized out>, 
    assertion=assertion@entry=0x7ffff13e9a80 "! _cairo_surface_has_snapshots (surface)", 
    file=file@entry=0x7ffff13e9c34 "cairo-surface.c", line=line@entry=1652, 
    function=function@entry=0x7ffff13e9f40 <__PRETTY_FUNCTION__.11221> "cairo_surface_mark_dirty_rectangle")
    at assert.c:92
        str = 0xc53bb0 "epiphany: cairo-surface.c:1652: cairo_surface_mark_dirty_rectangle: Assertion `! _cairo_surface_has_snapshots (surface)' failed.\n"
        total = 4096
#3  0x00007fffe9db6249 in __GI___assert_fail (
    assertion=0x7ffff13e9a80 "! _cairo_surface_has_snapshots (surface)", 
    file=0x7ffff13e9c34 "cairo-surface.c", line=1652, 
    function=0x7ffff13e9f40 <__PRETTY_FUNCTION__.11221> "cairo_surface_mark_dirty_rectangle") at assert.c:101
No locals.
#4  0x00007ffff136ccd9 in cairo_surface_mark_dirty_rectangle () from /usr/local/lib/libcairo.so.2
No symbol table info available.
#5  0x00007ffff136cd15 in cairo_surface_mark_dirty () from /usr/local/lib/libcairo.so.2
No symbol table info available.
#6  0x00007ffff57c74a8 in WebKit::AcceleratedBackingStoreX11::paint (this=this@entry=0xab5500, 
    cr=cr@entry=0xb09900, clipRect=...)
    at /mnt/sdc8/usr/src/webkitgtk-2.14.2/Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreX11.cpp:178
No locals.
#7  0x00007ffff57ad7ed in webkitWebViewBaseDraw (widget=0xa9a7f0, cr=0xb09900)
    at /mnt/sdc8/usr/src/webkitgtk-2.14.2/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:543
        webViewBase = <optimized out>
        clipRect = {x = 0, y = 0, width = 610, height = 510}
#8  0x00007ffff244be3c in gtk_widget_draw_internal (widget=<optimized out>, cr=<optimized out>, 
    clip_to_size=<optimized out>, cr=<optimized out>, widget=<optimized out>) at gtkwidget.c:7015
        event_window = <optimized out>
        result = 1072693248
        push_group = <optimized out>
        cr = 0xb09900
        widget = 0xa9a7f0
        __func__ = "gtk_widget_draw_internal"
#9  0x00007ffff2658068 in gtk_container_propagate_draw (container=container@entry=0xa0b2a0, child=0xa9a7f0, 
    cr=cr@entry=0xb09900) at gtkcontainer.c:3838
        allocation = <optimized out>
        w = 0xb494c0
        x = 0
        y = 0
        __func__ = "gtk_container_propagate_draw"
#10 0x00007ffff265944a in gtk_container_draw (widget=0xa0b2a0, cr=0xb09900) at gtkcontainer.c:3658
        container = 0xa0b2a0
        child_infos = 0xc4a980
        i = 0
        child_info = <optimized out>
        data = {container = 0xa0b2a0, child_infos = 0xc4a980, cr = 0xb09900}
#11 0x00007ffff244be3c in gtk_widget_draw_internal (widget=<optimized out>, cr=<optimized out>, 
    clip_to_size=<optimized out>, cr=<optimized out>, widget=<optimized out>) at gtkwidget.c:7015
        event_window = <optimized out>
        result = 1072693248
        push_group = <optimized out>
        cr = 0xb09900
        widget = 0xa0b2a0
        __func__ = "gtk_widget_draw_internal"
#12 0x00007ffff2658068 in gtk_container_propagate_draw (container=<optimized out>, child=0xa0b2a0, cr=0xb09900)
    at gtkcontainer.c:3838
        allocation = <optimized out>
        w = 0x709340
        x = 0
        y = 0
        __func__ = "gtk_container_propagate_draw"
#13 0x00007ffff250f2d0 in gtk_paned_render (gadget=<optimized out>, cr=0xb09900, x=<optimized out>, 
    y=<optimized out>, width=<optimized out>, height=<optimized out>, data=0x0) at gtkpaned.c:1818
        priv = 0xabb050
        widget_allocation = {x = 0, y = 46, width = 610, height = 510}
        window_x = 0
        window_y = 46
#14 0x00007ffff265022d in gtk_css_custom_gadget_draw (gadget=<optimized out>, cr=<optimized out>, 
    x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>, 
    height=<optimized out>, width=<optimized out>, y=<optimized out>, x=<optimized out>, cr=<optimized out>, 
    gadget=<optimized out>) at gtkcsscustomgadget.c:159
No locals.
#15 0x00007ffff25ecff0 in gtk_css_gadget_draw (gadget=0xaa82a0, cr=0xb09900) at gtkcssgadget.c:877
        margin = {left = 0, right = 0, top = 0, bottom = 0}
        border = {left = 0, right = 0, top = 0, bottom = 0}
        padding = {left = 0, right = 0, top = 0, bottom = 0}
        draw_focus = 0
        x = 0
        y = 0
        width = 610
        height = 510
        contents_x = 0
        contents_y = 0
        contents_width = 610
        contents_height = 510
        margin_box = {x = 0, y = 0, width = 610, height = 510}
        __func__ = "gtk_css_gadget_draw"
#16 0x00007ffff2501951 in gtk_paned_draw (widget=<optimized out>, cr=<optimized out>) at gtkpaned.c:1782
No locals.
#17 0x00007ffff244be3c in gtk_widget_draw_internal (widget=<optimized out>, cr=<optimized out>, 
    clip_to_size=<optimized out>, cr=<optimized out>, widget=<optimized out>) at gtkwidget.c:7015
        event_window = <optimized out>
        result = 1072693248
        push_group = <optimized out>
        cr = 0xb09900
        widget = 0xabb200
        __func__ = "gtk_widget_draw_internal"
#18 0x00007ffff2658068 in gtk_container_propagate_draw (container=container@entry=0xa346a0, child=0xabb200, 
    cr=cr@entry=0xb09900) at gtkcontainer.c:3838
        allocation = <optimized out>
        w = 0x709340
        x = 0
        y = 0
        __func__ = "gtk_container_propagate_draw"
#19 0x00007ffff265944a in gtk_container_draw (widget=0xa346a0, cr=0xb09900) at gtkcontainer.c:3658
        container = 0xa346a0
        child_infos = 0xac5300
        i = 2
        child_info = <optimized out>
        data = {container = 0xa346a0, child_infos = 0xac5300, cr = 0xb09900}
#20 0x00007ffff2607a7d in gtk_box_draw_contents (gadget=<optimized out>, cr=<optimized out>, 
    x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>, unused=0x0)
    at gtkbox.c:448
No locals.
#21 0x00007ffff265022d in gtk_css_custom_gadget_draw (gadget=<optimized out>, cr=<optimized out>, 
    x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>, 
    height=<optimized out>, width=<optimized out>, y=<optimized out>, x=<optimized out>, cr=<optimized out>, 
    gadget=<optimized out>) at gtkcsscustomgadget.c:159
No locals.
#22 0x00007ffff25ecff0 in gtk_css_gadget_draw (gadget=0xa9ce00, cr=0xb09900) at gtkcssgadget.c:877
        margin = {left = 0, right = 0, top = 0, bottom = 0}
        border = {left = 0, right = 0, top = 0, bottom = 0}
        padding = {left = 0, right = 0, top = 0, bottom = 0}
        draw_focus = 0
        x = 0
        y = 0
        width = 610
        height = 510
        contents_x = 0
        contents_y = 0
        contents_width = 610
        contents_height = 510
        margin_box = {x = 0, y = 0, width = 610, height = 510}
        __func__ = "gtk_css_gadget_draw"
#23 0x00007ffff2608721 in gtk_box_draw (widget=<optimized out>, cr=<optimized out>) at gtkbox.c:457
No locals.
#24 0x00007ffff244be3c in gtk_widget_draw_internal (widget=<optimized out>, cr=<optimized out>, 
    clip_to_size=<optimized out>, cr=<optimized out>, widget=<optimized out>) at gtkwidget.c:7015
        event_window = <optimized out>
        result = 1072693248
        push_group = <optimized out>
        cr = 0xb09900
        widget = 0xa346a0
        __func__ = "gtk_widget_draw_internal"
#25 0x00007ffff2658068 in gtk_container_propagate_draw (container=<optimized out>, child=0xa346a0, cr=0xb09900)
    at gtkcontainer.c:3838
        allocation = <optimized out>
        w = 0x709340
        x = 0
        y = 0
        __func__ = "gtk_container_propagate_draw"
#26 0x00007ffff250f0f0 in gtk_notebook_draw_stack.lto_priv.1020 (gadget=<optimized out>, cr=0xb09900, 
    x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>, unused=0x0)
    at gtknotebook.c:2511
        priv = 0x928020
#27 0x00007ffff265022d in gtk_css_custom_gadget_draw (gadget=<optimized out>, cr=<optimized out>, 
    x=<optimized out>, y=<optimized out>, width=<optimized out>, height=<optimized out>, 
    height=<optimized out>, width=<optimized out>, y=<optimized out>, x=<optimized out>, cr=<optimized out>, 
    gadget=<optimized out>) at gtkcsscustomgadget.c:159
No locals.
#28 0x00007ffff25ecff0 in gtk_css_gadget_draw (gadget=0x79aae0, cr=0xb09900) at gtkcssgadget.c:877
        margin = {left = 0, right = 0, top = 0, bottom = 0}
        border = {left = 0, right = 0, top = 0, bottom = 0}
        padding = {left = 0, right = 0, top = 0, bottom = 0}
        draw_focus = 0
        x = 0
        y = 0
        width = 610
        height = 510
        contents_x = 0
        contents_y = 0
        contents_width = 610
        contents_height = 510
        margin_box = {x = 0, y = 0, width = 610, height = 510}
        __func__ = "gtk_css_gadget_draw"
#29 0x00007ffff260cb44 in gtk_box_gadget_draw (gadget=<optimized out>, cr=0xb09900, x=<optimized out>, 
    y=<optimized out>, width=<optimized out>, height=<optimized out>) at gtkboxgadget.c:512
        draw_index = <optimized out>
        child = <optimized out>
        i = 0
#30 0x00007ffff25ecff0 in gtk_css_gadget_draw (gadget=0x983a80, cr=0xb09900) at gtkcssgadget.c:877
        margin = {left = 0, right = 0, top = 0, bottom = 0}
        border = {left = 0, right = 0, top = 0, bottom = 0}
        padding = {left = 0, right = 0, top = 0, bottom = 0}
        draw_focus = 0
        x = 0
        y = 0
        width = 610
        height = 510
        contents_x = 0
        contents_y = 0
        contents_width = 610
        contents_height = 510
        margin_box = {x = 0, y = 0, width = 610, height = 510}
        __func__ = "gtk_css_gadget_draw"
#31 0x00007ffff250f35c in gtk_notebook_draw.lto_priv.1029 (widget=<optimized out>, cr=0xb09900)
    at gtknotebook.c:2526
        notebook = <optimized out>
        priv = 0x928020
#32 0x00007ffff244be3c in gtk_widget_draw_internal (widget=<optimized out>, cr=<optimized out>, 
    clip_to_size=<optimized out>, cr=<optimized out>, widget=<optimized out>) at gtkwidget.c:7015
        event_window = <optimized out>
        result = 1072693248
        push_group = <optimized out>
        cr = 0xb09900
        widget = 0x928220
        __func__ = "gtk_widget_draw_internal"
#33 0x00007ffff2658068 in gtk_container_propagate_draw (container=container@entry=0x91e340, child=0x928220, 
    cr=cr@entry=0xb09900) at gtkcontainer.c:3838
        allocation = <optimized out>
        w = 0x709340
        x = 0
        y = 46
        __func__ = "gtk_container_propagate_draw"
#34 0x00007ffff265944a in gtk_container_draw (widget=0x91e340, cr=0xb09900) at gtkcontainer.c:3658
        container = 0x91e340
        child_infos = 0xc4acc0
        i = 0
        child_info = <optimized out>
        data = {container = 0x91e340, child_infos = 0xc4acc0, cr = 0xb09900}
#35 0x00007ffff24161b1 in gtk_window_draw.lto_priv.422 (widget=0x91e340, cr=0xb09900) at gtkwindow.c:10225
        priv = <optimized out>
        context = 0x9b2540
        ret = 0
        allocation = <optimized out>
        window_border = {left = 0, right = 0, top = 0, bottom = 0}
        title_height = <optimized out>
#36 0x00007ffff244be3c in gtk_widget_draw_internal (widget=<optimized out>, cr=<optimized out>, 
    clip_to_size=<optimized out>, cr=<optimized out>, widget=<optimized out>) at gtkwidget.c:7015
        event_window = <optimized out>
        result = 1072693248
        push_group = <optimized out>
        cr = 0xb09900
        widget = 0x91e340
        __func__ = "gtk_widget_draw_internal"
#37 0x00007ffff244c2e3 in gtk_widget_render (widget=0x91e340, window=0x709340, region=<optimized out>)
    at gtkwidget.c:17499
        context = 0xc4a8c0
        do_clip = 1
        cr = 0xb09900
        x = 0
        y = 0
        is_double_buffered = <optimized out>
#38 0x00007ffff2545134 in gtk_main_do_event (event=<optimized out>) at gtkmain.c:1807
        event_widget = 0x91e340
        grab_widget = 0x91e340
        topmost_widget = <optimized out>
        window_group = 0x7e1310
        rewritten_event = <optimized out>
        device = 0x0
        tmp_list = <optimized out>
        __func__ = "gtk_main_do_event"
#39 0x00007ffff2108e93 in _gdk_event_emit (event=<optimized out>, event=<optimized out>) at gdkevents.c:73
        event = 0x7fffffffe320
#40 0x00007ffff2105ce1 in _gdk_window_process_updates_recurse_helper.lto_priv.314 (window=0x709340, 
    expose_region=<optimized out>) at gdkwindow.c:3829
        event = {type = GDK_EXPOSE, any = {type = GDK_EXPOSE, window = 0x709340, send_event = 0 '\000'}, 
          expose = {type = GDK_EXPOSE, window = 0x709340, send_event = 0 '\000', area = {x = 0, y = 0, 
              width = 610, height = 556}, region = 0xb4d8e0, count = 0}, visibility = {type = GDK_EXPOSE, 
            window = 0x709340, send_event = 0 '\000', state = GDK_VISIBILITY_UNOBSCURED}, motion = {
            type = GDK_EXPOSE, window = 0x709340, send_event = 0 '\000', time = 0, 
            x = 1.2944174324888161e-311, y = 2.7470049908773308e-321, axes = 0xb4d8e0, state = 0, is_hint = 0, 
            device = 0x7ffff2126c00 <gdk_x11_window_invalidate_for_new_frame+32>, 
            x_root = 6.9533558075006207e-310, y_root = 6.9533374656630703e-310}, button = {type = GDK_EXPOSE, 
            window = 0x709340, send_event = 0 '\000', time = 0, x = 1.2944174324888161e-311, 
            y = 2.7470049908773308e-321, axes = 0xb4d8e0, state = 0, button = 0, 
            device = 0x7ffff2126c00 <gdk_x11_window_invalidate_for_new_frame+32>, 
            x_root = 6.9533558075006207e-310, y_root = 6.9533374656630703e-310}, touch = {type = GDK_EXPOSE, 
            window = 0x709340, send_event = 0 '\000', time = 0, x = 1.2944174324888161e-311, 
            y = 2.7470049908773308e-321, axes = 0xb4d8e0, state = 0, 
            sequence = 0x7ffff2126c00 <gdk_x11_window_invalidate_for_new_frame+32>, emulating_pointer = -6768, 
            device = 0x7fffe9df2de3 <__GI___libc_malloc+133>, x_root = 5.6377158917666299e-317, y_root = 0}, 
          scroll = {type = GDK_EXPOSE, window = 0x709340, send_event = 0 '\000', time = 0, 
            x = 1.2944174324888161e-311, y = 2.7470049908773308e-321, state = 11852000, 
            direction = GDK_SCROLL_UP, device = 0x0, x_root = 6.9533442628188703e-310, 
            y_root = 6.9533558075006207e-310, delta_x = 6.9533374656630703e-310, 
            delta_y = 5.6377158917666299e-317, is_stop = 0}, key = {type = GDK_EXPOSE, window = 0x709340, 
            send_event = 0 '\000', time = 0, state = 0, keyval = 610, length = 556, string = 0xb4d8e0 "\002", 
            hardware_keycode = 0, group = 0 '\000', is_modifier = 0}, crossing = {type = GDK_EXPOSE, 
            window = 0x709340, send_event = 0 '\000', subwindow = 0x26200000000, time = 556, 
            x = 5.855666034510454e-317, y = 0, x_root = 6.9533442628188703e-310, 
            y_root = 6.9533558075006207e-310, mode = 3923717603, detail = 32767, focus = 11410864, state = 0},
          focus_change = {type = GDK_EXPOSE, window = 0x709340, send_event = 0 '\000', in = 111}, configure = {
            type = GDK_EXPOSE, window = 0x709340, send_event = 0 '\000', x = 0, y = 0, width = 610, 
            height = 556}, property = {type = GDK_EXPOSE, window = 0x709340, send_event = 0 '\000', 
            atom = 0x26200000000, time = 556, state = 0}, selection = {type = GDK_EXPOSE, window = 0x709340, 
            send_event = 0 '\000', selection = 0x26200000000, target = 0x22c, property = 0xb4d8e0, time = 0, 
            requestor = 0x7ffff2126c00 <gdk_x11_window_invalidate_for_new_frame+32>}, owner_change = {
            type = GDK_EXPOSE, window = 0x709340, send_event = 0 '\000', owner = 0x26200000000, 
            reason = (unknown: 556), selection = 0xb4d8e0, time = 0, selection_time = 0}, proximity = {
            type = GDK_EXPOSE, window = 0x709340, send_event = 0 '\000', time = 0, device = 0x26200000000}, 
          dnd = {type = GDK_EXPOSE, window = 0x709340, send_event = 0 '\000', context = 0x26200000000, 
            time = 556, x_root = 0, y_root = 0}, window_state = {type = GDK_EXPOSE, window = 0x709340, 
            send_event = 0 '\000', changed_mask = (unknown: 0), new_window_state = (unknown: 0)}, setting = {
            type = GDK_EXPOSE, window = 0x709340, send_event = 0 '\000', action = GDK_SETTING_ACTION_NEW, 
            name = 0x26200000000 <error: Cannot access memory at address 0x26200000000>}, grab_broken = {
            type = GDK_EXPOSE, window = 0x709340, send_event = 0 '\000', keyboard = 0, implicit = 0, 
            grab_window = 0x22c}, touchpad_swipe = {type = GDK_EXPOSE, window = 0x709340, 
            send_event = 0 '\000', phase = 114 'r', n_fingers = 111 'o', time = 0, 
            x = 1.2944174324888161e-311, y = 2.7470049908773308e-321, dx = 5.855666034510454e-317, dy = 0, 
            x_root = 6.9533442628188703e-310, y_root = 6.9533558075006207e-310, state = 3923717603}, 
          touchpad_pinch = {type = GDK_EXPOSE, window = 0x709340, send_event = 0 '\000', phase = 114 'r', 
            n_fingers = 111 'o', time = 0, x = 1.2944174324888161e-311, y = 2.7470049908773308e-321, 
            dx = 5.855666034510454e-317, dy = 0, angle_delta = 6.9533442628188703e-310, 
            scale = 6.9533558075006207e-310, x_root = 6.9533374656630703e-310, 
            y_root = 5.6377158917666299e-317, state = 0}, pad_button = {type = GDK_EXPOSE, window = 0x709340, 
            send_event = 0 '\000', time = 0, group = 0, button = 610, mode = 556}, pad_axis = {
            type = GDK_EXPOSE, window = 0x709340, send_event = 0 '\000', time = 0, group = 0, index = 610, 
            mode = 556, value = 5.855666034510454e-317}, pad_group_mode = {type = GDK_EXPOSE, 
            window = 0x709340, send_event = 0 '\000', time = 0, group = 0, mode = 610}}
        child = <optimized out>
        clipped_expose_region = 0xb4d8e0
        children = <optimized out>
        i = <optimized out>
        n_children = <optimized out>
        l = <optimized out>
        last_link = <optimized out>
#41 0x00007ffff2107c06 in gdk_window_process_updates_internal (window=0x709340) at gdkwindow.c:3975
        expose_region = 0xae1db0
        impl_class = 0x703070
        toplevel = <optimized out>
        display = <optimized out>
        __func__ = "gdk_window_process_updates_internal"
#42 0x00007ffff2107e0c in gdk_window_process_updates_with_mode.lto_priv.315 (window=<optimized out>, 
    recurse_mode=<optimized out>) at gdkwindow.c:4172
        impl_window = 0x709340
        list = 0x85dcc0
        i = <optimized out>
        __func__ = "gdk_window_process_updates_with_mode"
#43 0x00007fffeb4e4cf5 in g_closure_invoke (closure=0xb41870, return_value=0x0, n_param_values=1, 
    param_values=0x7fffffffe5f0, invocation_hint=0x7fffffffe590) at gclosure.c:804
        marshal = <optimized out>
        marshal_data = <optimized out>
        in_marshal = 0
        real_closure = 0xb41850
        __func__ = "g_closure_invoke"
#44 0x00007fffeb4d6e12 in signal_emit_unlocked_R.lto_priv.226 (node=<optimized out>, detail=0, 
    instance=0x720230, emission_return=0x0, instance_and_params=0x7fffffffe5f0) at gsignal.c:3635
        tmp = <optimized out>
        handler = 0xb19ac0
        accumulator = 0x0
        emission = {next = 0x0, instance = 0x720230, ihint = {signal_id = 32, detail = 0, 
            run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 4}
        handler_list = 0xb19ac0
        return_accu = 0x0
        accu = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, 
              v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, 
              v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
        signal_id = 32
        max_sequential_handler_number = 2443
        return_value_altered = 0
#45 0x00007fffeb4df0ea in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, 
    detail=<optimized out>, var_args=<optimized out>) at gsignal.c:3391
        instance_and_params = 0x7fffffffe5f0
        signal_return_type = <optimized out>
        param_values = 0x7fffffffe608
        i = <optimized out>
        n_params = <optimized out>
        __func__ = "g_signal_emit_valist"
#46 0x00007fffeb4fab0f in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, 
    detail=<optimized out>) at gsignal.c:3447
        var_args = <error reading variable var_args (Attempt to dereference a generic pointer.)>
#47 0x00007ffff210d75b in _gdk_frame_clock_emit_paint (frame_clock=0x720230) at gdkframeclock.c:640
No locals.
#48 gdk_frame_clock_paint_idle (data=0x720230) at gdkframeclockidle.c:430
        clock = 0x720230
        clock_idle = 0x720230
        priv = 0x720150
        skip_to_resume_events = 0
        timings = 0xb12e40
        __func__ = "gdk_frame_clock_paint_idle"
#49 0x00007ffff21286b8 in gdk_threads_dispatch (data=0x857cc0, 
    data@entry=<error reading variable: value has been optimized out>) at gdk.c:743
        dispatch = 0x857cc0
        ret = 0
#50 0x00007fffeb017ef3 in g_timeout_dispatch (source=<optimized out>, callback=<optimized out>, 
    user_data=<optimized out>) at gmain.c:4672
        timeout_source = 0xae1c50
        again = <optimized out>
#51 0x00007fffeb01a1f2 in g_main_dispatch (context=0x717000) at gmain.c:3201
        dispatch = 0x7fffeb017ee0 <g_timeout_dispatch>
        prev_source = 0x0
        was_in_call = 0
        user_data = 0x857cc0
        callback = 0x7ffff2128690 <gdk_threads_dispatch>
        cb_funcs = <optimized out>
        cb_data = 0xc51ea0
        need_destroy = <optimized out>
        source = 0xae1c50
        current = 0x750b20
        i = 0
#52 g_main_context_dispatch (context=0x717000) at gmain.c:3854
No locals.
#53 0x00007fffeb00e4e8 in g_main_context_iterate.isra.42.lto_priv.118 (context=0x717000, 
    block=<optimized out>, dispatch=1) at gmain.c:3927
        max_priority = 2147483647
        timeout = 13
        some_ready = 1
        nfds = 5
        allocated_nfds = 5
        fds = <optimized out>
#54 0x00007fffeb01812c in g_main_context_iteration (context=0x717000, may_block=1) at gmain.c:3988
        retval = <optimized out>
#55 0x00007fffec47b0fd in g_application_run (application=0x755210, argc=<optimized out>, argv=0x7fffffffeb58)
    at gapplication.c:2381
        arguments = 0x751ca0
        status = 0
        context = 0x717000
        acquired_context = <optimized out>
        __func__ = "g_application_run"
#56 0x0000000000432d58 in main ()
No symbol table info available.
Comment 14 Michael Catanzaro 2016-12-03 08:19:59 PST
OK much better, but that looks almost perfect, except... except for the most important part, we still can't see what's going on in cairo where the crash actually occurs. Can you try recompiling cairo with debuginfo again? In particular, these two frames here:

#4  0x00007ffff136ccd9 in cairo_surface_mark_dirty_rectangle () from /usr/local/lib/libcairo.so.2
No symbol table info available.
#5  0x00007ffff136cd15 in cairo_surface_mark_dirty () from /usr/local/lib/libcairo.so.2
No symbol table info available.

Again, we need line numbers and local variables.
Comment 15 john.frankish 2016-12-03 22:28:40 PST
'seems like cairo needs to be compiled with "--enable-symbol-lookup" and libiberty.h copied from the gcc file tree to /usr/local/include

#3  0x00007fffe9da1249 in __GI___assert_fail (assertion=assertion@entry=0x7ffff13e6060 "! _cairo_surface_has_snapshots (surface)", file=file@entry=0x7ffff13e5f00 "cairo-surface.c", 
    line=line@entry=1652, function=function@entry=0x7ffff13e63a0 <__PRETTY_FUNCTION__.11398> "cairo_surface_mark_dirty_rectangle") at assert.c:101
No locals.
#4  0x00007ffff137cf19 in INT_cairo_surface_mark_dirty_rectangle (surface=surface@entry=0xc98a60, x=0, y=0, width=610, height=510) at cairo-surface.c:1652
        status = <optimized out>
        __PRETTY_FUNCTION__ = "cairo_surface_mark_dirty_rectangle"
#5  0x00007ffff137deb5 in INT_cairo_surface_mark_dirty (surface=0xc98a60) at cairo-surface.c:1606
        extents = {x = 0, y = 0, width = 610, height = 510}
#6  0x00007ffff57c74a8 in WebKit::AcceleratedBackingStoreX11::paint (this=this@entry=0xb03b40, cr=cr@entry=0xb6e800, clipRect=...)
    at /mnt/sdc8/usr/src/webkitgtk-2.14.2/Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreX11.cpp:178
No locals.
#7  0x00007ffff57ad7ed in webkitWebViewBaseDraw (widget=0xae8970, cr=0xb6e800) at /mnt/sdc8/usr/src/webkitgtk-2.14.2/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:543
        webViewBase = <optimized out>
        clipRect = {x = 0, y = 0, width = 610, height = 510}
Comment 16 Michael Catanzaro 2016-12-04 08:09:55 PST
OK great, now we've got a proper crash report. :)
Comment 17 john.frankish 2017-01-11 00:17:54 PST
Any update on this - it would be nice to be able to use epiphany :)