Bug 18150 - LEAK: 39 Node on Acid3
Summary: LEAK: 39 Node on Acid3
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: New Bugs (show other bugs)
Version: 528+ (Nightly build)
Hardware: Mac OS X 10.5
: P2 Normal
Assignee: Nobody
URL: http://acid3.acidtests.org/
Keywords:
Depends on:
Blocks:
 
Reported: 2008-03-27 10:40 PDT by Matt Lilek
Modified: 2008-04-14 23:19 PDT (History)
2 users (show)

See Also:


Attachments
Leaks output (351.26 KB, text/plain)
2008-03-27 10:43 PDT, Matt Lilek
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Matt Lilek 2008-03-27 10:40:28 PDT
According to the leak check run-safari does when quitting Safari, we're leaking 39 Nodes after running Acid3.  Using debug build of r31371 on 10.5.2 (9C7010) with Safari 3.1 (5525.13).

MallocStackLogging is turned on, opening Safari, running Acid3 (empty page set as homepage), closing the browser window and waiting 10 seconds, then running leaks on Safari via the command line.

Cached/uncached load does not make a difference.
Comment 1 Matt Lilek 2008-03-27 10:43:13 PDT
Created attachment 20126 [details]
Leaks output
Comment 2 Eric Seidel (no email) 2008-04-14 23:13:38 PDT
This might be related to the obvious leak of SimplFontData objects from:
SimpleFontData* CSSFontFaceSource::getFontData(const FontDescription& fontDescription, bool syntheticBold, bool syntheticItalic, CSSFontSelector* fontSelector)

That method is named "get" but we return new'd pointers in the SVG fonts case.  Bad bad.
Comment 3 Eric Seidel (no email) 2008-04-14 23:19:40 PDT
(In reply to comment #2)
> This might be related to the obvious leak of SimplFontData objects from:
> SimpleFontData* CSSFontFaceSource::getFontData(const FontDescription&
> fontDescription, bool syntheticBold, bool syntheticItalic, CSSFontSelector*
> fontSelector)
> 
> That method is named "get" but we return new'd pointers in the SVG fonts case. 
> Bad bad.
> 

Ok, I was wrong.  These get stuffed off into m_fontDataTable and released when pruneTable() is called.