| |
|
|
|
cURL Mailing List Monthly Index Single Mail
curl-library Mailing List Archives
Re: potential bug in multi_runsingle() in multi.c ?
From: 邓民文 <dengminwen_at_gmail.com>
Date: Wed, 18 Jun 2008 14:39:10 +0800
2008/6/18 Daniel Stenberg <daniel_at_haxx.se>:
> On Tue, 17 Jun 2008, ??? wrote:
my app code is similar with hiperfifo.c of curl's example, but i do lots of
(1) set CURLMOPT_PIPELINING to 1, CURLMOPT_MAXCONNECTS to 30000, using 6000
>
i explain it below
3. easyhandle A reach CURLM_STATE_DONE state, do
Right, the disconnect seems to be done inproperly. I think perhaps the
-- you said that check check->inuse before SocketIsDead() is called ??? can one conn used by 2 easyhandle at the same time ??? then conn->data will point to which one ??? i think ConnectionExists() should not return a conn that conn->inuse == TRUE, is it right ??? > > > / daniel.haxx.se > i found the bug may be: 1. easyhandle A reach CURLM_STATE_PERFORM state, and do Curl_removeHandleFromPipeline to pipe P 2. easyhandle B reach CURLM_STATE_CONNECT state, and in the ConnectionExists() function, it calls SocketIsDead() and return TRUE, it call Curl_disconnect(), and free the pipe which easyhandle A is using. note: in stderr, i found that: after SocketIsDead() return TRUE, check->data == easyhandle A check->inuse == TRUE 3. easyhandle A reach CURLM_STATE_DONE state, do Curl_removeHandleFromPipeline again (A access the pipe, which is free by disconnect()), so it become some times segment fault, some times dead loop -- dengminwen_at_gmail.comReceived on 2008-06-18 These mail archives are generated by hypermail. |
Page updated November 12, 2010.
web site info