<?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>118497</bug_id>
          
          <creation_ts>2013-07-09 01:54:55 -0700</creation_ts>
          <short_desc>Leak: PNGImageDecoder::decode</short_desc>
          <delta_ts>2013-07-09 07:39:02 -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>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          
          <blocked>116317</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Brian Holt">brian.holt</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>obzhirov</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>907040</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-09 01:54:55 -0700</bug_when>
    <thetext>Leak in Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:122

Command: /home/likewise-open/SERILOCAL/brian.holt/Code/gnome3/WebKit/WebKitBuild/Debug/Programs/DumpRenderTree -
Leak_StillReachable
16,119 bytes in 7 blocks are still reachable in loss record 1,118 of 1,176
    malloc (/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    png_malloc (/lib/x86_64-linux-gnu/libpng12.so.0.49.0)
    png_create_read_struct_2 (/lib/x86_64-linux-gnu/libpng12.so.0.49.0)
    png_create_read_struct (/lib/x86_64-linux-gnu/libpng12.so.0.49.0)
    WebCore::PNGImageReader::PNGImageReader(WebCore::PNGImageDecoder*) (/WebKitBuild/Debug/../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:122)
    WebCore::PNGImageDecoder::decode(bool) (/WebKitBuild/Debug/../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:573)
    WebCore::PNGImageDecoder::isSizeAvailable() (/WebKitBuild/Debug/../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:237)
    WebCore::ImageSource::isSizeAvailable() (/WebKitBuild/Debug/../../Source/WebCore/platform/graphics/ImageSource.cpp:99)
    WebCore::BitmapImage::isSizeAvailable() (/WebKitBuild/Debug/../../Source/WebCore/platform/graphics/BitmapImage.cpp:283)
    WebCore::BitmapImage::dataChanged(bool) (/WebKitBuild/Debug/../../Source/WebCore/platform/graphics/BitmapImage.cpp:257)
    WebCore::Image::setData(WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt;, bool) (/WebKitBuild/Debug/../../Source/WebCore/platform/graphics/Image.cpp:79)
    WebCore::loadImageFromFile(WTF::CString) (/WebKitBuild/Debug/../../Source/WebCore/platform/graphics/gtk/ImageGtk.cpp:85)
    WebCore::Image::loadPlatformResource(char const*) (/WebKitBuild/Debug/../../Source/WebCore/platform/graphics/gtk/ImageGtk.cpp:101)
    WebCore::CachedImage::brokenImage(float) const (/WebKitBuild/Debug/../../Source/WebCore/loader/cache/CachedImage.cpp:149)
    WebCore::CachedImage::imageForRenderer(WebCore::RenderObject const*) (/WebKitBuild/Debug/../../Source/WebCore/loader/cache/CachedImage.cpp:183)
    WebCore::RenderImage::setImageSizeForAltText(WebCore::CachedImage*) (/WebKitBuild/Debug/../../Source/WebCore/rendering/RenderImage.cpp:118)
    WebCore::RenderImage::imageChanged(void*, WebCore::IntRect const*) (/WebKitBuild/Debug/../../Source/WebCore/rendering/RenderImage.cpp:193)
    WebCore::RenderObject::imageChanged(WebCore::CachedImage*, WebCore::IntRect const*) (/WebKitBuild/Debug/../../Source/WebCore/rendering/RenderObject.cpp:3041)
    WebCore::CachedImage::notifyObservers(WebCore::IntRect const*) (/WebKitBuild/Debug/../../Source/WebCore/loader/cache/CachedImage.cpp:290)
    WebCore::CachedImage::error(WebCore::CachedResource::Status) (/WebKitBuild/Debug/../../Source/WebCore/loader/cache/CachedImage.cpp:436)
    WebCore::SubresourceLoader::didFail(WebCore::ResourceError const&amp;) (/WebKitBuild/Debug/../../Source/WebCore/loader/SubresourceLoader.cpp:311)
    WebCore::ResourceLoader::didFail(WebCore::ResourceHandle*, WebCore::ResourceError const&amp;) (/WebKitBuild/Debug/../../Source/WebCore/loader/ResourceLoader.cpp:495)
    WebCore::sendRequestCallback(_GObject*, _GAsyncResult*, void*) (/WebKitBuild/Debug/../../Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:675)
    g_task_return_now (/WebKitBuild/Dependencies/Source/glib-2.36.0/gio/gtask.c:1105)
    complete_in_idle_cb (/WebKitBuild/Dependencies/Source/glib-2.36.0/gio/gtask.c:1114)
    g_main_context_dispatch (/WebKitBuild/Dependencies/Source/glib-2.36.0/glib/gmain.c:3054)
    g_main_context_iterate.isra.22 (/WebKitBuild/Dependencies/Source/glib-2.36.0/glib/gmain.c:3701)
    g_main_loop_run (/WebKitBuild/Dependencies/Source/glib-2.36.0/glib/gmain.c:3895)
    gtk_main (/WebKitBuild/Dependencies/Source/gtk+-3.6.0/gtk/gtkmain.c:1163)
    runTest(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;) (/WebKitBuild/Debug/../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:769)
Suppression (error hash=#D378470C27AE48D2#):
  For more info on using suppressions see http://dev.chromium.org/developers/tree-sheriffs/sheriff-details-chromium/memory-sheriff#TOC-Suppressing-memory-reports
{
   &lt;insert_a_suppression_name_here&gt;
   Memcheck:Leak
   fun:malloc
   fun:png_malloc
   fun:png_create_read_struct_2
   fun:png_create_read_struct
   fun:_ZN7WebCore14PNGImageReaderC1EPNS_15PNGImageDecoderE
   fun:_ZN7WebCore15PNGImageDecoder6decodeEb
   fun:_ZN7WebCore15PNGImageDecoder15isSizeAvailableEv
   fun:_ZN7WebCore11ImageSource15isSizeAvailableEv
   fun:_ZN7WebCore11BitmapImage15isSizeAvailableEv
   fun:_ZN7WebCore11BitmapImage11dataChangedEb
   fun:_ZN7WebCore5Image7setDataEN3WTF10PassRefPtrINS_12SharedBufferEEEb
   fun:_ZN7WebCore17loadImageFromFileEN3WTF7CStringE
   fun:_ZN7WebCore5Image20loadPlatformResourceEPKc
   fun:_ZNK7WebCore11CachedImage11brokenImageEf
   fun:_ZN7WebCore11CachedImage16imageForRendererEPKNS_12RenderObjectE
   fun:_ZN7WebCore11RenderImage22setImageSizeForAltTextEPNS_11CachedImageE
   fun:_ZN7WebCore11RenderImage12imageChangedEPvPKNS_7IntRectE
   fun:_ZN7WebCore12RenderObject12imageChangedEPNS_11CachedImageEPKNS_7IntRectE
   fun:_ZN7WebCore11CachedImage15notifyObserversEPKNS_7IntRectE
   fun:_ZN7WebCore11CachedImage5errorENS_14CachedResource6StatusE
   fun:_ZN7WebCore17SubresourceLoader7didFailERKNS_13ResourceErrorE
   fun:_ZN7WebCore14ResourceLoader7didFailEPNS_14ResourceHandleERKNS_13ResourceErrorE
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907041</commentid>
    <comment_count>1</comment_count>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-07-09 01:58:03 -0700</bug_when>
    <thetext>I&apos;ll have a look - looks interesting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907072</commentid>
    <comment_count>2</comment_count>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-07-09 04:14:05 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; I&apos;ll have a look - looks interesting.

It looks like false positive. 

See at the end of 

void PNGImageDecoder::decode(bool onlySize) 

    // If we&apos;re done decoding the image, we don&apos;t need the PNGImageReader
    // anymore.  (If we failed, |m_reader| has already been cleared.)
    else if (isComplete())
        m_reader.clear();

png structure gets cleaned after reader is deleted or closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907115</commentid>
    <comment_count>3</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-07-09 07:39:02 -0700</bug_when>
    <thetext>Marking as invalid since the leak level is Leak_StillReachable and is not definitely a leak.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>