Bug 118497
| Summary: | Leak: PNGImageDecoder::decode | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Brian Holt <brian.holt> |
| Component: | Images | Assignee: | Nobody <webkit-unassigned> |
| Status: | RESOLVED INVALID | ||
| Severity: | Normal | CC: | obzhirov |
| Priority: | P2 | ||
| Version: | 528+ (Nightly build) | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Bug Depends on: | |||
| Bug Blocks: | 116317 | ||
Brian Holt
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<WebCore::SharedBuffer>, 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&) (/WebKitBuild/Debug/../../Source/WebCore/loader/SubresourceLoader.cpp:311)
WebCore::ResourceLoader::didFail(WebCore::ResourceHandle*, WebCore::ResourceError const&) (/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<char, std::char_traits<char>, std::allocator<char> > const&) (/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
{
<insert_a_suppression_name_here>
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
}
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Anton Obzhirov
I'll have a look - looks interesting.
Anton Obzhirov
(In reply to comment #1)
> I'll have a look - looks interesting.
It looks like false positive.
See at the end of
void PNGImageDecoder::decode(bool onlySize)
// If we're done decoding the image, we don'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.
Brian Holt
Marking as invalid since the leak level is Leak_StillReachable and is not definitely a leak.