<?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>190895</bug_id>
          
          <creation_ts>2018-10-24 18:49:03 -0700</creation_ts>
          <short_desc>[curl] ASSERTION FAILED: !m_didNotifyResponse || m_multipartHandle</short_desc>
          <delta_ts>2019-02-04 17:36:28 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>basuke</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1471989</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-10-24 18:49:03 -0700</bug_when>
    <thetext>[curl] ASSERTION FAILED: !m_didNotifyResponse || m_multipartHandle

Some test cases are failing due to hitting this assertion failure.

https://build.webkit.org/results/WinCairo%2064-bit%20WKL%20Debug%20(Tests)/r237400%20(986)/results.html
https://build.webkit.org/results/WinCairo%2064-bit%20WKL%20Debug%20(Tests)/r237400%20(986)/http/tests/xmlhttprequest/response-access-on-error-crash-log.txt

&gt; ASSERTION FAILED: !m_didNotifyResponse || m_multipartHandle
&gt; ..\..\Source\WebCore\platform\network\curl\CurlRequest.cpp(553) : WebCore::CurlRequest::invokeDidReceiveResponse
&gt; 1   00007FF94CE3221A WTFCrash
&gt; 2   00007FF930925CC1 WTFCrashWithInfo
&gt; 3   00007FF9329D6216 WebCore::CurlRequest::invokeDidReceiveResponse
&gt; 4   00007FF9329D5674 WebCore::CurlRequest::didCompleteTransfer
&gt; 5   00007FF933F021CA &lt;lambda_5806470903b2870987393fc72f55f7e5&gt;::operator()
&gt; 6   00007FF933F0323B WTF::Function&lt;void __cdecl(WebCore::CurlRequestSchedulerClient *)&gt;::CallableWrapper&lt;&lt;lambda_5806470903b2870987393fc72f55f7e5&gt; &gt;::call
&gt; 7   00007FF933F023C4 WTF::Function&lt;void __cdecl(WebCore::CurlRequestSchedulerClient *)&gt;::operator()
&gt; 8   00007FF933F020B0 &lt;lambda_1da8f92f09c065ef17064f00a6de3c5d&gt;::operator()
&gt; 9   00007FF933F0313F WTF::Function&lt;void __cdecl(void)&gt;::CallableWrapper&lt;&lt;lambda_1da8f92f09c065ef17064f00a6de3c5d&gt; &gt;::call
&gt; 10  00007FF930925598 WTF::Function&lt;void __cdecl(void)&gt;::operator()
&gt; 11  00007FF933EFCD2C WebCore::CurlRequestScheduler::executeTasks
&gt; 12  00007FF933EFCF12 WebCore::CurlRequestScheduler::workerThread
&gt; 13  00007FF933F022EB &lt;lambda_f9d7a5b486f6e184d8e42c552b16bba4&gt;::operator()
&gt; 14  00007FF933F032BF WTF::Function&lt;void __cdecl(void)&gt;::CallableWrapper&lt;&lt;lambda_f9d7a5b486f6e184d8e42c552b16bba4&gt; &gt;::call
&gt; 15  00007FF94CE49E07 WTF::Function&lt;void __cdecl(void)&gt;::operator()
&gt; 16  00007FF94CEBCB3E WTF::Thread::entryPoint
&gt; 17  00007FF94CF3E058 WTF::wtfThreadEntryPoint
&gt; 18  00007FF94BC5DC05 iswascii
&gt; 19  00007FF9531F1FE4 BaseThreadInitThunk
&gt; 20  00007FF965A2EF91 RtlUserThreadStart</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471990</commentid>
    <comment_count>1</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-10-24 19:02:44 -0700</bug_when>
    <thetext>The other day I saw this assertion failure while using MiniBrowser. IIRC, m_didNotifyResponse was true in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471991</commentid>
    <comment_count>2</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-10-24 19:08:45 -0700</bug_when>
    <thetext>I&apos;m stupid. It is obvious. m_didNotifyResponse is true and m_multipartHandle is false in that case. Nvm my comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501735</commentid>
    <comment_count>3</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-02-03 21:13:41 -0800</bug_when>
    <thetext>This issue occurs in WK2, too.

&gt; python ./Tools/Scripts/run-webkit-tests --debug --wincairo --no-retry-failures --child-processes=1 -v http/tests/xmlhttprequest/access-control-basic-denied.html http/tests/xmlhttprequest/access-control-repeated-failed-preflight-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501745</commentid>
    <comment_count>4</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-02-03 22:34:56 -0800</bug_when>
    <thetext>Here is the members of CurlRequest that assertion failure is happening.

&gt; -		this	0x000002b57563b230 {m_client=0x0000000000000000 &lt;NULL&gt; m_cancelled=false m_messageQueue=0x0000000000000000 &lt;NULL&gt; ...}	WebCore::CurlRequest *
&gt; +		WTF::ThreadSafeRefCounted&lt;WebCore::CurlRequest,WTF::DestructionThread::Any&gt;	{...}	WTF::ThreadSafeRefCounted&lt;WebCore::CurlRequest,WTF::DestructionThread::Any&gt;
&gt; +		WebCore::CurlRequestSchedulerClient	{...}	WebCore::CurlRequestSchedulerClient
&gt; +		WebCore::CurlMultipartHandleClient	{...}	WebCore::CurlMultipartHandleClient
&gt; +		m_client	0x0000000000000000 &lt;NULL&gt;	WebCore::CurlRequestClient *
&gt; 		m_cancelled	false	bool
&gt; +		m_messageQueue	0x0000000000000000 &lt;NULL&gt;	WTF::MessageQueue&lt;WTF::Function&lt;void ()&gt; &gt; *
&gt; +		m_request	{...}	WebCore::ResourceRequest
&gt; +		m_user	{m_impl={m_ptr=0x0000000000000000 &lt;NULL&gt; } }	WTF::String
&gt; +		m_password	{m_impl={m_ptr=0x0000000000000000 &lt;NULL&gt; } }	WTF::String
&gt; 		m_authType	0xffffffef	unsigned long
&gt; 		m_shouldSuspend	false	bool
&gt; 		m_enableMultipart	false	bool
&gt; +		m_curlHandle	unique_ptr {m_handle=0x000002b5756304a0 m_errorBuffer=0x000002b575635a30 &quot;Operation too slow. Less than 1 bytes/sec transferred the last 10 seconds&quot; ...}	std::unique_ptr&lt;WebCore::CurlHandle,std::default_delete&lt;WebCore::CurlHandle&gt; &gt;
&gt; +		m_formDataStream	{m_formData={m_ptr=0x0000000000000000 &lt;NULL&gt; } m_postData=empty m_isContentLengthUpdated=false ...}	WebCore::CurlFormDataStream
&gt; +		m_multipartHandle	empty	std::unique_ptr&lt;WebCore::CurlMultipartHandle,std::default_delete&lt;WebCore::CurlMultipartHandle&gt; &gt;
&gt; +		m_response	{url={m_string={m_impl={m_ptr=0x000002b575600e10 {...} } } m_isValid=0x00000001 m_protocolIsInHTTPFamily=...} ...}	WebCore::CurlResponse
&gt; 		m_didReceiveResponse	true	bool
&gt; 		m_didNotifyResponse	true	bool
&gt; 		m_didReturnFromNotify	false	bool
&gt; 		m_actionAfterInvoke	ReceiveData (0x00000001)	WebCore::CurlRequest::Action
&gt; 		m_finishedResultCode	CURLE_OPERATION_TIMEDOUT (0x0000001c)	&lt;unnamed-tag&gt;
&gt; 		m_isPausedOfRequest	false	bool
&gt; 		m_isPausedOfCallback	true	bool
&gt; +		m_pauseStateMutex	{m_byte={value=0x00 &apos;\0&apos; } }	WTF::Lock
&gt; 		m_isHandlePaused	true	bool
&gt; +		m_downloadMutex	{m_byte={value=0x00 &apos;\0&apos; } }	WTF::Lock
&gt; 		m_isEnabledDownloadToFile	false	bool
&gt; +		m_downloadFilePath	{m_impl={m_ptr=0x0000000000000000 &lt;NULL&gt; } }	WTF::String
&gt; 		m_downloadFileHandle	0xffffffffffffffff	void *
&gt; +		m_certificateInfo	{m_verificationError=0x00000000 m_certificateChain={...} }	WebCore::CertificateInfo
&gt; 		m_captureExtraMetrics	false	bool
&gt; +		m_networkLoadMetrics	{domainLookupStart={m_value=0.00061202049255371094 } domainLookupEnd={m_value=0.015612020492553710 } ...}	WebCore::NetworkLoadMetrics
&gt; +		m_requestStartTime	{m_value=1549261830.5828714 }	WTF::MonotonicTime
&gt; +		m_performStartTime	{m_value=1549261830.5834835 }	WTF::MonotonicTime
&gt; 		m_totalReceivedSize	0x0000000000000000	unsigned __int64
&gt; 		behaviorAfterInvoke	FinishTransfer (0x00000003)	WebCore::CurlRequest::Action
&gt; +		response	{url={m_string={m_impl={m_ptr=0x000002b575600e10 {...} } } m_isValid=0x00000001 m_protocolIsInHTTPFamily=...} ...}	const WebCore::CurlResponse &amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501746</commentid>
    <comment_count>5</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-02-03 22:42:58 -0800</bug_when>
    <thetext>Here is the callstack:

&gt; WTF.dll!WTFCrash() Line 255	C++
&gt; WebKit2.dll!WTFCrashWithInfo(int, const char *, const char *, int) Line 560	C++
&gt; WebKit2.dll!WebCore::CurlRequest::invokeDidReceiveResponse(const WebCore::CurlResponse &amp; response, WebCore::CurlRequest::Action behaviorAfterInvoke) Line 553	C++
&gt; WebKit2.dll!WebCore::CurlRequest::didCompleteTransfer(&lt;unnamed-tag&gt; result) Line 428	C++
&gt; WebKit2.dll!WebCore::CurlRequestScheduler::completeTransfer::&lt;unnamed-tag&gt;::operator()(WebCore::CurlRequestSchedulerClient * client) Line 210	C++
&gt; WebKit2.dll!WTF::Function&lt;void (WebCore::CurlRequestSchedulerClient *)&gt;::CallableWrapper&lt;`lambda at ..\..\Source\WebCore\platform\network\curl\CurlRequestScheduler.cpp:208:30&apos;&gt;::call(WebCore::CurlRequestSchedulerClient * in) Line 101	C++
&gt; WebKit2.dll!WTF::Function&lt;void (WebCore::CurlRequestSchedulerClient *)&gt;::operator()(WebCore::CurlRequestSchedulerClient * in) Line 56	C++
&gt; WebKit2.dll!WebCore::CurlRequestScheduler::finalizeTransfer::&lt;unnamed-tag&gt;::operator()() Line 232	C++
&gt; WebKit2.dll!WTF::Function&lt;void ()&gt;::CallableWrapper&lt;`lambda at ..\..\Source\WebCore\platform\network\curl\CurlRequestScheduler.cpp:222:17&apos;&gt;::call() Line 101	C++
&gt; WebKit2.dll!WTF::Function&lt;void ()&gt;::operator()() Line 56	C++
&gt; WebKit2.dll!WebCore::CurlRequestScheduler::executeTasks() Line 129	C++
&gt; WebKit2.dll!WebCore::CurlRequestScheduler::workerThread() Line 146	C++
&gt; WebKit2.dll!WebCore::CurlRequestScheduler::startThreadIfNeeded::&lt;unnamed-tag&gt;::operator()() Line 89	C++
&gt; WebKit2.dll!WTF::Function&lt;void ()&gt;::CallableWrapper&lt;`lambda at ..\..\Source\WebCore\platform\network\curl\CurlRequestScheduler.cpp:87:49&apos;&gt;::call() Line 101	C++
&gt; WTF.dll!WTF::Function&lt;void ()&gt;::operator()() Line 56	C++
&gt; WTF.dll!WTF::Thread::entryPoint(WTF::Thread::NewThreadContext * newThreadContext) Line 137	C++
&gt; WTF.dll!WTF::wtfThreadEntryPoint(void * data) Line 152	C++
&gt; [External Code]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501751</commentid>
    <comment_count>6</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-02-03 22:59:22 -0800</bug_when>
    <thetext>It seems that CurlRequestScheduler::completeTransfer was called while waiting for the reply of DidReceiveResponse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501763</commentid>
    <comment_count>7</comment_count>
      <attachid>361043</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-02-03 23:34:30 -0800</bug_when>
    <thetext>Created attachment 361043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502172</commentid>
    <comment_count>8</comment_count>
      <attachid>361043</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-02-04 17:35:51 -0800</bug_when>
    <thetext>Comment on attachment 361043
Patch

Clearing flags on attachment: 361043

Committed r240958: &lt;https://trac.webkit.org/changeset/240958&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502173</commentid>
    <comment_count>9</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-02-04 17:35:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502174</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-04 17:36:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/47806894&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361043</attachid>
            <date>2019-02-03 23:34:30 -0800</date>
            <delta_ts>2019-02-04 17:35:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190895-20190204163428.patch</filename>
            <type>text/plain</type>
            <size>2159</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwOTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM0NzhlMzUzYmRmNGFl
YWQ0NDE5OTEwNjJmOWFlZmJlZGM2ZjYwZi4uYTQxODlkN2ZlNDBhZjY5ZTBhYTdiOTBmNWNkNjJl
MWY5MDViMzQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTAyLTAzICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtjdXJsXSBB
U1NFUlRJT04gRkFJTEVEOiAhbV9kaWROb3RpZnlSZXNwb25zZSB8fCBtX211bHRpcGFydEhhbmRs
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwODk1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW4gYXNz
ZXJ0aW9uIHdhcyBmYWlsaW5nIGluIEN1cmxSZXF1ZXN0OjppbnZva2VEaWRSZWNlaXZlUmVzcG9u
c2UKKyAgICAgICAgYmVjYXVzZSBEaWRSZWNlaXZlUmVzcG9uc2Ugd2FzIGFscmVhZHkgZGlzcGF0
Y2hlZC4gVGhpcyBjb25kaXRpb24KKyAgICAgICAgd2FzIG1ldCBpZiBDdXJsUmVxdWVzdFNjaGVk
dWxlcjo6Y29tcGxldGVUcmFuc2ZlciBpcyBjYWxsZWQgd2hpbGUKKyAgICAgICAgd2FpdGluZyBm
b3IgdGhlIHJlcGx5IGZvciB0aGUgZmlyc3QgRGlkUmVjZWl2ZVJlc3BvbnNlLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3Q6Om5lZWRUb0ludm9rZURpZFJlY2VpdmVSZXNwb25zZSBjb25zdCk6CisgICAgICAg
IFJldHVybiB0cnVlIGlmIG1fZGlkTm90aWZ5UmVzcG9uc2UgaXMgZmFsc2UgZGlzcmVnYXJkIHRv
CisgICAgICAgIG1fZGlkUmV0dXJuRnJvbU5vdGlmeS4KKwogMjAxOS0wMi0wMyAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHNldE5lZWRzTGF5
b3V0IG9uIHRoZSByb290IG1vcmUgZXhwbGljaXRseSBhYm91dCB0cmlnZ2VyaW5nIGl0cyBzaWRl
LWVmZmVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0LmgKaW5kZXggOTNjYTYxMDNmZTYzZDVmZjAzMTA1NWM4MjVkODAyODI3NjRhZWRi
YS4uNTNhYTBiNTVmOGMwYzY5OGZhZWI0ZjFhZTNkZDY5YTFkNzMzMjQxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKQEAgLTE0
MSw3ICsxNDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBTZW5kRGF0YShib29sIGZvclB1
dE1ldGhvZCk7CiAKICAgICAvLyBQcm9jZXNzaW5nIGZvciBEaWRSZWNlaXZlUmVzcG9uc2UKLSAg
ICBib29sIG5lZWRUb0ludm9rZURpZFJlY2VpdmVSZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlkUmVjZWl2ZVJlc3BvbnNlICYmICghbV9kaWROb3RpZnlSZXNwb25zZSB8fCAhbV9kaWRSZXR1
cm5Gcm9tTm90aWZ5KTsgfQorICAgIGJvb2wgbmVlZFRvSW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNl
KCkgY29uc3QgeyByZXR1cm4gbV9kaWRSZWNlaXZlUmVzcG9uc2UgJiYgIW1fZGlkTm90aWZ5UmVz
cG9uc2U7IH0KICAgICBib29sIG5lZWRUb0ludm9rZURpZENhbmNlbFRyYW5zZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9kaWROb3RpZnlSZXNwb25zZSAmJiAhbV9kaWRSZXR1cm5Gcm9tTm90aWZ5ICYm
IG1fYWN0aW9uQWZ0ZXJJbnZva2UgPT0gQWN0aW9uOjpGaW5pc2hUcmFuc2ZlcjsgfQogICAgIHZv
aWQgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlRm9yRmlsZShVUkwmKTsKICAgICB2b2lkIGludm9r
ZURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBDdXJsUmVzcG9uc2UmLCBBY3Rpb24pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>