[Detaching after vfork from child process 13557]
OpenSSL 1.1.1s 1 Nov 2022
libcurl version: 7.87.0
Breakpoint 1, Curl_expire (data=0x1346808, milli=0, id=EXPIRE_RUN_NOW) at multi.c:3517
3517 in multi.c
data = 0x1346808
milli = 0
id = EXPIRE_RUN_NOW
* STATE: INIT => CONNECT handle 0x1346808; line 1909 (connection #-5000)
* Added connection 0. The cache now contains 1 members
[New Thread 0x7ffff76a1700 (LWP 13559)]
Thread 1 "url_test.bin" hit Breakpoint 1, Curl_expire (data=0x1346808, milli=1, id=EXPIRE_ASYNC_NAME) at multi.c:3517
3517 in multi.c
data = 0x1346808
milli = 1
id = EXPIRE_ASYNC_NAME
* STATE: CONNECT => RESOLVING handle 0x1346808; line 1955 (connection #0)
Thread 1 "url_test.bin" hit Breakpoint 1, Curl_expire (data=0x1346808, milli=2, id=EXPIRE_ASYNC_NAME) at multi.c:3517
3517 in multi.c
data = 0x1346808
milli = 2
id = EXPIRE_ASYNC_NAME
Thread 1 "url_test.bin" hit Breakpoint 1, Curl_expire (data=0x1346808, milli=4, id=EXPIRE_ASYNC_NAME) at multi.c:3517
3517 in multi.c
data = 0x1346808
milli = 4
id = EXPIRE_ASYNC_NAME
Thread 1 "url_test.bin" hit Breakpoint 1, Curl_expire (data=0x1346808, milli=8, id=EXPIRE_ASYNC_NAME) at multi.c:3517
3517 in multi.c
data = 0x1346808
milli = 8
id = EXPIRE_ASYNC_NAME
Thread 1 "url_test.bin" hit Breakpoint 1, Curl_expire (data=0x1346808, milli=16, id=EXPIRE_ASYNC_NAME) at multi.c:3517
3517 in multi.c
data = 0x1346808
milli = 16
id = EXPIRE_ASYNC_NAME
[Thread 0x7ffff76a1700 (LWP 13559) exited]
Thread 1 "url_test.bin" hit Breakpoint 1, Curl_expire (data=0x1346808, milli=0, id=EXPIRE_RUN_NOW) at multi.c:3517
3517 in multi.c
data = 0x1346808
milli = 0
id = EXPIRE_RUN_NOW
Thread 1 "url_test.bin" hit Breakpoint 1, Curl_expire (data=0x1346808, milli=7, id=EXPIRE_ASYNC_NAME) at multi.c:3517
3517 in multi.c
data = 0x1346808
milli = 7
id = EXPIRE_ASYNC_NAME
* [CONN-0-0] setup, init filter chain
* [CONN-0-0] cf_add(filter=SOCKET)
* [CONN-0-0] cf_add(filter=SSL)
* [CONN-0-0][CF-SOCKET] setup(remotehost=fstream.binance.com)
* STATE: RESOLVING => CONNECTING handle 0x1346808; line 2029 (connection #0)
* family0 == v4, family1 == v6
* Trying 52.197.50.89:443...
Thread 1 "url_test.bin" hit Breakpoint 1, Curl_expire (data=0x1346808, milli=149988, id=EXPIRE_DNS_PER_NAME) at multi.c:3517
3517 in multi.c
data = 0x1346808
milli = 149988
id = EXPIRE_DNS_PER_NAME
Thread 1 "url_test.bin" hit Breakpoint 1, Curl_expire (data=0x1346808, milli=149988, id=EXPIRE_DNS_PER_NAME2) at multi.c:3517
3517 in multi.c
data = 0x1346808
milli = 149988
id = EXPIRE_DNS_PER_NAME2
Thread 1 "url_test.bin" hit Breakpoint 1, Curl_expire (data=0x1346808, milli=100, id=EXPIRE_HAPPY_EYEBALLS) at multi.c:3517
3517 in multi.c
data = 0x1346808
milli = 100
id = EXPIRE_HAPPY_EYEBALLS
* [CONN-0-0] connect(block=0)-> 0, done=0
* [CONN-0-0] connect(block=0)-> 0, done=0
* [CONN-0-0] connect(block=0)-> 0, done=0
[New Thread 0x7ffff76a1700 (LWP 13560)]
I did this
I am using the
multi_socketinterface withlibevto connect to a WebSocket endpoint. I have observed an intermittent bug where curl gets stuckCURLMstate::MSTATE_CONNECTINGstage for around 150 seconds because the underlying socket wasn't writable(is_connecteddoneout parameter isfalse) when curl checked. And, nearest timeout set is forEXPIRE_DNS_PER_NAMEwhich defaults to 200 seconds. But, every single time, eventually, curl connects to the endpoint.I expected the following
I'd expect curl to routinely check the underlying socket until it becomes writable.
This might help in reproducing the bug
wss://fstream.binance.com/stream?streams=btcusdt@depth5CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MSto100(ms) (Not sure how this is related.)curl/libcurl version
operating system