On 30 April 2018 at 22:15, Dave Mitchell <davem@iabyn.com> wrote: > On Mon, Apr 23, 2018 at 01:39:27PM +0100, Dave Mitchell wrote: >> On Thu, Mar 08, 2018 at 01:06:24AM +0200, Alexandr Ciornii wrote: >> > I've done manual bisect. I've used another module that hangs - >> > IO::Socket::SSL. t/mitm.t hangs and t/session_ticket.t fails. >> > Problem appear starting with commit >> > 8e920bd341e241f50a74dbf8aa343319f204e200 - "set PERL_EXIT_DESTRUCT_END >> > in all embeddings". >> >> Zefram, that commit was one of yours. I don't quite understand the >> implications of it, but note that the test file which newly hangs on >> Windows contains both a fork() and >> >> END { kill 9,@childs if @childs }; >> >> so perhaps an END block wasn't being called before, or used to be called >> only once, and is now being called multiple times or something? > > I've now pushed the branch smoke-me/davem/win32_exit, which may fix this. > Note that I've made the change in win32/perlhost.h blind, as I haven't > tried compiling or testing it on win32. > > Could someone try it on win32 and see that (a) it doesn't break win32; > (b) it fixes the distributions mentioned in this ticket: > > LWP-Protocol-https-6.0 > KAORU/HTTP-Async-0.33 > IO::Socket::SSL > Your branch builds and passes all tests for me on Windows 7 with 32-bit VS2015. I've tried out IO::Socket::SSL and find that in blead t/mitm.t hangs before doing anything. With your branch it now passes all 8 tests but then hangs instead of exiting. So it's an improvement of sorts, but something is still amiss somewhere. However, there's no improvement with t/session_ticket.t. With either build I get the following failure: D:\Temp\IO-Socket-SSL-2.056-0>perl -Mblib t\session_ticket.t 1..6 # listen at 127.0.0.1:51973 # listen at 127.0.0.1:51974 access to server[0] creating new ticket key1 server[0] reused=0 # connect to 0: success reuse=0 ok 1 - no initial session -> no reuse access to server[0] using current ticket secret server[0] reused=1 # connect to 0: success reuse=1 ok 2 - reuse with the next session and secret[0] access to server[1] using current ticket secret server[1] reused=1 rotate secrets # connect to 1: success reuse=1 ok 3 - reuse even though server changed, since they share ticket secret access to server[1] using non-current ticket secret creating new ticket key2 server[1] reused=0 rotate secrets # connect to 1: success reuse=0 ok 4 - reports non-reuse since server1 changed secret to secret[1] access to server[0] using non-current ticket secret creating new ticket key1 server[0] reused=0 # connect to 0: success reuse=0 ok 5 - reports non-reuse on server0 since got ticket with secret[1] in last step access to server[0] using current ticket secret server[0] reused=1 # connect to 0: success reuse=1 ok 6 - reuse again since got ticket with secret[0] in last step not ok 1 - select failed or timed out: Bad file descriptor at t\session_ticket.t line 113. # # Failed test 'select failed or timed out: Bad file descriptor at t\session_ticket.t line 113. # ' # at ./t/testlib.pl line 39. I haven't tried an earlier (pre-8e920bd341e241f50a74dbf8aa343319f204e200) perl to confirm that this used to work. I will try to do that in the next day or two.Thread Previous | Thread Next