<?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>63078</bug_id>
          
          <creation_ts>2011-06-21 11:02:07 -0700</creation_ts>
          <short_desc>REGRESSION (r88260): Assertion failure in FontCache::getCachedFontData when typing in Safari&apos;s address field</short_desc>
          <delta_ts>2011-06-22 06:36:43 -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>Text</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>ggaren</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>424566</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-21 11:02:07 -0700</bug_when>
    <thetext>To reproduce:

1. Type in Safari&apos;s address field while using a Debug build of WebKit

You&apos;ll hit an assertion in FontCache::getCachedFontData:

        ASSERT(m_purgePreventCount);

I don&apos;t know what the Release symptom is. Michael Saboff probably does.

Here&apos;s the backtrace:

&gt;	WebKit.dll!WebCore::FontCache::getCachedFontData(const WebCore::FontPlatformData * platformData=0x0b050218, WebCore::FontCache::ShouldRetain shouldRetain=DoNotRetain)  Line 279 + 0x29 bytes	C++
 	WebKit.dll!WebCore::FontCache::getFontDataForCharacters(const WebCore::Font &amp; font={...}, const wchar_t * characters=0x0012f3f0, int length=1)  Line 288 + 0x11 bytes	C++
 	WebKit.dll!WebCore::Font::glyphDataForCharacter(int c=8206, bool mirror=false, WebCore::FontDataVariant variant=NormalVariant)  Line 195 + 0x1e bytes	C++
 	WebKit.dll!WebCore::WidthIterator::advance(int offset=41, WebCore::GlyphBuffer * glyphBuffer=0x00000000)  Line 126 + 0x18 bytes	C++
 	WebKit.dll!WebCore::Font::floatWidthForSimpleText(const WebCore::TextRun &amp; run={...}, WebCore::GlyphBuffer * glyphBuffer=0x00000000, WTF::HashSet&lt;WebCore::SimpleFontData const *,WTF::PtrHash&lt;WebCore::SimpleFontData const *&gt;,WTF::HashTraits&lt;WebCore::SimpleFontData const *&gt; &gt; * fallbackFonts=0x00000000, WebCore::GlyphOverflow * glyphOverflow=0x00000000)  Line 455	C++
 	WebKit.dll!WebCore::Font::width(const WebCore::TextRun &amp; run={...}, WTF::HashSet&lt;WebCore::SimpleFontData const *,WTF::PtrHash&lt;WebCore::SimpleFontData const *&gt;,WTF::HashTraits&lt;WebCore::SimpleFontData const *&gt; &gt; * fallbackFonts=0x00000000, WebCore::GlyphOverflow * glyphOverflow=0x00000000)  Line 190 + 0x47 bytes	C++
 	WebKit.dll!WebCore::stringWidth(const WebCore::Font &amp; renderer={...}, const wchar_t * characters=0x0a361484, unsigned int length=41)  Line 98 + 0x10 bytes	C++
 	WebKit.dll!WebCore::StringTruncator::width(const WTF::String &amp; string={? Overview  Python v2.7.2 documentation}, const WebCore::Font &amp; font={...})  Line 194 + 0x1b bytes	C++
 	WebKit.dll!WebCore::WebCoreTextFloatWidth(const WTF::String &amp; text={? Overview  Python v2.7.2 documentation}, const WebCore::Font &amp; font={...})  Line 104 + 0xd bytes	C++
 	WebKit.dll!TextFloatWidth(const wchar_t * text=0x0afccf54, int length=41, const WebFontDescription &amp; description={...})  Line 126 + 0x27 bytes	C++</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424567</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-21 11:02:47 -0700</bug_when>
    <thetext>Presumably the WebKitGraphics.cpp APIs need some FontCachePurgePreventer love.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424568</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-21 11:03:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/9648668&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424627</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-06-21 11:51:59 -0700</bug_when>
    <thetext>The release build symptom is extra memory use, with a small risk of crash sprinkled in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425033</commentid>
    <comment_count>4</comment_count>
      <attachid>98120</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-06-21 22:39:44 -0700</bug_when>
    <thetext>Created attachment 98120
Patch with additional FontCachePurgePreventer for ASSERT failure

Patch includes two other additional instances of purge prevention based on code inspection.
These changes are speculative.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425170</commentid>
    <comment_count>5</comment_count>
      <attachid>98120</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-22 06:00:49 -0700</bug_when>
    <thetext>Comment on attachment 98120
Patch with additional FontCachePurgePreventer for ASSERT failure

I haven&apos;t been able to cause an assertion failure involving createDragImageForLink, but this seems fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425174</commentid>
    <comment_count>6</comment_count>
      <attachid>98120</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-22 06:09:42 -0700</bug_when>
    <thetext>Comment on attachment 98120
Patch with additional FontCachePurgePreventer for ASSERT failure

I can confirm that this patch fixes the assertion I was seeing. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425180</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-06-22 06:36:43 -0700</bug_when>
    <thetext>Committed r89425: &lt;http://trac.webkit.org/changeset/89425&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98120</attachid>
            <date>2011-06-21 22:39:44 -0700</date>
            <delta_ts>2011-06-22 06:09:42 -0700</delta_ts>
            <desc>Patch with additional FontCachePurgePreventer for ASSERT failure</desc>
            <filename>63078.patch</filename>
            <type>text/plain</type>
            <size>3093</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NDA4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDYtMjEgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg4MjYwKTogQXNzZXJ0aW9uIGZhaWx1
cmUgaW4gRm9udENhY2hlOjpnZXRDYWNoZWRGb250RGF0YSB3aGVuIHR5cGluZyBpbiBTYWZhcmkn
cyBhZGRyZXNzIGZpZWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02MzA3OAorCisgICAgICAgIEFkZGVkIEZvbnRDYWNoZVB1cmdlUHJldmVudGVyIGlu
IFdlYkNvcmU6OldlYkNvcmVUZXh0RmxvYXRXaWR0aCB0byBoYW5kbGUKKyAgICAgICAgYXNzZXJ0
aW9uIGZhaWx1cmUgd2hlbiB0eXBpbmcgaW4gYWRkcmVzcyBmaWVsZCBvbiB3aW5kb3dzLiAgSW52
ZXN0aWdhdGVkCisgICAgICAgIG90aGVyIHBvc3NpYmxlIGNvZGUgcGF0aHMgdGhhdCBuZWVkIHB1
cmdlIHByZXZlbnRpb24uICBBZGRlZCAKKyAgICAgICAgRm9udENhY2hlUHVyZ2VQcm90ZWN0aW9u
IHRvIFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmsgYW5kCisgICAgICAgIFdlYkNvcmU6
OmRvRHJhd1RleHRBdFBvaW50LgorCisgICAgICAgIE5vIGNoYW5nZSB0byBmdW5jdGlvbmFsaXR5
LCB0aGVyZWZvcmUgbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkb0RyYXdUZXh0QXRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3Jl
VGV4dEZsb2F0V2lkdGgpOgorCiAyMDExLTA2LTIxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAkocmV2aXNpb24g
ODkyMTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2Uu
aCIKICNpbmNsdWRlICJGb250LmgiCisjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAi
Rm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKQEAgLTEzMCw2ICsxMzEsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdl
Rm9yTGluayhLVVJMCiAKICAgICBjb25zdCBGb250KiBsYWJlbEZvbnQ7CiAgICAgY29uc3QgRm9u
dCogdXJsRm9udDsKKyAgICBGb250Q2FjaGVQdXJnZVByZXZlbnRlciBmb250Q2FjaGVQdXJnZVBy
ZXZlbnRlcjsKIAogICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKSAmJiBmcmFtZS0+c2V0dGluZ3Mo
KS0+Zm9udFJlbmRlcmluZ01vZGUoKSA9PSBBbHRlcm5hdGVSZW5kZXJpbmdNb2RlKSB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb250IGFsdGVybmF0ZVJlbmRlcmluZ01vZGVMYWJlbEZvbnQgPSBk
cmFnTGFiZWxGb250KERyYWdMaW5rTGFiZWxGb250c2l6ZSwgdHJ1ZSwgQWx0ZXJuYXRlUmVuZGVy
aW5nTW9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRS
ZW5kZXJlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dl
YkNvcmVUZXh0UmVuZGVyZXIuY3BwCShyZXZpc2lvbiA4OTIxMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVUZXh0UmVuZGVyZXIuaCIKIAogI2luY2x1
ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGb250RGVzY3Jp
cHRpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJTdHJpbmdU
cnVuY2F0b3IuaCIKQEAgLTQ4LDYgKzQ5LDggQEAgc3RhdGljIGJvb2wgaXNPbmVMZWZ0VG9SaWdo
dFJ1bihjb25zdCBUZQogCiBzdGF0aWMgdm9pZCBkb0RyYXdUZXh0QXRQb2ludChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgSW50UG9pbnQmIHBvaW50
LCBjb25zdCBGb250JiBmb250LCBjb25zdCBDb2xvciYgY29sb3IsIGludCB1bmRlcmxpbmVkSW5k
ZXgpCiB7CisgICAgRm9udENhY2hlUHVyZ2VQcmV2ZW50ZXIgZm9udENhY2hlUHVyZ2VQcmV2ZW50
ZXI7CisKICAgICBUZXh0UnVuIHJ1bih0ZXh0LmNoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSk7
CiAKICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
CkBAIC0xMDEsNiArMTA0LDggQEAgdm9pZCBXZWJDb3JlRHJhd0RvdWJsZWRUZXh0QXRQb2ludChH
cmFwaAogCiBmbG9hdCBXZWJDb3JlVGV4dEZsb2F0V2lkdGgoY29uc3QgU3RyaW5nJiB0ZXh0LCBj
b25zdCBGb250JiBmb250KQogeworICAgIEZvbnRDYWNoZVB1cmdlUHJldmVudGVyIGZvbnRDYWNo
ZVB1cmdlUHJldmVudGVyOworCiAgICAgcmV0dXJuIFN0cmluZ1RydW5jYXRvcjo6d2lkdGgodGV4
dCwgZm9udCk7CiB9CiAK
</data>
<flag name="review"
          id="92255"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>