<?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>119620</bug_id>
          
          <creation_ts>2013-08-09 05:10:31 -0700</creation_ts>
          <short_desc>[Curl] Crash when starting second download.</short_desc>
          <delta_ts>2013-08-12 10:28:06 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Unspecified</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>peavo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>galpeter</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>915765</commentid>
    <comment_count>0</comment_count>
    <who name="">peavo</who>
    <bug_when>2013-08-09 05:10:31 -0700</bug_when>
    <thetext>When I start a second download, I sometimes get a crash in Curl.
This happens because the Curl easy handle is deleted and removed from the Curl multi handle twice.
The first delete happens when the download thread has finished downloading,
and the second happens when the WebDownload object is deleted, and calls the cancel method.
The Curl handle is then put in a delete queue, which is processed by the download thread the next time it starts.
This is the reason the crash happens when the second download is started.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915771</commentid>
    <comment_count>1</comment_count>
      <attachid>208419</attachid>
    <who name="">peavo</who>
    <bug_when>2013-08-09 05:30:57 -0700</bug_when>
    <thetext>Created attachment 208419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916300</commentid>
    <comment_count>2</comment_count>
      <attachid>208419</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-08-12 09:20:42 -0700</bug_when>
    <thetext>Comment on attachment 208419
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=208419&amp;action=review

r=me

&gt; Source/WebCore/platform/network/curl/CurlDownload.cpp:133
&gt; +        if (addToCurl(m_pendingHandleList[0]))

I know you only moved this code, but glancing at it I am concerned by this loop. It seems like we could get stuck here if the &apos;addToCurl&apos; keeps failing for the 0th entry in the pending handle list. Could you look over addToCurl at some point and see if this might be an issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916310</commentid>
    <comment_count>3</comment_count>
      <attachid>208419</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-12 09:34:54 -0700</bug_when>
    <thetext>Comment on attachment 208419
Patch

Clearing flags on attachment: 208419

Committed r153944: &lt;http://trac.webkit.org/changeset/153944&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916311</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-12 09:34:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916328</commentid>
    <comment_count>5</comment_count>
    <who name="">peavo</who>
    <bug_when>2013-08-12 10:28:06 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 208419 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=208419&amp;action=review
&gt; 
&gt; r=me
&gt; 

Thanks for reviewing, now I can download several files without crashing ;)

&gt; &gt; Source/WebCore/platform/network/curl/CurlDownload.cpp:133
&gt; &gt; +        if (addToCurl(m_pendingHandleList[0]))
&gt; 
&gt; I know you only moved this code, but glancing at it I am concerned by this loop. It seems like we could get stuck here if the &apos;addToCurl&apos; keeps failing for the 0th entry in the pending handle list. Could you look over addToCurl at some point and see if this might be an issue?

Good point, will have a look.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208419</attachid>
            <date>2013-08-09 05:30:57 -0700</date>
            <delta_ts>2013-08-12 09:34:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119620-20130809143042.patch</filename>
            <type>text/plain</type>
            <size>5237</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Mzg4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEzLTA4LTA5ICBwZWF2b0Bv
dXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisgICAgICAgIFtDdXJsXSBDcmFzaCB3
aGVuIHN0YXJ0aW5nIHNlY29uZCBkb3dubG9hZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBzZWNvbmQgZG93bmxvYWQgaXMgc3RhcnRlZCwg
YSBjcmFzaCBzb21ldGltZXMgb2NjdXJzIGluIEN1cmwuCisgICAgICAgIFRoaXMgaGFwcGVucyBi
ZWNhdXNlIHRoZSBDdXJsIGVhc3kgaGFuZGxlIGlzIGRlbGV0ZWQgYW5kIHJlbW92ZWQgZnJvbSB0
aGUgQ3VybCBtdWx0aSBoYW5kbGUgdHdpY2UuCisgICAgICAgIFRoaXMgaXMgc29sdmVkIGJ5IGFk
ZGluZyBhbiBhcnJheSB0byBrZWVwIHRyYWNrIG9mIGFjdGl2ZSBkb3dubG9hZHMgdG8gYXZvaWQg
ZG91YmxlIGRlbGV0aW9uLiAKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybERvd25sb2FkTWFuYWdlcjo6Q3Vy
bERvd25sb2FkTWFuYWdlcik6IFJlbW92ZWQgYWN0aXZlIGRvd25sb2FkIGNvdW50IG1lbWJlci4K
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxEb3dubG9hZE1hbmFnZXI6OmdldEFjdGl2ZURvd25sb2Fk
Q291bnQpOiBVc2UgYWN0aXZlIGRvd25sb2FkIGFycmF5IHRvIHJldHVybiBhY3RpdmUgZG93bmxv
YWQgY291bnQuCisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWRNYW5hZ2VyOjp1cGRhdGVI
YW5kbGVMaXN0KTogUmVtb3ZlIEN1cmwgaGFuZGxlcyBiZWZvcmUgYWRkaW5nLCBpbiBjYXNlIEN1
cmwgcmV1c2VzIGhhbmRsZXMuCisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWRNYW5hZ2Vy
OjphZGRUb0N1cmwpOiBBZGQgQ3VybCBoYW5kbGUgdG8gYWN0aXZlIGRvd25sb2FkIGFycmF5Lgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybERvd25sb2FkTWFuYWdlcjo6cmVtb3ZlRnJvbUN1cmwpOiBD
aGVjayBpZiBDdXJsIGhhbmRsZSBpcyBpbiBhY3RpdmUgZG93bmxvYWQgYXJyYXkgdG8gYXZvaWQg
ZG91YmxlIGRlbGV0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q3VybERvd25sb2FkTWFuYWdlcjo6
ZG93bmxvYWRUaHJlYWQpOiBSZW1vdmVkIGFjdGl2ZSBkb3dubG9hZCBjb3VudCBtZW1iZXIuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oOiBBZGRlZCBhcnJh
eSBvZiBhY3RpdmUgZG93bmxvYWRzIG1lbWJlciwgYW5kIHJlbW92ZWQgZG93bmxvYWQgY291bnQg
bWVtYmVyLgorCiAyMDEzLTA4LTA5ICBBcnVucHJhc2FkIFJhamt1bWFyICA8YXJ1cmFqa3VAY2lz
Y28uY29tPgogCiAgICAgICAgIFtRdF0gUXRXZWJLaXQgc2hvdWxkIGFsbG93IHNlbmRpbmcgZG9t
YWluIHNwZWNpZmljIGtleWNvZGUgdG8gSFRNTCBhcHBsaWNhdGlvbnMKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3Bw
CShyZXZpc2lvbiAxNTM4NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBDdXJsRG93bmxvYWRNYW5hZ2VyOjpDdXJsRG93bmxvYWRNYW5hZ2Vy
KCkKIDogbV90aHJlYWRJZCgwKQogLCBtX2N1cmxNdWx0aUhhbmRsZSgwKQotLCBtX2FjdGl2ZURv
d25sb2FkQ291bnQoMCkKICwgbV9ydW5UaHJlYWQoZmFsc2UpCiB7CiAgICAgY3VybF9nbG9iYWxf
aW5pdChDVVJMX0dMT0JBTF9BTEwpOwpAQCAtNzksNyArNzgsOCBAQCBib29sIEN1cmxEb3dubG9h
ZE1hbmFnZXI6OnJlbW92ZShDVVJMKiBjCiAKIGludCBDdXJsRG93bmxvYWRNYW5hZ2VyOjpnZXRB
Y3RpdmVEb3dubG9hZENvdW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9hY3RpdmVEb3dubG9h
ZENvdW50OworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICByZXR1cm4gbV9h
Y3RpdmVIYW5kbGVMaXN0LnNpemUoKTsKIH0KIAogaW50IEN1cmxEb3dubG9hZE1hbmFnZXI6Omdl
dFBlbmRpbmdEb3dubG9hZENvdW50KCkgY29uc3QKQEAgLTEyMCwzMSArMTIwLDQxIEBAIHZvaWQg
Q3VybERvd25sb2FkTWFuYWdlcjo6dXBkYXRlSGFuZGxlTGkKIHsKICAgICBNdXRleExvY2tlciBs
b2NrZXIobV9tdXRleCk7CiAKLSAgICAvLyBBZGQgcGVuZGluZyBjdXJsIGVhc3kgaGFuZGxlcyB0
byBtdWx0aSBsaXN0IAotICAgIGludCBzaXplID0gbV9wZW5kaW5nSGFuZGxlTGlzdC5zaXplKCk7
Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgaWYgKGFkZFRv
Q3VybChtX3BlbmRpbmdIYW5kbGVMaXN0WzBdKSkKLSAgICAgICAgICAgIG1fcGVuZGluZ0hhbmRs
ZUxpc3QucmVtb3ZlKDApOwotICAgIH0KLQogICAgIC8vIFJlbW92ZSBjdXJsIGVhc3kgaGFuZGxl
cyBmcm9tIG11bHRpIGxpc3QgCi0gICAgc2l6ZSA9IG1fcmVtb3ZlZEhhbmRsZUxpc3Quc2l6ZSgp
OworICAgIGludCBzaXplID0gbV9yZW1vdmVkSGFuZGxlTGlzdC5zaXplKCk7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgaWYgKHJlbW92ZUZyb21DdXJsKG1f
cmVtb3ZlZEhhbmRsZUxpc3RbMF0pKQogICAgICAgICAgICAgbV9yZW1vdmVkSGFuZGxlTGlzdC5y
ZW1vdmUoMCk7CiAgICAgfQorCisgICAgLy8gQWRkIHBlbmRpbmcgY3VybCBlYXN5IGhhbmRsZXMg
dG8gbXVsdGkgbGlzdCAKKyAgICBzaXplID0gbV9wZW5kaW5nSGFuZGxlTGlzdC5zaXplKCk7Cisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKGFkZFRvQ3Vy
bChtX3BlbmRpbmdIYW5kbGVMaXN0WzBdKSkKKyAgICAgICAgICAgIG1fcGVuZGluZ0hhbmRsZUxp
c3QucmVtb3ZlKDApOworICAgIH0KIH0KIAogYm9vbCBDdXJsRG93bmxvYWRNYW5hZ2VyOjphZGRU
b0N1cmwoQ1VSTCogY3VybEhhbmRsZSkKIHsKICAgICBDVVJMTWNvZGUgcmV0dmFsID0gY3VybF9t
dWx0aV9hZGRfaGFuZGxlKG1fY3VybE11bHRpSGFuZGxlLCBjdXJsSGFuZGxlKTsKLSAgICByZXR1
cm4gcmV0dmFsID09IENVUkxNX09LOworICAgIGlmIChyZXR2YWwgPT0gQ1VSTE1fT0spIHsKKyAg
ICAgICAgbV9hY3RpdmVIYW5kbGVMaXN0LmFwcGVuZChjdXJsSGFuZGxlKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBDdXJsRG93bmxv
YWRNYW5hZ2VyOjpyZW1vdmVGcm9tQ3VybChDVVJMKiBjdXJsSGFuZGxlKQogeworICAgIGludCBo
YW5kbGVQb3MgPSBtX2FjdGl2ZUhhbmRsZUxpc3QuZmluZChjdXJsSGFuZGxlKTsKKworICAgIGlm
IChoYW5kbGVQb3MgPCAwKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBDVVJMTWNv
ZGUgcmV0dmFsID0gY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKG1fY3VybE11bHRpSGFuZGxlLCBj
dXJsSGFuZGxlKTsKICAgICBpZiAocmV0dmFsID09IENVUkxNX09LKSB7CisgICAgICAgIG1fYWN0
aXZlSGFuZGxlTGlzdC5yZW1vdmUoaGFuZGxlUG9zKTsKICAgICAgICAgY3VybF9lYXN5X2NsZWFu
dXAoY3VybEhhbmRsZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE4NSw3ICsx
OTUsOCBAQCB2b2lkIEN1cmxEb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkVGhyZWFkCiAgICAgICAg
ICAgICAgICAgcmMgPSA6OnNlbGVjdChtYXhmZCArIDEsICZmZHJlYWQsICZmZHdyaXRlLCAmZmRl
eGNlcCwgJnRpbWVvdXQpOwogICAgICAgICB9IHdoaWxlIChyYyA9PSAtMSAmJiBlcnJubyA9PSBF
SU5UUik7CiAKLSAgICAgICAgd2hpbGUgKGN1cmxfbXVsdGlfcGVyZm9ybShkb3dubG9hZE1hbmFn
ZXItPmdldE11bHRpSGFuZGxlKCksICZkb3dubG9hZE1hbmFnZXItPm1fYWN0aXZlRG93bmxvYWRD
b3VudCkgPT0gQ1VSTE1fQ0FMTF9NVUxUSV9QRVJGT1JNKSB7IH0KKyAgICAgICAgaW50IGFjdGl2
ZURvd25sb2FkQ291bnQgPSAwOworICAgICAgICB3aGlsZSAoY3VybF9tdWx0aV9wZXJmb3JtKGRv
d25sb2FkTWFuYWdlci0+Z2V0TXVsdGlIYW5kbGUoKSwgJmFjdGl2ZURvd25sb2FkQ291bnQpID09
IENVUkxNX0NBTExfTVVMVElfUEVSRk9STSkgeyB9CiAKICAgICAgICAgaW50IG1lc3NhZ2VzSW5R
dWV1ZSA9IDA7CiAgICAgICAgIENVUkxNc2cqIG1zZyA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKGRv
d25sb2FkTWFuYWdlci0+Z2V0TXVsdGlIYW5kbGUoKSwgJm1lc3NhZ2VzSW5RdWV1ZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3du
bG9hZC5oCShyZXZpc2lvbiAxNTM4NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybERvd25sb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDggQEAg
cHJpdmF0ZToKIAogICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJZDsKICAgICBDVVJMTSog
bV9jdXJsTXVsdGlIYW5kbGU7Ci0gICAgaW50IG1fYWN0aXZlRG93bmxvYWRDb3VudDsKICAgICBW
ZWN0b3I8Q1VSTCo+IG1fcGVuZGluZ0hhbmRsZUxpc3Q7CisgICAgVmVjdG9yPENVUkwqPiBtX2Fj
dGl2ZUhhbmRsZUxpc3Q7CiAgICAgVmVjdG9yPENVUkwqPiBtX3JlbW92ZWRIYW5kbGVMaXN0Owog
ICAgIG11dGFibGUgTXV0ZXggbV9tdXRleDsKICAgICBib29sIG1fcnVuVGhyZWFkOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>