On Mon, Jan 06, 2020 at 06:38:29PM +0000, Travis CI wrote: > Build Update for apache/httpd > ------------------------------------- > > Build: #190 > Status: Still Failing > > Duration: 7 mins and 11 secs > Commit: 894b6a1 (trunk) > Author: Luca Toscano > Message: travis: add verbose config to perl test suite for Ubuntu Worker All > Modules > > For some reason we get sporadic failures only in Ubuntu Worker All Modules' > test: > > t/apache/rwrite.t ................... 53/? # Failed test 113 in > /home/travis/build/apache/httpd/test/perl-framework/blib/lib/Apache/TestCommon.pm > at line 56 fail #113 > t/apache/rwrite.t ................... Failed 1/114 subtests
It is quite easy to reproduce this for me under worker as well, if you run ./t/TEST t/apache/rwrite.t t/apache/pass_brigade.t in a loop, one of them will fail quite quickly. It looks like the client gets a socket closure instead of the very last block of the response, here is the client output: #server response: #HTTP/1.1 200 OK #Connection: close #Date: Tue, 07 Jan 2020 10:55:28 GMT #Server: Apache/2.5.1-dev (Unix) OpenSSL/1.1.1d #Vary: In-If1 #Content-Length: 0 #Client-Aborted: die #Client-Date: Tue, 07 Jan 2020 10:55:28 GMT #Client-Peer: 127.0.0.1:8529 #Client-Response-Num: 1 #Client-Transfer-Encoding: chunked #DMMATCH1: 1 #X-Content-Length-Note: added by Apache::TestRequest #X-Died: EOF when chunk header expected at /usr/share/perl5/vendor_perl/Net/HTTP/Methods.pm line 532. # # testing : bytes in body # expected: 10190848 # received: 10240000 not ok 114 Failed 1/114 subtests The tail end of error_log it looks like this: [Tue Jan 07 10:55:28.414864 2020] [core:trace8] [pid 37542:tid 140091146098432] util_filter.c(1129): [client 127.0.0.1:49470] brigade contains: bytes: 49205, non-file bytes: 49205, eor buckets: 1, morphing buckets: 0 [Tue Jan 07 10:55:28.414866 2020] [core:trace6] [pid 37542:tid 140091146098432] util_filter.c(942): [client 127.0.0.1:49470] setaside full brigade to empty brigade in 'req_core' output filter [Tue Jan 07 10:55:28.414872 2020] [core:trace6] [pid 37542:tid 140091146098432] util_filter.c(1015): [client 127.0.0.1:49470] reinstate full brigade to full brigade in 'core' output filter [Tue Jan 07 10:55:28.414876 2020] [core:trace6] [pid 37542:tid 140091146098432] core_filters.c(670): (11)Resource temporarily unavailable: [client 127.0.0.1:49470] writev_nonblocking: 0/1656 [Tue Jan 07 10:55:28.414879 2020] [core:trace6] [pid 37542:tid 140091146098432] util_filter.c(1015): [client 127.0.0.1:49470] reinstate empty brigade to full brigade in 'core' output filter [Tue Jan 07 10:55:28.414881 2020] [core:trace6] [pid 37542:tid 140091146098432] util_filter.c(1104): [client 127.0.0.1:49470] will flush because of FLUSH bucket [Tue Jan 07 10:55:28.414883 2020] [core:trace8] [pid 37542:tid 140091146098432] util_filter.c(1106): [client 127.0.0.1:49470] seen in brigade so far: bytes: 1656, non-file bytes: 1656, eor buckets: 0, morphing buckets: 0 [Tue Jan 07 10:55:28.414888 2020] [core:trace8] [pid 37542:tid 140091146098432] util_filter.c(1129): [client 127.0.0.1:49470] brigade contains: bytes: 0, non-file bytes: 0, eor buckets: 0, morphing buckets: 0 [Tue Jan 07 10:55:28.418754 2020] [core:trace6] [pid 37542:tid 140091146098432] core_filters.c(670): [client 127.0.0.1:49470] writev_nonblocking: 1656/1656 [Tue Jan 07 10:55:28.418764 2020] [core:trace6] [pid 37542:tid 140091146098432] util_filter.c(942): [client 127.0.0.1:49470] setaside empty brigade to empty brigade in 'core' output filter [Tue Jan 07 10:55:28.427067 2020] [optional_hook_import:error] [pid 37542:tid 140091146098432] AH01866: Optional hook test said: GET /test_rwrite?8192,10240000 HTTP/1.1 [Tue Jan 07 10:55:28.427072 2020] [optional_fn_export:error] [pid 37542:tid 140091146098432] AH01871: Optional function test said: GET /test_rwrite?8192,10240000 HTTP/1.1 and nothing else is logged for the connection. In both cases, with an explicit FLUSH at the end of the response I cannot reproduce this any more. I added one #if 0'ed out here: http://svn.apache.org/viewvc?view=revision&revision=1872431 and it's a simple ap_rflush(r) in mod_test_rwrite.c as well. This seems like a bug to me (not obviously in the tests) but I'm not sure exactly where. The "writev_nonblocking: 1656/1656" line *appears* to suggest the last block was successfully written to the socket. Regards, Joe > Recent examples: > https://travis-ci.org/apache/httpd/jobs/632425202 > https://travis-ci.org/apache/httpd/jobs/633250739 > > Add "-verbose" as test option to capture more data about the failure > when it happens. > > > > git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1872389 > 13f79535-47bb-0310-9956-ffa450edef68 > > View the changeset: > https://github.com/apache/httpd/compare/0bd4a3d88cba...894b6a185041 > > View the full build log and details: > https://travis-ci.org/apache/httpd/builds/633409517?utm_medium=notification&utm_source=email > > -- > > You can unsubscribe from build emails from the apache/httpd repository going > to > https://travis-ci.org/account/preferences/unsubscribe?repository=69847&utm_medium=notification&utm_source=email. > Or unsubscribe from *all* email updating your settings at > https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. > Or configure specific recipients for build notifications in your .travis.yml > file. See https://docs.travis-ci.com/user/notifications. >