<?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>201755</bug_id>
          
          <creation_ts>2019-09-12 23:04:34 -0700</creation_ts>
          <short_desc>[Cairo] Image::drawTiled → Cairo::drawSurface → cairo_paint_with_alpha → segfault happens in pixman</short_desc>
          <delta_ts>2019-09-24 18:17:39 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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 name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>magomez</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1570508</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-12 23:04:34 -0700</bug_when>
    <thetext>[Cairo] Image::drawTiled → Cairo::drawSurface → cairo_paint_with_alpha → segfault happens in pixman

Today, I saw WinCairo crash in &lt;https://news.yahoo.co.jp&gt;.

Callstack:

&gt; cairo.dll!_pixman_implementation_create_general()	C
&gt; cairo.dll!_pixman_gradient_walker_write_wide()	C
&gt; cairo.dll!pixman_image_composite32()	C
&gt; cairo.dll!composite_boxes(void * _dst, _cairo_operator op, _cairo_surface * abstract_src, _cairo_surface * abstract_mask, int src_x, int src_y, int mask_x, int mask_y, int dst_x, int dst_y, _cairo_boxes_t * boxes, const _cairo_rectangle_int * extents) Line 538	C
&gt; cairo.dll!composite_aligned_boxes(const cairo_spans_compositor * compositor, const _cairo_composite_rectangles * extents, _cairo_boxes_t * boxes) Line 688	C
&gt; cairo.dll!clip_and_composite_boxes(const cairo_spans_compositor * compositor, _cairo_composite_rectangles * extents, _cairo_boxes_t * boxes) Line 883	C
&gt; cairo.dll!_cairo_spans_compositor_mask(const cairo_compositor * _compositor, _cairo_composite_rectangles * extents) Line 1000	C
&gt; cairo.dll!_cairo_compositor_paint(const cairo_compositor * compositor, _cairo_surface * surface, _cairo_operator op, const _cairo_pattern * source, const _cairo_clip * clip) Line 67	C
&gt; cairo.dll!_cairo_image_surface_paint(void * abstract_surface, _cairo_operator op, const _cairo_pattern * source, const _cairo_clip * clip) Line 931	C
&gt; cairo.dll!_cairo_surface_paint(_cairo_surface * surface, _cairo_operator op, const _cairo_pattern * source, const _cairo_clip * clip) Line 2199	C
&gt; cairo.dll!_cairo_gstate_paint(_cairo_gstate * gstate) Line 1061	C
&gt; cairo.dll!_cairo_default_context_paint_with_alpha(void * abstract_cr, double alpha) Line 971	C
&gt; cairo.dll!cairo_paint_with_alpha(_cairo * cr, double alpha) Line 2248	C
&gt; WebKit2.dll!WebCore::Cairo::drawPatternToCairoContext(_cairo * cr, _cairo_pattern * pattern, const WebCore::FloatRect &amp; destRect, float alpha) Line 156	C++
&gt; WebKit2.dll!WebCore::Cairo::drawSurface(WebCore::PlatformContextCairo &amp; platformContext, _cairo_surface * surface, const WebCore::FloatRect &amp; destRect, const WebCore::FloatRect &amp; originalSrcRect, WebCore::InterpolationQuality imageInterpolationQuality, float globalAlpha, const WebCore::Cairo::ShadowState &amp; shadowState) Line 988	C++
&gt; WebKit2.dll!WebCore::Cairo::drawNativeImage(WebCore::PlatformContextCairo &amp; platformContext, _cairo_surface * surface, const WebCore::FloatRect &amp; destRect, const WebCore::FloatRect &amp; srcRect, const WebCore::ImagePaintingOptions &amp; options, float globalAlpha, const WebCore::Cairo::ShadowState &amp; shadowState) Line 903	C++
&gt; WebKit2.dll!WebCore::GraphicsContextImplCairo::drawNativeImage(const WTF::RefPtr&lt;_cairo_surface,WTF::DumbPtrTraits&lt;_cairo_surface&gt; &gt; &amp; image, const WebCore::FloatSize &amp; imageSize, const WebCore::FloatRect &amp; destRect, const WebCore::FloatRect &amp; srcRect, const WebCore::ImagePaintingOptions &amp; options) Line 283	C++
&gt; WebKit2.dll!WebCore::GraphicsContext::drawNativeImage(const WTF::RefPtr&lt;_cairo_surface,WTF::DumbPtrTraits&lt;_cairo_surface&gt; &gt; &amp; image, const WebCore::FloatSize &amp; imageSize, const WebCore::FloatRect &amp; destRect, const WebCore::FloatRect &amp; srcRect, const WebCore::ImagePaintingOptions &amp; options) Line 130	C++
&gt; WebKit2.dll!WebCore::drawNativeImage(const WTF::RefPtr&lt;_cairo_surface,WTF::DumbPtrTraits&lt;_cairo_surface&gt; &gt; &amp; image, WebCore::GraphicsContext &amp; context, const WebCore::FloatRect &amp; destRect, const WebCore::FloatRect &amp; srcRect, const WebCore::IntSize &amp; imageSize, const WebCore::ImagePaintingOptions &amp; options) Line 62	C++
&gt; WebKit2.dll!WebCore::BitmapImage::draw(WebCore::GraphicsContext &amp; context, const WebCore::FloatRect &amp; destRect, const WebCore::FloatRect &amp; srcRect, const WebCore::ImagePaintingOptions &amp; options) Line 272	C++
&gt; WebKit2.dll!WebCore::Image::drawTiled(WebCore::GraphicsContext &amp; ctxt, const WebCore::FloatRect &amp; destRect, const WebCore::FloatPoint &amp; srcPoint, const WebCore::FloatSize &amp; scaledTileSize, const WebCore::FloatSize &amp; spacing, const WebCore::ImagePaintingOptions &amp; options) Line 182	C++
&gt; WebKit2.dll!WebCore::GraphicsContextImpl::drawTiledImageImpl(WebCore::GraphicsContext &amp; context, WebCore::Image &amp; image, const WebCore::FloatRect &amp; destination, const WebCore::FloatPoint &amp; source, const WebCore::FloatSize &amp; tileSize, const WebCore::FloatSize &amp; spacing, const WebCore::ImagePaintingOptions &amp; options) Line 50	C++
&gt; WebKit2.dll!WebCore::GraphicsContextImplCairo::drawTiledImage(WebCore::Image &amp; image, const WebCore::FloatRect &amp; destination, const WebCore::FloatPoint &amp; source, const WebCore::FloatSize &amp; tileSize, const WebCore::FloatSize &amp; spacing, const WebCore::ImagePaintingOptions &amp; imagePaintingOptions) Line 271	C++
&gt; WebKit2.dll!WebCore::GraphicsContext::drawTiledImage(WebCore::Image &amp; image, const WebCore::FloatRect &amp; destination, const WebCore::FloatPoint &amp; source, const WebCore::FloatSize &amp; tileSize, const WebCore::FloatSize &amp; spacing, const WebCore::ImagePaintingOptions &amp; options) Line 740	C++
&gt; WebKit2.dll!WebCore::RenderBoxModelObject::paintFillLayerExtended(const WebCore::PaintInfo &amp; paintInfo, const WebCore::Color &amp; color, const WebCore::FillLayer &amp; bgLayer, const WebCore::LayoutRect &amp; rect, WebCore::BackgroundBleedAvoidance bleedAvoidance, WebCore::InlineFlowBox * box, const WebCore::LayoutSize &amp; boxSize, WebCore::CompositeOperator op, WebCore::RenderElement * backgroundObject, WebCore::BaseBackgroundColorUsage baseBgColorUsage) Line 963	C++
&gt; WebKit2.dll!WebCore::RenderBox::paintFillLayer(const WebCore::PaintInfo &amp; paintInfo, const WebCore::Color &amp; c, const WebCore::FillLayer &amp; fillLayer, const WebCore::LayoutRect &amp; rect, WebCore::BackgroundBleedAvoidance bleedAvoidance, WebCore::CompositeOperator op, WebCore::RenderElement * backgroundObject, WebCore::BaseBackgroundColorUsage baseBgColorUsage) Line 1680	C++
&gt; WebKit2.dll!WebCore::RenderBox::paintFillLayers(const WebCore::PaintInfo &amp; paintInfo, const WebCore::Color &amp; color, const WebCore::FillLayer &amp; fillLayer, const WebCore::LayoutRect &amp; rect, WebCore::BackgroundBleedAvoidance bleedAvoidance, WebCore::CompositeOperator op, WebCore::RenderElement * backgroundObject) Line 1670	C++
&gt; WebKit2.dll!WebCore::RenderBox::paintBackground(const WebCore::PaintInfo &amp; paintInfo, const WebCore::LayoutRect &amp; paintRect, WebCore::BackgroundBleedAvoidance bleedAvoidance) Line 1395	C++
&gt; WebKit2.dll!WebCore::RenderBox::paintBoxDecorations(WebCore::PaintInfo &amp; paintInfo, const WebCore::LayoutPoint &amp; paintOffset) Line 1350	C++
&gt; WebKit2.dll!WebCore::RenderBlock::paintObject(WebCore::PaintInfo &amp; paintInfo, const WebCore::LayoutPoint &amp; paintOffset) Line 1224	C++
&gt; WebKit2.dll!WebCore::RenderBlock::paint(WebCore::PaintInfo &amp; paintInfo, const WebCore::LayoutPoint &amp; paintOffset) Line 1104	C++
&gt; WebKit2.dll!WebCore::RenderLayer::paintBackgroundForFragments(const WTF::Vector&lt;WebCore::LayerFragment,1,WTF::CrashOnOverflow,16&gt; &amp; layerFragments, WebCore::GraphicsContext &amp; context, WebCore::GraphicsContext &amp; contextForTransparencyLayer, const WebCore::LayoutRect &amp; transparencyPaintDirtyRect, bool haveTransparency, const WebCore::RenderLayer::LayerPaintingInfo &amp; localPaintingInfo, WTF::OptionSet&lt;WebCore::PaintBehavior&gt; paintBehavior, WebCore::RenderObject * subtreePaintRootForRenderer) Line 4913	C++
&gt; WebKit2.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext &amp; context, const WebCore::RenderLayer::LayerPaintingInfo &amp; paintingInfo, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt; paintFlags) Line 4554	C++
&gt; WebKit2.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext &amp; context, const WebCore::RenderLayer::LayerPaintingInfo &amp; paintingInfo, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt; paintFlags) Line 4250	C++
&gt; WebKit2.dll!WebCore::RenderLayer::paintLayerWithEffects(WebCore::GraphicsContext &amp; context, const WebCore::RenderLayer::LayerPaintingInfo &amp; paintingInfo, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt; paintFlags) Line 4233	C++
&gt; WebKit2.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext &amp; context, const WebCore::RenderLayer::LayerPaintingInfo &amp; paintingInfo, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt; paintFlags) Line 4172	C++
&gt; WebKit2.dll!WebCore::RenderLayer::paintList(WebCore::RenderLayer::LayerList layerIterator, WebCore::GraphicsContext &amp; context, const WebCore::RenderLayer::LayerPaintingInfo &amp; paintingInfo, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt; paintFlags) Line 4689	C++
&gt; WebKit2.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext &amp; context, const WebCore::RenderLayer::LayerPaintingInfo &amp; paintingInfo, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt; paintFlags) Line 4581	C++
&gt; WebKit2.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext &amp; context, const WebCore::RenderLayer::LayerPaintingInfo &amp; paintingInfo, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt; paintFlags) Line 4250	C++
&gt; WebKit2.dll!WebCore::RenderLayer::paintLayerWithEffects(WebCore::GraphicsContext &amp; context, const WebCore::RenderLayer::LayerPaintingInfo &amp; paintingInfo, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt; paintFlags) Line 4233	C++
&gt; WebKit2.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext &amp; context, const WebCore::RenderLayer::LayerPaintingInfo &amp; paintingInfo, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt; paintFlags) Line 4172	C++
&gt; WebKit2.dll!WebCore::RenderLayer::paintList(WebCore::RenderLayer::LayerList layerIterator, WebCore::GraphicsContext &amp; context, const WebCore::RenderLayer::LayerPaintingInfo &amp; paintingInfo, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt; paintFlags) Line 4689	C++
&gt; WebKit2.dll!WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext &amp; context, const WebCore::RenderLayer::LayerPaintingInfo &amp; paintingInfo, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt; paintFlags) Line 4581	C++
&gt; WebKit2.dll!WebCore::RenderLayer::paintLayerContentsAndReflection(WebCore::GraphicsContext &amp; context, const WebCore::RenderLayer::LayerPaintingInfo &amp; paintingInfo, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt; paintFlags) Line 4250	C++
&gt; WebKit2.dll!WebCore::RenderLayer::paintLayerWithEffects(WebCore::GraphicsContext &amp; context, const WebCore::RenderLayer::LayerPaintingInfo &amp; paintingInfo, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt; paintFlags) Line 4233	C++
&gt; WebKit2.dll!WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext &amp; context, const WebCore::RenderLayer::LayerPaintingInfo &amp; paintingInfo, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt; paintFlags) Line 4172	C++
&gt; WebKit2.dll!WebCore::RenderLayer::paint(WebCore::GraphicsContext &amp; context, const WebCore::LayoutRect &amp; damageRect, const WebCore::LayoutSize &amp; subpixelOffset, WTF::OptionSet&lt;WebCore::PaintBehavior&gt; paintBehavior, WebCore::RenderObject * subtreePaintRoot, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt; paintFlags, WebCore::RenderLayer::SecurityOriginPaintPolicy paintPolicy) Line 4034	C++
&gt; WebKit2.dll!WebCore::FrameView::paintContents(WebCore::GraphicsContext &amp; context, const WebCore::IntRect &amp; dirtyRect, WebCore::Widget::SecurityOriginPaintPolicy securityOriginPaintPolicy) Line 4156	C++
&gt; WebKit2.dll!WebCore::ScrollView::paint(WebCore::GraphicsContext &amp; context, const WebCore::IntRect &amp; rect, WebCore::Widget::SecurityOriginPaintPolicy securityOriginPaintPolicy) Line 1217	C++
&gt; WebKit2.dll!WebKit::WebPage::drawRect(WebCore::GraphicsContext &amp; graphicsContext, const WebCore::IntRect &amp; rect) Line 1792	C++
&gt; WebKit2.dll!WebKit::DrawingAreaCoordinatedGraphics::display(WebKit::UpdateInfo &amp; updateInfo) Line 760	C++
&gt; WebKit2.dll!WebKit::DrawingAreaCoordinatedGraphics::display() Line 673	C++
&gt; WebKit2.dll!WebKit::DrawingAreaCoordinatedGraphics::displayTimerFired() Line 653	C++
&gt; WebKit2.dll!WTF::RunLoop::Timer&lt;WebKit::DrawingAreaCoordinatedGraphics&gt;::fired() Line 152	C++
&gt; WTF.dll!WTF::RunLoop::TimerBase::timerFired() Line 141	C++
&gt; WTF.dll!WTF::RunLoop::wndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 60	C++
&gt; WTF.dll!WTF::RunLoop::RunLoopWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 39	C++
&gt; [External Code]	
&gt; WTF.dll!WTF::RunLoop::run() Line 73	C++
&gt; WebKit2.dll!WebKit::AuxiliaryProcessMain&lt;WebKit::WebProcess,WebKit::WebProcessMain&gt;(int argc, char * * argv) Line 67	C++
&gt; WebKit2.dll!WebKit::WebProcessMainWin(int argc, char * * argv) Line 49	C++
&gt; WebKitWebProcess.exe!main(int argc, char * * argv) Line 33	C++
&gt; [External Code]	

This callstack is not reliable for pixman function names because the following issue isn&apos;t fixed yet.

pixman doesn&apos;t have the debug information · Issue #26 · WebKitForWindows/WinCairoRequirements
https://github.com/WebKitForWindows/WinCairoRequirements/issues/26</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570509</commentid>
    <comment_count>1</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-12 23:13:48 -0700</bug_when>
    <thetext>In Image::drawTiled, this Image size was 640x435.
But, visibleSrcRect was 640.0x435.00031.

In Cairo::drawSurface, it create a subsurface by taking enclosingIntRect of srcRect.
https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp?rev=249217#L935

&gt; IntRect expandedSrcRect(enclosingIntRect(srcRect));

I guess expandedSrcRect would be 640x436.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570510</commentid>
    <comment_count>2</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-12 23:15:05 -0700</bug_when>
    <thetext>Cairo&apos;s bug ticket:

Crash in fast_composite_scaled_bilinear_sse2_8888_8888_cover_SRC (#85) · Issues · cairo / cairo · GitLab
https://gitlab.freedesktop.org/cairo/cairo/issues/85</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570520</commentid>
    <comment_count>3</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-13 00:59:11 -0700</bug_when>
    <thetext>I think there are two problems.

1.
In Image::drawTiled, visibleSrcRect can be larger than the image size because it is calculated by using division twice, as
 FloatSize scale(scaledTileSize / intrinsicTileSize);
 visibleSrcRect.setWidth(destRect.width() / scale.width());
This can be converted into one division and one multiplication:
 FloatSize scale(intrinsicTileSize / scaledTileSize);
 visibleSrcRect.setWidth(destRect.width() * scale.width());

2.
Cairo::drawSurface is creating a larger subsurface than the original surface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570536</commentid>
    <comment_count>4</comment_count>
      <attachid>378720</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-13 02:20:44 -0700</bug_when>
    <thetext>Created attachment 378720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570540</commentid>
    <comment_count>5</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-13 02:45:45 -0700</bug_when>
    <thetext>It&apos;s easy to check srcRect is slightly larger than the surface size by adding the following ASSERT.

diff --git a/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp b/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp
index a895dadd042..12a691b3d28 100644
--- a/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp
+++ b/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp
@@ -933,6 +933,7 @@ void drawSurface(PlatformContextCairo&amp; platformContext, cairo_surface_t* surface
     if (srcRect.x() || srcRect.y() || srcRect.size() != cairoSurfaceSize(surface)) {
         // Cairo subsurfaces don&apos;t support floating point boundaries well, so we expand the rectangle.
         IntRect expandedSrcRect(enclosingIntRect(srcRect));
+        ASSERT(IntRect({ }, cairoSurfaceSize(surface)).contains(expandedSrcRect));
 
         // We use a subsurface here so that we don&apos;t end up sampling outside the originalSrcRect rectangle.
         // See https://bugs.webkit.org/show_bug.cgi?id=58309


It&apos;s easy to reproduce similar crashes by expanding srcRect 1px taller.

diff --git a/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp b/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp
index a895dadd042..db63260c36b 100644
--- a/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp
+++ b/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp
@@ -916,6 +916,7 @@ void drawSurface(PlatformContextCairo&amp; platformContext, cairo_surface_t* surface
         return;
 
     FloatRect srcRect = originalSrcRect;
+    srcRect.expand({0, 1});
 
     // We need to account for negative source dimensions by flipping the rectangle.
     if (originalSrcRect.width() &lt; 0) {


But, it&apos;s difficult to create a test case reproducing the crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571392</commentid>
    <comment_count>6</comment_count>
      <attachid>378720</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-16 19:58:01 -0700</bug_when>
    <thetext>Comment on attachment 378720
Patch

Clearing flags on attachment: 378720

Committed r249937: &lt;https://trac.webkit.org/changeset/249937&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571393</commentid>
    <comment_count>7</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-16 19:58:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378720</attachid>
            <date>2019-09-13 02:20:44 -0700</date>
            <delta_ts>2019-09-16 19:58:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201755-20190913182043.patch</filename>
            <type>text/plain</type>
            <size>2127</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FhNWE2ZmQxNjA3OGUw
Nzg5ZWU4NWNiZmZlOTRhOWMwNDBhZmQ5Ni4uYmE2OGFlNGFiZDFlODNhYTU3Y2MwMGM2YjY0ODI0
MGQ1NTRlMjUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA5LTEzICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtDYWlyb10g
SW1hZ2U6OmRyYXdUaWxlZCDihpIgQ2Fpcm86OmRyYXdTdXJmYWNlIOKGkiBjYWlyb19wYWludF93
aXRoX2FscGhhIOKGkiBzZWdmYXVsdCBoYXBwZW5zIGluIHBpeG1hbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNzU1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VnbWVudGF0aW9uIGZhdWx0cyBoYXBw
ZW5lZCBpbiBwaXhtYW4gd2hpbGUgcGFpbnRpbmcgYSBpbWFnZS4gSW4KKyAgICAgICAgQ2Fpcm86
OmRyYXdTdXJmYWNlLCBvcmlnaW5hbFNyY1JlY3QgY2FuIGJlIHNsaWdodGx5IGxhcmdlciB0aGFu
CisgICAgICAgIHRoZSBzdXJmYWNlIHNpemUgYmVjYXVzZSBvZiBmbG9hdGluZyBudW1iZXIgY2Fs
Y3VsYXRpb25zLgorICAgICAgICBDYWlybzo6ZHJhd1N1cmZhY2UgY3JlYXRlZCBhIHN1YnN1cmZh
Y2Ugd2hpY2ggaXMgcnVubmluZyBvdmVyIHRoZQorICAgICAgICBwYXJlbnQgc3VyZmFjZSBib3Vu
ZGFyaWVzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3U3VyZmFjZSk6IENhbGN1bGF0
ZWQgYSBpbnRlcnNlY3Rpb24gd2l0aAorICAgICAgICBleHBhbmRlZFNyY1JlY3QgYW5kIHRoZSBw
YXJlbnQgc3VyZmFjZSBzaXplIGZvciBzdWJzdXJmYWNlIHNpemUuCisKIDIwMTktMDktMTEgIFNh
YW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBSZW1vdmUg
bnVsbCBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCBh
ODk1ZGFkZDA0MjFiN2VkMDkxMTI4ZDIzZjY1ZjVkZDk0NGE0NzA2Li40NzU4YWU4NWMwNTliOTY1
NmM5OGIzOTM1MzIzZjkyNmQ2ODRlODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAgLTkzMyw2
ICs5MzMsNyBAQCB2b2lkIGRyYXdTdXJmYWNlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9y
bUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZQogICAgIGlmIChzcmNSZWN0LngoKSB8
fCBzcmNSZWN0LnkoKSB8fCBzcmNSZWN0LnNpemUoKSAhPSBjYWlyb1N1cmZhY2VTaXplKHN1cmZh
Y2UpKSB7CiAgICAgICAgIC8vIENhaXJvIHN1YnN1cmZhY2VzIGRvbid0IHN1cHBvcnQgZmxvYXRp
bmcgcG9pbnQgYm91bmRhcmllcyB3ZWxsLCBzbyB3ZSBleHBhbmQgdGhlIHJlY3RhbmdsZS4KICAg
ICAgICAgSW50UmVjdCBleHBhbmRlZFNyY1JlY3QoZW5jbG9zaW5nSW50UmVjdChzcmNSZWN0KSk7
CisgICAgICAgIGV4cGFuZGVkU3JjUmVjdC5pbnRlcnNlY3QoeyB7IH0sIGNhaXJvU3VyZmFjZVNp
emUoc3VyZmFjZSkgfSk7CiAKICAgICAgICAgLy8gV2UgdXNlIGEgc3Vic3VyZmFjZSBoZXJlIHNv
IHRoYXQgd2UgZG9uJ3QgZW5kIHVwIHNhbXBsaW5nIG91dHNpZGUgdGhlIG9yaWdpbmFsU3JjUmVj
dCByZWN0YW5nbGUuCiAgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTgzMDkK
</data>

          </attachment>
      

    </bug>

</bugzilla>