<?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>108435</bug_id>
          
          <creation_ts>2013-01-30 23:40:09 -0800</creation_ts>
          <short_desc>HashSet&lt;&gt;::find(0) hits an assertion in debug and returns a bogus iterator</short_desc>
          <delta_ts>2013-01-31 15:00:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>108380</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>mjs</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>821137</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-30 23:40:09 -0800</bug_when>
    <thetext>Add the following test case to HashSet.cpp in WTF tests:

TEST(WTF, HashSetFindZero)
{
    HashSet&lt;uint64_t&gt; testSet;

    // Initial capacity is null.
    ASSERT_EQ(0, testSet.capacity());
    testSet.add(static_cast&lt;uint64_t&gt;(123));
    testSet.add(static_cast&lt;uint64_t&gt;(456));
    ASSERT_TRUE(testSet.find(static_cast&lt;uint64_t&gt;(0)) == testSet.end());
}

You&apos;ll hit an assertion in

    template&lt;typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits&gt;
    template&lt;typename HashTranslator, typename T&gt;
    void HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::checkKey(const T&amp; key)
    {
        if (!HashFunctions::safeToCompareToEmptyOrDeleted)
            return;
        ASSERT(!HashTranslator::equal(KeyTraits::emptyValue(), key));

This results in HashSet::find returning a bogus iterator and HashSet::remove deleting an unrelated item, resulting in a really bad consistent state where size can be a bogus value like -1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821968</commentid>
    <comment_count>1</comment_count>
      <attachid>185869</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-31 14:37:26 -0800</bug_when>
    <thetext>Created attachment 185869
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821988</commentid>
    <comment_count>2</comment_count>
      <attachid>185869</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-31 14:49:26 -0800</bug_when>
    <thetext>Comment on attachment 185869
Fixes the bug

Sam says we shouldn&apos;t do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821990</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-31 14:49:54 -0800</bug_when>
    <thetext>I&apos;ll fix the internal code instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822000</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-31 15:00:02 -0800</bug_when>
    <thetext>This is by design, but you can just change the HashTrait to support the value 0.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185869</attachid>
            <date>2013-01-31 14:37:26 -0800</date>
            <delta_ts>2013-01-31 14:49:26 -0800</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-108435-20130131143410.patch</filename>
            <type>text/plain</type>
            <size>4368</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDE0OTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAxLTMxICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhhc2hTZXQ8Pjo6ZmluZCgwKSBoaXRzIGFuIGFzc2Vy
dGlvbiBpbiBkZWJ1ZyBhbmQgcmV0dXJucyBhIGJvZ3VzIGl0ZXJhdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg0MzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeGl0IGVhcmx5IGlmIHRoZSBrZXkg
aXMgZW1wdHkgdmFsdWUuCisKKyAgICAgICAgKiB3dGYvSGFzaFRhYmxlLmg6CisgICAgICAgIChX
VEY6Ojo6ZmluZCk6CisKIDIwMTMtMDEtMzEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFZlY3RvciBzaG91bGQgY29uc3VsdCBhbGxvY2F0b3IgYWJvdXQgaWRl
YWwgc2l6ZSB3aGVuIGNob29zaW5nIGNhcGFjaXR5LgpJbmRleDogU291cmNlL1dURi93dGYvSGFz
aFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgJKHJldmlz
aW9uIDE0MTQ3NikKKysrIFNvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC05NjUsNyArOTY1LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiAKICAgICB0eXBlbmFtZSBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46
Oml0ZXJhdG9yIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPjo6ZmluZChjb25zdCBUJiBrZXkpCiAgICAgewotICAgICAgICBp
ZiAoIW1fdGFibGUpCisgICAgICAgIGlmICghbV90YWJsZSB8fCAoSGFzaEZ1bmN0aW9uczo6c2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgJiYgSGFzaFRyYW5zbGF0b3I6OmVxdWFsKEtleVRy
YWl0czo6ZW1wdHlWYWx1ZSgpLCBrZXkpKSkKICAgICAgICAgICAgIHJldHVybiBlbmQoKTsKIAog
ICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gbG9va3VwPEhhc2hUcmFuc2xhdG9yPihrZXkpOwpA
QCAtOTc5LDcgKzk3OSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gCiAgICAgdHlwZW5hbWUgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpj
b25zdF9pdGVyYXRvciBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmZpbmQoY29uc3QgVCYga2V5KSBjb25zdAogICAgIHsK
LSAgICAgICAgaWYgKCFtX3RhYmxlKQorICAgICAgICBpZiAoIW1fdGFibGUgfHwgKEhhc2hGdW5j
dGlvbnM6OnNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkICYmIEhhc2hUcmFuc2xhdG9yOjpl
cXVhbChLZXlUcmFpdHM6OmVtcHR5VmFsdWUoKSwga2V5KSkpCiAgICAgICAgICAgICByZXR1cm4g
ZW5kKCk7CiAKICAgICAgICAgVmFsdWVUeXBlKiBlbnRyeSA9IGNvbnN0X2Nhc3Q8SGFzaFRhYmxl
Kj4odGhpcyktPmxvb2t1cDxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTQ5MCkKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEzLTAx
LTMxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhhc2hTZXQ8
Pjo6ZmluZCgwKSBoaXRzIGFuIGFzc2VydGlvbiBpbiBkZWJ1ZyBhbmQgcmV0dXJucyBhIGJvZ3Vz
IGl0ZXJhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDg0MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCB0d28gcmVncmVzc2lvbiB0ZXN0cyB0byBlbnN1cmUgSGFzaFNldDw+OjpmaW5kKDAp
IGFuZCBIYXNoU2V0PD46OnJlbW92ZSgwKQorICAgICAgICBkb2Vzbid0IGhpdCBhc3NlcnRpb25z
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEkpOgorCiAy
MDEzLTAxLTMwICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgYSBjYWxsIHRvIHRoZSBwYWdlIFVJIGNsaWVudCB0byBkZXRlcm1pbmUgaWYgYSBw
bHVnLWluIHNob3VsZCBsb2FkCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoU2V0LmNwcAkocmV2aXNpb24gMTQxNDc2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvSGFzaFNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDQgKzc2LDQ4IEBAIFRFU1Qo
V1RGLCBIYXNoU2V0SW5pdGlhbENhcGFjaXR5KQogICAgIGdlbmVyYXRlVGVzdENhcGFjaXR5VXBU
b1NpemU8MTI4PigpOwogfQogCitURVNUKFdURiwgSGFzaFNldEZpbmRaZXJvKQoreworICAgIEhh
c2hTZXQ8aW50PiB0ZXN0U2V0OworCisgICAgQVNTRVJUX0VRKHRlc3RTZXQuc2l6ZSgpLCAwKTsK
KyAgICB0ZXN0U2V0LmFkZCgxMjMpOworICAgIHRlc3RTZXQuYWRkKDQ1Nik7CisgICAgQVNTRVJU
X0VRKHRlc3RTZXQuc2l6ZSgpLCAyKTsKKworICAgIEFTU0VSVF9UUlVFKHRlc3RTZXQuZmluZCgx
MjMpID09IHRlc3RTZXQuYmVnaW4oKSk7CisgICAgSGFzaFNldDxpbnQ+Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IHRlc3RTZXQuYmVnaW4oKTsKKyAgICBBU1NFUlRfVFJVRSh0ZXN0U2V0LmZpbmQoNDU2
KSA9PSArK2l0KTsKKyAgICBBU1NFUlRfVFJVRSh0ZXN0U2V0LmZpbmQoMCkgPT0gdGVzdFNldC5l
bmQoKSk7Cit9CisKK1RFU1QoV1RGLCBIYXNoU2V0UmVtb3ZlWmVybykKK3sKKyAgICBIYXNoU2V0
PGludD4gdGVzdFNldDsKKworICAgIEFTU0VSVF9FUSh0ZXN0U2V0LnNpemUoKSwgMCk7CisgICAg
dGVzdFNldC5hZGQoMTIzKTsKKyAgICB0ZXN0U2V0LmFkZCg0NTYpOworICAgIEFTU0VSVF9FUSh0
ZXN0U2V0LnNpemUoKSwgMik7CisgICAgQVNTRVJUX1RSVUUodGVzdFNldC5maW5kKDApID09IHRl
c3RTZXQuZW5kKCkpOworCisgICAgdGVzdFNldC5yZW1vdmUoMTIzKTsKKyAgICBBU1NFUlRfRVEo
dGVzdFNldC5zaXplKCksIDEpOworICAgIEFTU0VSVF9UUlVFKHRlc3RTZXQuZmluZCgwKSA9PSB0
ZXN0U2V0LmVuZCgpKTsKKyAgICBBU1NFUlRfVFJVRSh0ZXN0U2V0LmZpbmQoMTIzKSA9PSB0ZXN0
U2V0LmVuZCgpKTsKKyAgICBBU1NFUlRfVFJVRSh0ZXN0U2V0LmZpbmQoNDU2KSA9PSB0ZXN0U2V0
LmJlZ2luKCkpOworCisgICAgdGVzdFNldC5yZW1vdmUoMCk7CisgICAgQVNTRVJUX0VRKHRlc3RT
ZXQuc2l6ZSgpLCAxKTsKKyAgICBBU1NFUlRfVFJVRSh0ZXN0U2V0LmZpbmQoMCkgPT0gdGVzdFNl
dC5lbmQoKSk7CisgICAgQVNTRVJUX1RSVUUodGVzdFNldC5maW5kKDEyMykgPT0gdGVzdFNldC5l
bmQoKSk7CisgICAgQVNTRVJUX1RSVUUodGVzdFNldC5maW5kKDQ1NikgPT0gdGVzdFNldC5iZWdp
bigpKTsKKworICAgIHRlc3RTZXQucmVtb3ZlKDQ1Nik7CisgICAgQVNTRVJUX0VRKHRlc3RTZXQu
c2l6ZSgpLCAwKTsKKyAgICBBU1NFUlRfVFJVRSh0ZXN0U2V0LmZpbmQoMCkgPT0gdGVzdFNldC5l
bmQoKSk7CisgICAgQVNTRVJUX1RSVUUodGVzdFNldC5maW5kKDEyMykgPT0gdGVzdFNldC5lbmQo
KSk7CisgICAgQVNTRVJUX1RSVUUodGVzdFNldC5maW5kKDQ1NikgPT0gdGVzdFNldC5lbmQoKSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>