<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>210636</bug_id>
          
          <creation_ts>2020-04-16 22:13:12 -0700</creation_ts>
          <short_desc>[GTK] Crash in cairo_surface_mark_dirty_rectangle() in accelerated compositing mode under X11</short_desc>
          <delta_ts>2020-07-10 01:24:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=214177</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>john.frankish</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1642577</commentid>
    <comment_count>0</comment_count>
    <who name="">john.frankish</who>
    <bug_when>2020-04-16 22:13:12 -0700</bug_when>
    <thetext>Ref:
https://gitlab.gnome.org/GNOME/epiphany/-/issues/1153
https://gitlab.freedesktop.org/cairo/cairo/-/issues/400

Using epiphany-3.36.1, webkitgtk-2.28.0, cairo-1.16.0, gtk+-3.24.18 compiled both 32-bit and 64-bit.

When clicking on a youtube video, epiphany aborts with:

epiphany: cairo-surface.c:1733: cairo_surface_mark_dirty_rectangle: Assertion `! _cairo_surface_has_snapshots (surface)&apos; failed.

The suggested fix is:

I would expect that this problem goes away when adding cairo_surface_flush(m_surface.get()); at line 203 in https://github.com/WebKit/webkit/blob/ed000b08b8305908a4802b1889578e68f4c18e9b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreX11.cpp#L194-L196

gdb trace below:

Thread 1 (LWP 11461):
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007ffff7e44d7a in __GI_abort () at abort.c:79
#2  0x00007ffff7e3ccb8 in __assert_fail_base (fmt=0x7ffff7f84280 &quot;%s%s%s:%u: %s%sAssertion `%s&apos; failed.\n%n&quot;, assertion=assertion@entry=0x7ffff687f4d8 &quot;! _cairo_surface_has_snapshots (surface)&quot;, file=file@entry=0x7ffff687f328 &quot;cairo-surface.c&quot;, line=line@entry=1733, function=function@entry=0x7ffff687f920 &lt;__PRETTY_FUNCTION__.13728&gt; &quot;cairo_surface_mark_dirty_rectangle&quot;) at assert.c:92
#3  0x00007ffff7e3cd36 in __GI___assert_fail (assertion=0x7ffff687f4d8 &quot;! _cairo_surface_has_snapshots (surface)&quot;, file=0x7ffff687f328 &quot;cairo-surface.c&quot;, line=1733, function=0x7ffff687f920 &lt;__PRETTY_FUNCTION__.13728&gt; &quot;cairo_surface_mark_dirty_rectangle&quot;) at assert.c:101
#4  0x00007ffff67e4f09 in INT_cairo_surface_mark_dirty_rectangle (surface=0xc71800, x=0, y=0, width=1024, height=768) at cairo-surface.c:1733
#5  0x00007ffff68149f7 in _cairo_xlib_xcb_surface_mark_dirty (abstract_surface=0xcdb320, x=0, y=0, width=1024, height=768) at cairo-xlib-xcb-surface.c:265
#6  0x00007ffff67e500b in INT_cairo_surface_mark_dirty_rectangle (surface=0xcdb320, x=0, y=0, width=1024, height=768) at cairo-surface.c:1756
#7  0x00007ffff67e4e50 in INT_cairo_surface_mark_dirty (surface=0xcdb320) at cairo-surface.c:1687
#8  0x00007fffee807a7c in WebKit::AcceleratedBackingStoreX11::paint (this=0x7fffddffab80, cr=0xb9b6d0, clipRect=...) at ../Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreX11.cpp:196
#9  0x00007fffee6cccc9 in webkitWebViewBaseDraw (widget=0xb46d00, cr=0xb9b6d0) at ../Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:614
#10 0x00007ffff78f2bd3 in gtk_widget_draw_internal (widget=0xb46d00, cr=0xb9b6d0, clip_to_size=1) at ../gtk/gtkwidget.c:7080
#11 0x00007ffff75f7ce0 in gtk_container_propagate_draw (container=0xaadf90, child=0xb46d00, cr=0xb9b6d0) at ../gtk/gtkcontainer.c:3853
#12 0x00007ffff75f7707 in gtk_container_draw (widget=0xaadf90, cr=0xb9b6d0) at ../gtk/gtkcontainer.c:3673
#13 0x00007ffff78f2bd3 in gtk_widget_draw_internal (widget=0xaadf90, cr=0xb9b6d0, clip_to_size=1) at ../gtk/gtkwidget.c:7080
#14 0x00007ffff75f7ce0 in gtk_container_propagate_draw (container=0xb69240, child=0xaadf90, cr=0xb9b6d0) at ../gtk/gtkcontainer.c:3853
#15 0x00007ffff776fafb in gtk_paned_render (gadget=0xb678e0, cr=0xb9b6d0, x=0, y=0, width=1024, height=768, data=0x0) at ../gtk/gtkpaned.c:1818
#16 0x00007ffff75ff184 in gtk_css_custom_gadget_draw (gadget=0xb678e0, cr=0xb9b6d0, x=0, y=0, width=1024, height=768) at ../gtk/gtkcsscustomgadget.c:159
#17 0x00007ffff7605268 in gtk_css_gadget_draw (gadget=0xb678e0, cr=0xb9b6d0) at ../gtk/gtkcssgadget.c:885
#18 0x00007ffff776f926 in gtk_paned_draw (widget=0xb69240, cr=0xb9b6d0) at ../gtk/gtkpaned.c:1782
#19 0x00007ffff78f2bd3 in gtk_widget_draw_internal (widget=0xb69240, cr=0xb9b6d0, clip_to_size=1) at ../gtk/gtkwidget.c:7080
#20 0x00007ffff75f7ce0 in gtk_container_propagate_draw (container=0x652360, child=0xb69240, cr=0xb9b6d0) at ../gtk/gtkcontainer.c:3853
#21 0x00007ffff75f7707 in gtk_container_draw (widget=0x652360, cr=0xb9b6d0) at ../gtk/gtkcontainer.c:3673
#22 0x00007ffff758836d in gtk_box_draw_contents (gadget=0xb51df0, cr=0xb9b6d0, x=0, y=0, width=1024, height=768, unused=0x0) at ../gtk/gtkbox.c:453
#23 0x00007ffff75ff184 in gtk_css_custom_gadget_draw (gadget=0xb51df0, cr=0xb9b6d0, x=0, y=0, width=1024, height=768) at ../gtk/gtkcsscustomgadget.c:159
#24 0x00007ffff7605268 in gtk_css_gadget_draw (gadget=0xb51df0, cr=0xb9b6d0) at ../gtk/gtkcssgadget.c:885
#25 0x00007ffff75883b7 in gtk_box_draw (widget=0x652360, cr=0xb9b6d0) at ../gtk/gtkbox.c:462
#26 0x00007ffff78f2bd3 in gtk_widget_draw_internal (widget=0x652360, cr=0xb9b6d0, clip_to_size=1) at ../gtk/gtkwidget.c:7080
#27 0x00007ffff75f7ce0 in gtk_container_propagate_draw (container=0x9522f0, child=0x652360, cr=0xb9b6d0) at ../gtk/gtkcontainer.c:3853
#28 0x00007ffff7758db7 in gtk_notebook_draw_stack (gadget=0x784960, cr=0xb9b6d0, x=0, y=0, width=1024, height=768, unused=0x0) at ../gtk/gtknotebook.c:2544
#29 0x00007ffff75ff184 in gtk_css_custom_gadget_draw (gadget=0x784960, cr=0xb9b6d0, x=0, y=0, width=1024, height=768) at ../gtk/gtkcsscustomgadget.c:159
#30 0x00007ffff7605268 in gtk_css_gadget_draw (gadget=0x784960, cr=0xb9b6d0) at ../gtk/gtkcssgadget.c:885
#31 0x00007ffff758ed97 in gtk_box_gadget_draw (gadget=0x8a04c0, cr=0xb9b6d0, x=0, y=0, width=1024, height=768) at ../gtk/gtkboxgadget.c:512
#32 0x00007ffff7605268 in gtk_css_gadget_draw (gadget=0x8a04c0, cr=0xb9b6d0) at ../gtk/gtkcssgadget.c:885
#33 0x00007ffff7758e33 in gtk_notebook_draw (widget=0x9522f0, cr=0xb9b6d0) at ../gtk/gtknotebook.c:2559
#34 0x00007ffff78f2bd3 in gtk_widget_draw_internal (widget=0x9522f0, cr=0xb9b6d0, clip_to_size=1) at ../gtk/gtkwidget.c:7080
#35 0x00007ffff75f7ce0 in gtk_container_propagate_draw (container=0xae6560, child=0x9522f0, cr=0xb9b6d0) at ../gtk/gtkcontainer.c:3853
#36 0x00007ffff75f7707 in gtk_container_draw (widget=0xae6560, cr=0xb9b6d0) at ../gtk/gtkcontainer.c:3673
#37 0x00007ffff758836d in gtk_box_draw_contents (gadget=0xaf88e0, cr=0xb9b6d0, x=0, y=0, width=1024, height=768, unused=0x0) at ../gtk/gtkbox.c:453
#38 0x00007ffff75ff184 in gtk_css_custom_gadget_draw (gadget=0xaf88e0, cr=0xb9b6d0, x=0, y=0, width=1024, height=768) at ../gtk/gtkcsscustomgadget.c:159
#39 0x00007ffff7605268 in gtk_css_gadget_draw (gadget=0xaf88e0, cr=0xb9b6d0) at ../gtk/gtkcssgadget.c:885
#40 0x00007ffff75883b7 in gtk_box_draw (widget=0xae6560, cr=0xb9b6d0) at ../gtk/gtkbox.c:462
#41 0x00007ffff78f2bd3 in gtk_widget_draw_internal (widget=0xae6560, cr=0xb9b6d0, clip_to_size=1) at ../gtk/gtkwidget.c:7080
#42 0x00007ffff75f7ce0 in gtk_container_propagate_draw (container=0x93a390, child=0xae6560, cr=0xb9b6d0) at ../gtk/gtkcontainer.c:3853
#43 0x00007ffff780dc25 in gtk_stack_render (gadget=0x966100, cr=0xb9b6d0, x=0, y=0, width=1024, height=768, data=0x0) at ../gtk/gtkstack.c:2207
#44 0x00007ffff75ff184 in gtk_css_custom_gadget_draw (gadget=0x966100, cr=0xb9b6d0, x=0, y=0, width=1024, height=768) at ../gtk/gtkcsscustomgadget.c:159
#45 0x00007ffff7605268 in gtk_css_gadget_draw (gadget=0x966100, cr=0xb9b6d0) at ../gtk/gtkcssgadget.c:885
#46 0x00007ffff780d8ec in gtk_stack_draw (widget=0x93a390, cr=0xb9b6d0) at ../gtk/gtkstack.c:2119
#47 0x00007ffff78f2bd3 in gtk_widget_draw_internal (widget=0x93a390, cr=0xb9b6d0, clip_to_size=1) at ../gtk/gtkwidget.c:7080
#48 0x00007ffff75f7ce0 in gtk_container_propagate_draw (container=0x950130, child=0x93a390, cr=0xb9b6d0) at ../gtk/gtkcontainer.c:3853
#49 0x00007ffff75f7707 in gtk_container_draw (widget=0x950130, cr=0xb9b6d0) at ../gtk/gtkcontainer.c:3673
#50 0x00007ffff78f2bd3 in gtk_widget_draw_internal (widget=0x950130, cr=0xb9b6d0, clip_to_size=1) at ../gtk/gtkwidget.c:7080
#51 0x00007ffff75f7ce0 in gtk_container_propagate_draw (container=0x9383a0, child=0x950130, cr=0xb9b6d0) at ../gtk/gtkcontainer.c:3853
#52 0x00007ffff75f7707 in gtk_container_draw (widget=0x9383a0, cr=0xb9b6d0) at ../gtk/gtkcontainer.c:3673
#53 0x00007ffff791ed0e in gtk_window_draw (widget=0x9383a0, cr=0xb9b6d0) at ../gtk/gtkwindow.c:10473
#54 0x00007ffff78f2bd3 in gtk_widget_draw_internal (widget=0x9383a0, cr=0xb9b6d0, clip_to_size=1) at ../gtk/gtkwidget.c:7080
#55 0x00007ffff7907e66 in gtk_widget_render (widget=0x9383a0, window=0xb81380, region=0xc3c670) at ../gtk/gtkwidget.c:17606
#56 0x00007ffff77209aa in gtk_main_do_event (event=0x7fffffffe0d0) at ../gtk/gtkmain.c:1840
#57 0x00007ffff696ea16 in _gdk_event_emit (event=0x7fffffffe0d0) at ../gdk/gdkevents.c:73
#58 0x00007ffff69866f6 in _gdk_window_process_updates_recurse_helper (window=0xb81380, expose_region=0xa28a80) at ../gdk/gdkwindow.c:3874
#59 0x00007ffff6986917 in _gdk_window_process_updates_recurse (window=0xb81380, expose_region=0xa28a80) at ../gdk/gdkwindow.c:3931
#60 0x00007ffff69940ae in gdk_window_impl_process_updates_recurse (window=0xb81380, region=0xa28a80) at ../gdk/gdkwindowimpl.c:333
#61 0x00007ffff6986bac in gdk_window_process_updates_internal (window=0xb81380) at ../gdk/gdkwindow.c:4020
#62 0x00007ffff698706d in gdk_window_process_updates_with_mode (window=0xb81380, recurse_mode=2) at ../gdk/gdkwindow.c:4215
#63 0x00007ffff6992c6a in gdk_window_paint_on_clock (clock=0x6792f0, data=0xb81380) at ../gdk/gdkwindow.c:11721
#64 0x00007ffff72369d2 in g_cclosure_marshal_VOID__VOIDv (closure=0xc37a70, return_value=0x0, instance=0x6792f0, args=0x7fffffffe658, marshal_data=0x0, n_params=0, param_types=0x0) at ../gobject/gmarshal.c:165
#65 0x00007ffff7233818 in _g_closure_invoke_va (closure=0xc37a70, return_value=0x0, instance=0x6792f0, args=0x7fffffffe658, n_params=0, param_types=0x0) at ../gobject/gclosure.c:873
#66 0x00007ffff724f568 in g_signal_emit_valist (instance=0x6792f0, signal_id=32, detail=0, var_args=0x7fffffffe658) at ../gobject/gsignal.c:3407
#67 0x00007ffff72507b2 in g_signal_emit (instance=0x6792f0, signal_id=32, detail=0) at ../gobject/gsignal.c:3554
#68 0x00007ffff6979d73 in _gdk_frame_clock_emit_paint (frame_clock=0x6792f0) at ../gdk/gdkframeclock.c:643
#69 0x00007ffff697a8d6 in gdk_frame_clock_paint_idle (data=0x6792f0) at ../gdk/gdkframeclockidle.c:450
#70 0x00007ffff695fed3 in gdk_threads_dispatch (data=0x839a40) at ../gdk/gdk.c:777
#71 0x00007ffff713862e in g_timeout_dispatch (source=0xcda4f0, callback=0x7ffff695fe8e &lt;gdk_threads_dispatch&gt;, user_data=0x839a40) at ../glib/gmain.c:4800
#72 0x00007ffff71366e6 in g_main_dispatch (context=0x66abf0) at ../glib/gmain.c:3309
#73 0x00007ffff7137543 in g_main_context_dispatch (context=0x66abf0) at ../glib/gmain.c:3974
#74 0x00007ffff7137727 in g_main_context_iterate (context=0x66abf0, block=1, dispatch=1, self=0x6a3290) at ../glib/gmain.c:4047
#75 0x00007ffff71377eb in g_main_context_iteration (context=0x66abf0, may_block=1) at ../glib/gmain.c:4108
#76 0x00007ffff738e79b in g_application_run (application=0x6e81a0, argc=1, argv=0x7fffffffeb38) at ../gio/gapplication.c:2559
#77 0x0000000000403bc5 in ?? ()
#78 0x00007ffff7e30622 in __libc_start_main (main=0x40350c, argc=1, argv=0x7fffffffeb38, init=&lt;optimized out&gt;, fini=&lt;optimized out&gt;, rtld_fini=&lt;optimized out&gt;, stack_end=0x7fffffffeb28) at ../csu/libc-start.c:308
#79 0x0000000000403c5a in ?? ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642660</commentid>
    <comment_count>1</comment_count>
      <attachid>396763</attachid>
    <who name="">john.frankish</who>
    <bug_when>2020-04-17 07:11:22 -0700</bug_when>
    <thetext>Created attachment 396763
cairo surface patch

I recompiled webkitgtk with the attached patch and it seems to have fixed things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642678</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-04-17 08:17:27 -0700</bug_when>
    <thetext>From Uli in https://gitlab.freedesktop.org/cairo/cairo/-/issues/400:

&quot;&quot;&quot;
That code is clearly wrong. Well, at least from the comment, I guess that there is no call to cairo_surface_flush() anywhere. The docs for cairo_surface_mark_dirty() state that one must call cairo_surface_flush() first.

I guess the easiest fix would be to add a call to cairo_surface_flush(m_surface.get()); at the end of that function.
&quot;&quot;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642695</commentid>
    <comment_count>3</comment_count>
      <attachid>396768</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-04-17 08:47:20 -0700</bug_when>
    <thetext>Created attachment 396768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642703</commentid>
    <comment_count>4</comment_count>
      <attachid>396768</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-04-17 09:13:40 -0700</bug_when>
    <thetext>Comment on attachment 396768
Patch

I wonder if this might unbreak some of the layout tests which
have been crashing 🤾‍♂️️</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643191</commentid>
    <comment_count>5</comment_count>
      <attachid>396768</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-19 06:21:01 -0700</bug_when>
    <thetext>Comment on attachment 396768
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=396768&amp;action=review

&gt; Source/WebKit/ChangeLog:1
&gt; +2020-04-17  Michael Catanzaro  &lt;mcatanzaro@gnome.org&gt;

You should credit John or even Uli, I think.

&gt; Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:373
&gt; +    cairo_surface_flush(m_surface.get());
&gt; +

This is not needed in Wayland. In this case we are writing the pixel data directly, so there aren&apos;t snapshots, and the surface is never modified after the paint, like in X11.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643213</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-04-19 09:26:00 -0700</bug_when>
    <thetext>The documentation of cairo_surface_mark_dirty() says: &quot;Tells cairo that drawing has been done to surface using means other than cairo, and that cairo should reread any cached areas. Note that you must call cairo_surface_flush() before doing such drawing.&quot;

(In reply to Carlos Garcia Campos from comment #5)
&gt; This is not needed in Wayland. In this case we are writing the pixel data
&gt; directly, so there aren&apos;t snapshots, and the surface is never modified after
&gt; the paint, like in X11.

Are we &quot;drawing to the surface using means other than cairo&quot;?

If so: it needs both mark_dirty() and flush().

If not: it should not use mark_dirty() or flush(). Right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643383</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-20 00:31:58 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #6)
&gt; The documentation of cairo_surface_mark_dirty() says: &quot;Tells cairo that
&gt; drawing has been done to surface using means other than cairo, and that
&gt; cairo should reread any cached areas. Note that you must call
&gt; cairo_surface_flush() before doing such drawing.&quot;

Right.

&gt; (In reply to Carlos Garcia Campos from comment #5)
&gt; &gt; This is not needed in Wayland. In this case we are writing the pixel data
&gt; &gt; directly, so there aren&apos;t snapshots, and the surface is never modified after
&gt; &gt; the paint, like in X11.
&gt; 
&gt; Are we &quot;drawing to the surface using means other than cairo&quot;?
&gt; 
&gt; If so: it needs both mark_dirty() and flush().
&gt; 
&gt; If not: it should not use mark_dirty() or flush(). Right?

I&apos;ll try to explain how this works in both X11 and Wayland.

 - X11: We create an xlib surface for a pixmap that is rendered by the web process using a redirected xcomposite window. Using xdamage we detect updates in the pixmap and use the surface as a source to draw in the view cairo context. We use mark dirty as the comment says, because between the xdamage notification and the draw signal the web process might have modified the pixmap. When cairo is configured to use xcb instead of xlib, it might use an image surface attached to the xlib one as snapshot. In that case flush() is needed to detach that snapshot after we have drawn the surface in the context.

 - Wayland: We only create a cairo surface when gdk_cairo_draw_from_gl() can&apos;t be used. In that case we create an image surface, read all the pixels using glReadPixels and write them directly in the image surface data. We need to use mark_dirty here because we have modified the pixels data, and cairo doesn&apos;t know it. And then we use the surface as a source to draw in the view cairo context. After that the surface is not used at all, it&apos;s reused only as an optimization to avoid allocating a new one on every draw, but we are always writing all the pixels data and there&apos;s no other operation in the surface. The comment before mark_dirty was copied and it&apos;s indeed wrong, but we don&apos;t need to flush for sure.

I hope it&apos;s clear now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643460</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-04-20 08:33:19 -0700</bug_when>
    <thetext>OK... maybe makes more sense for you to prepare the patch, since you understand? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644768</commentid>
    <comment_count>9</comment_count>
      <attachid>397340</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-23 07:55:58 -0700</bug_when>
    <thetext>Created attachment 397340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644773</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-23 08:24:09 -0700</bug_when>
    <thetext>Committed r260570: &lt;https://trac.webkit.org/changeset/260570&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 397340.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396763</attachid>
            <date>2020-04-17 07:11:22 -0700</date>
            <delta_ts>2020-04-17 08:47:16 -0700</delta_ts>
            <desc>cairo surface patch</desc>
            <filename>webkitgtk-2.28.0_cairo.patch</filename>
            <type>text/plain</type>
            <size>338</size>
            <attacher>john.frankish</attacher>
            
              <data encoding="base64">LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgx
MS5jcHAub3JpZwkyMDIwLTA0LTE3IDEyOjE0OjQ2Ljc2MDAzNzMwNyArMDAwMAorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcAkyMDIw
LTA0LTE3IDEyOjE2OjEyLjkxNjcwNTgxNCArMDAwMApAQCAtMjAwLDcgKzIwMCw3IEBACiAgICAg
Y2Fpcm9fZmlsbChjcik7CiAKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKLQorICAgIGNhaXJvX3N1
cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396768</attachid>
            <date>2020-04-17 08:47:20 -0700</date>
            <delta_ts>2020-04-23 07:55:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210636-20200417104720.patch</filename>
            <type>text/plain</type>
            <size>2208</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5ODI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMyNTE5ZWY3YWQ3MDVmNzEx
MDZjZGU1YTc0ODQxY2VkNDc2YzMzODMuLmYwMGVjYTMwMzIyZjU0MzBiZTBhNDJlNjFhNWM2NmJk
ZmM3MzI2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDQtMTcgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgW0dUS10gQ3Jhc2gg
aW4gY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZSgpIGluIGFjY2VsZXJhdGVkIGNv
bXBvc2l0aW5nIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMDYzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEkgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzIGNvZGUsIGJ1dCB0aGUgY2Fpcm8gZGV2ZWxv
cGVycyBzYXkgaXQgaXMgImNsZWFybHkgd3JvbmcuIiBXZSBoYXZlIHRvCisgICAgICAgIGRvIGEg
Zmx1c2ggYmVmb3JlIHBlcmZvcm1pbmcgYW55IG5vbi1jYWlybyBkcmF3aW5nIG9uIHRoZSBzdXJm
YWNlLCB3aGljaCBjb3VsZCBoYXBwZW4gYWZ0ZXIKKyAgICAgICAgdGhlIHBhaW50LgorCisgICAg
ICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBhaW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OnBhaW50KToKKwog
MjAyMC0wNC0wOSAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
U2V0IEVOVElUTEVNRU5UU19SRVFVSVJFRD1OTyBmb3Igc29tZSBYY29kZSBidWlsZCB0YXJnZXRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVXYXlsYW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCmluZGV4IDQ0M2YwODc1NmZkMTBhMWJjMTQxZWQ2
NDkyZTk4ZTExMDc0ZTFhOGIuLmE1ZGExMGVjNGVjOTJkNTg0ZjBiZTQyZjE1ZTA0Yzk1Y2M3MWYz
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVdheWxhbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9B
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCkBAIC0zNjksNiArMzY5LDggQEAgYm9v
bCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCkKIAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogCisgICAgY2Fp
cm9fc3VyZmFjZV9mbHVzaChtX3N1cmZhY2UuZ2V0KCkpOworCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVYMTEuY3BwCmluZGV4IDcxYjFlODY4MWQxMzU5MWY4MTU1N2VjMGMwNTJh
ZGQ5NzIyMDMxZjYuLjhiODZmOTg4OWJhN2EyMzIwNGExNmJiZDc3NWIzYmMxNmU0NTgxNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlWDExLmNwcApAQCAtMjAxLDYgKzIwMSw4IEBAIGJvb2wgQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVYMTE6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVj
dCkKIAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogCisgICAgY2Fpcm9fc3VyZmFjZV9mbHVzaCht
X3N1cmZhY2UuZ2V0KCkpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
</data>
<flag name="review"
          id="412192"
          type_id="1"
          status="-"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397340</attachid>
            <date>2020-04-23 07:55:58 -0700</date>
            <delta_ts>2020-04-23 08:24:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wkgtk-x11-crash.diff</filename>
            <type>text/plain</type>
            <size>1433</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZTk2MTE0MzVkMjFlLi5hNjNkYzFkMmVlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMjAtMDQtMjMgIEpvaG4gRnJhbmtpc2ggIDxqb2huLmZyYW5raXNoQG91dGxv
b2suY29tPgorCisgICAgICAgIFtHVEtdIENyYXNoIGluIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0
eV9yZWN0YW5nbGUoKSBpbiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBtb2RlIHVuZGVyIFgxMQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjM2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBjYWly
byBpcyBjb25maWd1cmVkIHRvIHVzZSB4Y2IgaW5zdGVhZCBvZiB4bGliLCBpdCBtaWdodCB1c2Ug
YW4gaW1hZ2Ugc3VyZmFjZSBhdHRhY2hlZCB0byB0aGUgeGxpYiBvbmUgYXMKKyAgICAgICAgc25h
cHNob3QuIEluIHRoYXQgY2FzZSBhIGZsdXNoIGlzIG5lZWRlZCB0byBkZXRhY2ggdGhhdCBzbmFw
c2hvdCBhZnRlciB3ZSBoYXZlIGRyYXduIHRoZSBzdXJmYWNlIGluIHRoZQorICAgICAgICBjb250
ZXh0LgorCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgx
MS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpwYWlu
dCk6IENhbGwgY2Fpcm9fc3VyZmFjZV9mbHVzaCgpIGFmdGVyIGRyYXdpbmcuCisKIDIwMjAtMDQt
MjIgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcmV2ZXJ0aW5nIHIyNjA1NTMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcAppbmRleCA3MWIxZTg2
ODFkMTMuLjhiODZmOTg4OWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwCkBAIC0yMDEsNiArMjAx
LDggQEAgYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6cGFpbnQoY2Fpcm9fdCogY3Is
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiAKKyAg
ICBjYWlyb19zdXJmYWNlX2ZsdXNoKG1fc3VyZmFjZS5nZXQoKSk7CisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>