<?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>30920</bug_id>
          
          <creation_ts>2009-10-29 12:58:28 -0700</creation_ts>
          <short_desc>DOM Storage&apos;s condition variable needs to handle spurious wakeups</short_desc>
          <delta_ts>2009-10-29 16:22:54 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>beidson</cc>
    
    <cc>fishd</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>159016</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-10-29 12:58:28 -0700</bug_when>
    <thetext>DOM Storage&apos;s condition variable needs to handle spurious wakeups.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159018</commentid>
    <comment_count>1</comment_count>
      <attachid>42127</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-10-29 12:59:49 -0700</bug_when>
    <thetext>Created attachment 42127
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159025</commentid>
    <comment_count>2</comment_count>
      <attachid>42127</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-29 13:13:50 -0700</bug_when>
    <thetext>Comment on attachment 42127
Patch v1

Is there any way to test this?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159028</commentid>
    <comment_count>3</comment_count>
      <attachid>42127</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-10-29 13:15:25 -0700</bug_when>
    <thetext>Comment on attachment 42127
Patch v1

&gt; Index: WebCore/ChangeLog
...
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        DOM Storage&apos;s condition variable needs to handle spurious wakeups
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=30920
&gt; +
&gt; +        DOM Storage&apos;s condition variable needs to handle spurious wakeups.

^^^ repeating the summary?


&gt; Index: WebCore/storage/LocalStorageThread.cpp
&gt; ===================================================================
&gt; --- WebCore/storage/LocalStorageThread.cpp	(revision 50240)
&gt; +++ WebCore/storage/LocalStorageThread.cpp	(working copy)
&gt; @@ -112,7 +112,8 @@ void LocalStorageThread::terminate()
&gt;  
&gt;      m_queue.append(LocalStorageTask::createTerminate(this));
&gt;  
&gt; -    m_terminateCondition.wait(m_terminateLock);
&gt; +    while (!m_queue.isKilled())
&gt; +        m_terminateCondition.wait(m_terminateLock);

nit: I think a more explicit &apos;bool m_terminated&apos; member would be a bit nicer,
purely so that one doesn&apos;t have to read the MessageQueue class to understand
what is going on here.

Also, I don&apos;t think that createTerminate needs to happen while m_terminateLock
is held.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159033</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-10-29 13:17:38 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 42127 [details])
&gt; Is there any way to test this?

I really wish there was, but I haven&apos;t been able to find a way to reliably reproduce the problem--inside or out of a layout test.  Maybe if we had some sort of unit test framework I could induce it.  Some day, I&apos;d like to investigate how we could incorporate one into WebKit, but I&apos;m pretty sure the answer today is no.  :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159053</commentid>
    <comment_count>5</comment_count>
      <attachid>42134</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-10-29 13:45:23 -0700</bug_when>
    <thetext>Created attachment 42134
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159139</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-10-29 16:22:54 -0700</bug_when>
    <thetext>Committed r50309: &lt;http://trac.webkit.org/changeset/50309&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42127</attachid>
            <date>2009-10-29 12:59:49 -0700</date>
            <delta_ts>2009-10-29 13:45:15 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-30920-20091029125947.patch</filename>
            <type>text/plain</type>
            <size>1209</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDI5MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMTAtMjkgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RE9NIFN0b3JhZ2UncyBjb25kaXRpb24gdmFyaWFibGUgbmVlZHMgdG8gaGFuZGxlIHNwdXJpb3Vz
IHdha2V1cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMwOTIwCisKKyAgICAgICAgRE9NIFN0b3JhZ2UncyBjb25kaXRpb24gdmFyaWFibGUgbmVlZHMg
dG8gaGFuZGxlIHNwdXJpb3VzIHdha2V1cHMuCisKKyAgICAgICAgKiBzdG9yYWdlL0xvY2FsU3Rv
cmFnZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFN0b3JhZ2VUaHJlYWQ6OnRl
cm1pbmF0ZSk6CisKIDIwMDktMTAtMjkgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXguCkluZGV4OiBXZWJDb3Jl
L3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0
b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNwcAkocmV2aXNpb24gNTAyNDApCisrKyBXZWJDb3Jl
L3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcg
KzExMiw4IEBAIHZvaWQgTG9jYWxTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQogCiAgICAgbV9x
dWV1ZS5hcHBlbmQoTG9jYWxTdG9yYWdlVGFzazo6Y3JlYXRlVGVybWluYXRlKHRoaXMpKTsKIAot
ICAgIG1fdGVybWluYXRlQ29uZGl0aW9uLndhaXQobV90ZXJtaW5hdGVMb2NrKTsKKyAgICB3aGls
ZSAoIW1fcXVldWUuaXNLaWxsZWQoKSkKKyAgICAgICAgbV90ZXJtaW5hdGVDb25kaXRpb24ud2Fp
dChtX3Rlcm1pbmF0ZUxvY2spOwogfQogCiB2b2lkIExvY2FsU3RvcmFnZVRocmVhZDo6cGVyZm9y
bVRlcm1pbmF0ZSgp
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42134</attachid>
            <date>2009-10-29 13:45:23 -0700</date>
            <delta_ts>2009-10-29 13:49:03 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-30920-20091029134521.patch</filename>
            <type>text/plain</type>
            <size>2405</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDI5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMTAtMjkgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RE9NIFN0b3JhZ2UncyBjb25kaXRpb24gdmFyaWFibGUgbmVlZHMgdG8gaGFuZGxlIHNwdXJpb3Vz
IHdha2V1cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMwOTIwCisKKyAgICAgICAgQWRkIGEgYm9vbGVhbiB0byBrZWVwIHRyYWNrIG9mIHdoZXRoZXIg
aXQncyBiZWVuIHRlcm1pbmF0ZWQuICBDbGVhbgorICAgICAgICB1cCB0aGUgbG9ja2luZyBjb2Rl
IGEgdGlueSBiaXQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gcmVhZC4gIFRoZXJlJ3MKKyAgICAgICAg
bm8gd2F5IHRvIHJlcHJvZHVjZSB0aGlzIHJlbGlhYmx5IGluIGEgTGF5b3V0VGVzdC4KKworICAg
ICAgICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxvY2FsU3RvcmFnZVRocmVhZDo6TG9jYWxTdG9yYWdlVGhyZWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okxv
Y2FsU3RvcmFnZVRocmVhZDo6cGVyZm9ybVRlcm1pbmF0ZSk6CisgICAgICAgICogc3RvcmFnZS9M
b2NhbFN0b3JhZ2VUaHJlYWQuaDoKKwogMjAwOS0xMC0yOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIE5vIHJldmlldywgcm9sbGluZyBvdXQgcjUwMjk2LgpJbmRl
eDogV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5jcHAJKHJldmlzaW9uIDUwMjQwKQor
KysgV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDYgKzQwLDcgQEAgUGFzc1JlZlB0cjxMb2NhbFN0b3JhZ2VUaHJlYWQ+IExvY2FsU3Rv
cgogCiBMb2NhbFN0b3JhZ2VUaHJlYWQ6OkxvY2FsU3RvcmFnZVRocmVhZCgpCiAgICAgOiBtX3Ro
cmVhZElEKDApCisgICAgLCBtX3Rlcm1pbmF0ZWQoZmFsc2UpCiB7CiAgICAgbV9zZWxmUmVmID0g
dGhpczsKIH0KQEAgLTEwOCwxMSArMTA5LDExIEBAIHZvaWQgTG9jYWxTdG9yYWdlVGhyZWFkOjp0
ZXJtaW5hdGUoKQogICAgIGlmICghbV90aHJlYWRJRCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGVybWluYXRlTG9jayk7Ci0KICAgICBtX3F1ZXVlLmFwcGVu
ZChMb2NhbFN0b3JhZ2VUYXNrOjpjcmVhdGVUZXJtaW5hdGUodGhpcykpOwogCi0gICAgbV90ZXJt
aW5hdGVDb25kaXRpb24ud2FpdChtX3Rlcm1pbmF0ZUxvY2spOworICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX3Rlcm1pbmF0ZUxvY2spOworICAgIHdoaWxlICghbV90ZXJtaW5hdGVkKQorICAgICAg
ICBtX3Rlcm1pbmF0ZUNvbmRpdGlvbi53YWl0KG1fdGVybWluYXRlTG9jayk7CiB9CiAKIHZvaWQg
TG9jYWxTdG9yYWdlVGhyZWFkOjpwZXJmb3JtVGVybWluYXRlKCkKQEAgLTEyMiw2ICsxMjMsNyBA
QCB2b2lkIExvY2FsU3RvcmFnZVRocmVhZDo6cGVyZm9ybVRlcm1pbmF0CiAgICAgbV9xdWV1ZS5r
aWxsKCk7CiAKICAgICBNdXRleExvY2tlciBsb2NrZXIobV90ZXJtaW5hdGVMb2NrKTsKKyAgICBt
X3Rlcm1pbmF0ZWQgPSB0cnVlOwogICAgIG1fdGVybWluYXRlQ29uZGl0aW9uLnNpZ25hbCgpOwog
fQogCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5oCShyZXZpc2lvbiA1MDI0
MCkKKysrIFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuaAkod29ya2luZyBjb3B5
KQpAQCAtNjcsNiArNjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgTXV0ZXgg
bV90ZXJtaW5hdGVMb2NrOwogICAgICAgICBUaHJlYWRDb25kaXRpb24gbV90ZXJtaW5hdGVDb25k
aXRpb247CisgICAgICAgIGJvb2wgbV90ZXJtaW5hdGVkOwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmU=
</data>
<flag name="review"
          id="23638"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>