Test 584 has recently become unreliable on FreeBSD:

fk@r500 ~/git/curl/tests $./runtests.pl -a -p -n 584 584 584 584 584 584
********* System characteristics ******** 
* curl 7.34.1-DEV (amd64-unknown-freebsd11.0) 
* libcurl/7.34.1-DEV OpenSSL/1.0.1e zlib/1.2.8 libidn/1.28
* Features: Debug TrackMemory IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP 
* Host: r500.local
* System: FreeBSD r500.local 11.0-CURRENT FreeBSD 11.0-CURRENT #627 
r260861+5e50329(fk): Sat Jan 18 23:03:55 CET 2014     
fk@r500.local:/usr/obj/usr/src/sys/ZOEY  amd64
* Server SSL:        ON   libcurl SSL:  ON 
* debug build:       ON   track memory: ON 
* valgrind:          OFF  HTTP IPv6     ON 
* FTP IPv6           ON   Libtool lib:  OFF
* Shared build:      no   Resolver:     stock
* SSL library:       OpenSSL
* Ports:
*   HTTP/8990 FTP/8992 FTP2/8995 RTSP/9007 FTPS/8993 HTTPS/8991 
*   TFTP/8997 HTTP-IPv6/8994 RTSP-IPv6/9008 FTP-IPv6/8996 
*   GOPHER/9009 GOPHER-IPv6/9009
*   SSH/8999 SOCKS/9000 POP3/9001 IMAP/9003 SMTP/9005
*   POP3-IPv6/9002 IMAP-IPv6/9004 SMTP-IPv6/9006
*   HTTPTLS/9011 HTTPTLS-IPv6/9012 
*   HTTP-PIPE/9014 
***************************************** 
test 584...[HTTP GET using pipelining (nonzero length after zero length)]
s--p--em-- OK (1   out of 6  , remaining: 00:12)
test 584...[HTTP GET using pipelining (nonzero length after zero length)]
s--p--em-- OK (2   out of 6  , remaining: 00:05)
test 584...[HTTP GET using pipelining (nonzero length after zero length)]
s--p--em-- OK (3   out of 6  , remaining: 00:02)
test 584...[HTTP GET using pipelining (nonzero length after zero length)]
s--p--em-- OK (4   out of 6  , remaining: 00:01)
test 584...[HTTP GET using pipelining (nonzero length after zero length)]
s--p--em-- OK (5   out of 6  , remaining: 00:00)
test 584...[HTTP GET using pipelining (nonzero length after zero length)]

lib530 returned 125, when expecting 0
 exit FAILED
== Contents of files in the log/ dir after test 584
=== Start of file http_server.log
 14:14:18.614556 ====> Client connect
 14:14:18.614691 TCP_NODELAY set
 14:14:18.614750 accept_connection 3 returned 4
 14:14:18.614798 accept_connection 3 returned 0
 14:14:18.614954 Read 65 bytes
 14:14:18.615058 Process 65 bytes request
 14:14:18.615159 Got request: GET /path/5840001 HTTP/1.1
 14:14:18.615245 Requested test number 584 part 1
 14:14:18.615469 - request found to be complete
 14:14:18.615618 Wrote request (65 bytes) input to log/server.input
 14:14:18.615706 Send response test584 section <data1>
 14:14:18.615928 Sent off 64 bytes
 14:14:18.616026 Response sent (64 bytes) and written to log/server.response
 14:14:18.616073 => persistant connection request ended, awaits new request
 14:14:18.616129 ====> Client connect
 14:14:18.616173 TCP_NODELAY set
 14:14:18.616214 accept_connection 3 returned 6
 14:14:18.616257 accept_connection 3 returned 0
 14:14:18.616305 Read 65 bytes
 14:14:18.616348 Process 65 bytes request
 14:14:18.616395 Got request: GET /path/5840002 HTTP/1.1
 14:14:18.616440 Requested test number 584 part 2
 14:14:18.616552 - request found to be complete
 14:14:18.616623 Wrote request (65 bytes) input to log/server.input
 14:14:18.616691 Send response test584 section <data2>
 14:14:18.616868 Sent off 16 bytes
 14:14:18.616939 Response sent (16 bytes) and written to log/server.response
 14:14:18.616985 => persistant connection request ended, awaits new request
 14:14:18.617278 ====> Client connect
 14:14:18.617377 TCP_NODELAY set
 14:14:18.617460 accept_connection 3 returned 7
 14:14:18.617543 accept_connection 3 returned 0
 14:14:18.617664 Read 65 bytes
 14:14:18.617749 Process 65 bytes request
 14:14:18.617840 Got request: GET /path/5840003 HTTP/1.1
 14:14:18.617925 Requested test number 584 part 3
 14:14:18.618130 - request found to be complete
 14:14:18.618196 Wrote request (65 bytes) input to log/server.input
 14:14:18.618265 Send response test584 section <data3>
 14:14:18.618439 Sent off 25 bytes
 14:14:18.618510 Response sent (25 bytes) and written to log/server.response
 14:14:18.618556 => persistant connection request ended, awaits new request
 14:14:18.618621 ====> Client connect
 14:14:18.618667 TCP_NODELAY set
 14:14:18.618707 accept_connection 3 returned 8
 14:14:18.618751 accept_connection 3 returned 0
 14:14:18.618801 Read 65 bytes
 14:14:18.618843 Process 65 bytes request
 14:14:18.618892 Got request: GET /path/5840004 HTTP/1.1
 14:14:18.618936 Requested test number 584 part 4
 14:14:18.619040 - request found to be complete
 14:14:18.619098 Wrote request (65 bytes) input to log/server.input
 14:14:18.619164 Send response test584 section <data4>
 14:14:18.619344 Sent off 148 bytes
 14:14:18.619421 Response sent (148 bytes) and written to log/server.response
 14:14:18.619470 => persistant connection request ended, awaits new request
 14:15:18.937076 Connection closed by client
 14:15:18.937577 ====> Client disconnect 0
 14:15:18.937850 Connection closed by client
 14:15:18.937975 ====> Client disconnect 0
 14:15:18.938616 Connection closed by client
 14:15:18.938739 ====> Client disconnect 0
 14:15:18.939187 Connection closed by client
 14:15:18.939335 ====> Client disconnect 0
=== End of file http_server.log
=== Start of file server.input
 GET /path/5840001 HTTP/1.1
 Host: 127.0.0.1:8990
 Accept: */*
 GET /path/5840002 HTTP/1.1
 Host: 127.0.0.1:8990
 Accept: */*
 GET /path/5840003 HTTP/1.1
 Host: 127.0.0.1:8990
 Accept: */*
 GET /path/5840004 HTTP/1.1
 Host: 127.0.0.1:8990
 Accept: */*
=== End of file server.input
=== Start of file server.response
 HTTP/1.1 200 OK
 Server: test-server/fake
 Content-Length: 4
 584
 HTTP/1.1 200 OK
 Server: test-server/fake
 Content-Length: 0
 HTTP/1.1 200 OK
 Server: test-server/fake
 Content-Length: 5
 585
 HTTP/1.1 200 OK
 Server: test-server/fake
 Content-Length: 4
 586
=== End of file server.response
=== Start of file stderr584
 URL: http://127.0.0.1:8990/path/584
 Start at URL 0
 * STATE: INIT => CONNECT handle 0x801cf0008; line 1020 (connection #-5000) 
 * Hostname was NOT found in DNS cache
 *   Trying 127.0.0.1...
 * STATE: CONNECT => WAITCONNECT handle 0x801cf0008; line 1067 (connection #0) 
 * Connected to 127.0.0.1 (127.0.0.1) port 8990 (#0)
 * STATE: WAITCONNECT => WAITDO handle 0x801cf0008; line 1186 (connection #0) 
 * WAITDO: Conn 0 send pipe 1 inuse FALSE athead TRUE
 * STATE: WAITDO => DO handle 0x801cf0008; line 1225 (connection #0) 
 > GET /path/5840001 HTTP/1.1
 Host: 127.0.0.1:8990
 Accept: */*
 * STATE: DO => DO_DONE handle 0x801cf0008; line 1272 (connection #0) 
 * STATE: DO_DONE => WAITPERFORM handle 0x801cf0008; line 1398 (connection #0) 
 * STATE: WAITPERFORM => PERFORM handle 0x801cf0008; line 1411 (connection #0) 
 * STATE: INIT => CONNECT handle 0x801cfc008; line 1020 (connection #-5000) 
 * Found bundle for host 127.0.0.1: 0x801cbd288
 * Server doesn't support pipelining
 * Hostname was found in DNS cache
 *   Trying 127.0.0.1...
 * STATE: CONNECT => WAITCONNECT handle 0x801cfc008; line 1067 (connection #1) 
 * Connected to 127.0.0.1 (127.0.0.1) port 8990 (#1)
 * STATE: WAITCONNECT => WAITDO handle 0x801cfc008; line 1186 (connection #1) 
 * WAITDO: Conn 1 send pipe 1 inuse FALSE athead TRUE
 * STATE: WAITDO => DO handle 0x801cfc008; line 1225 (connection #1) 
 > GET /path/5840002 HTTP/1.1
 Host: 127.0.0.1:8990
 Accept: */*
 * STATE: DO => DO_DONE handle 0x801cfc008; line 1272 (connection #1) 
 * STATE: DO_DONE => WAITPERFORM handle 0x801cfc008; line 1398 (connection #1) 
 * STATE: WAITPERFORM => PERFORM handle 0x801cfc008; line 1411 (connection #1) 
 * STATE: INIT => CONNECT handle 0x801d08008; line 1020 (connection #-5000) 
 * Found bundle for host 127.0.0.1: 0x801cbd288
 * Server doesn't support pipelining
 * Hostname was found in DNS cache
 *   Trying 127.0.0.1...
 * STATE: CONNECT => WAITCONNECT handle 0x801d08008; line 1067 (connection #2) 
 * Connected to 127.0.0.1 (127.0.0.1) port 8990 (#2)
 * STATE: WAITCONNECT => WAITDO handle 0x801d08008; line 1186 (connection #2) 
 * WAITDO: Conn 2 send pipe 1 inuse FALSE athead TRUE
 * STATE: WAITDO => DO handle 0x801d08008; line 1225 (connection #2) 
 > GET /path/5840003 HTTP/1.1
 Host: 127.0.0.1:8990
 Accept: */*
 * STATE: DO => DO_DONE handle 0x801d08008; line 1272 (connection #2) 
 * STATE: DO_DONE => WAITPERFORM handle 0x801d08008; line 1398 (connection #2) 
 * STATE: WAITPERFORM => PERFORM handle 0x801d08008; line 1411 (connection #2) 
 * STATE: INIT => CONNECT handle 0x801d14008; line 1020 (connection #-5000) 
 * Found bundle for host 127.0.0.1: 0x801cbd288
 * Server doesn't support pipelining
 * Hostname was found in DNS cache
 *   Trying 127.0.0.1...
 * STATE: CONNECT => WAITCONNECT handle 0x801d14008; line 1067 (connection #3) 
 * Connected to 127.0.0.1 (127.0.0.1) port 8990 (#3)
 * STATE: WAITCONNECT => WAITDO handle 0x801d14008; line 1186 (connection #3) 
 * WAITDO: Conn 3 send pipe 1 inuse FALSE athead TRUE
 * STATE: WAITDO => DO handle 0x801d14008; line 1225 (connection #3) 
 > GET /path/5840004 HTTP/1.1
 Host: 127.0.0.1:8990
 Accept: */*
 * STATE: DO => DO_DONE handle 0x801d14008; line 1272 (connection #3) 
 * STATE: DO_DONE => WAITPERFORM handle 0x801d14008; line 1398 (connection #3) 
 * STATE: WAITPERFORM => PERFORM handle 0x801d14008; line 1411 (connection #3) 
 * HTTP 1.1 or later with persistent connection, pipelining supported
 < HTTP/1.1 200 OK
 * Server test-server/fake is not blacklisted
 < Server: test-server/fake
 < Content-Length: 4
 < 
 * STATE: PERFORM => DONE handle 0x801cf0008; line 1581 (connection #0) 
 * Connection #0 to host 127.0.0.1 left intact
 * HTTP 1.1 or later with persistent connection, pipelining supported
 < HTTP/1.1 200 OK
 * Increasing bytecount by 25 from hbuflen
 * Increasing bytecount by 18 from hbuflen
 lib530.c:104 ABORTING TEST, since it seems that it would have run forever.
 * Closing connection 1
 * The cache now contains 3 members
 * Closing connection 2
 * The cache now contains 2 members
 * Closing connection 3
 * The cache now contains 1 members
=== End of file stderr584
=== Start of file stdout584
 HTTP/1.1 200 OK
 Server: test-server/fake
 Content-Length: 4
 584
 HTTP/1.1 200 OK
 Server: test-server/fake
 Content-Length: 0
 HTTP/1.1 200 OK
 Server: test-server/fake
 Content-Length: 5
 585
 HTTP/1.1 200 OK
 Server: test-server/fake
 Content-Length: 4
 586
=== End of file stdout584
TESTDONE: 5 tests out of 6 reported OK: 83%
TESTFAIL: These test cases failed: 584 
TESTDONE: 6 tests were considered during 64 seconds.

Bisecting lead to 5b2342d3772.

The attached work-around brings back one of the removed infof()
lines and gets the test working reliably again.

I assume that's because the info() call has the side effect of
slightly delaying Curl_addHandleToPipeline(), but I haven't
confirmed that.

Hopefully someone more familiar with the pipelining internals
can come up with a proper fix.

Fabian
From 23e13dd414e49e284605de417245b9b15cefb136 Mon Sep 17 00:00:00 2001
From: Fabian Keil <f...@fabiankeil.de>
Date: Wed, 22 Jan 2014 14:33:14 +0100
Subject: [PATCH] Bring back debug output for Curl_addHandleToPipeline()

This reverts a part of 5b2342d3772 and is a work-around to
get test 584 working reliably on FreeBSD 11-CURRENT again.
---
 lib/url.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/url.c b/lib/url.c
index 665133f..3f85502 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -2683,6 +2683,7 @@ CURLcode Curl_addHandleToPipeline(struct SessionHandle *data,
 {
   if(!Curl_llist_insert_next(pipeline, pipeline->tail, data))
     return CURLE_OUT_OF_MEMORY;
+  infof(data, "Curl_addHandleToPipeline: length: %d\n", pipeline->size);
   return CURLE_OK;
 }
 
-- 
1.8.5.2

Attachment: signature.asc
Description: PGP signature

-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html

Reply via email to