After reading http://perldoc.perl.org/perlipc.html, I setted environment variable PERL_SIGNALS to unsafe and this part of your test suite passes, c.f. attachements.
jdurand@jddwwwopenindiana:~/.local/share/.cpan/build/App-MtAws-1.113-apqFj2$ perl -Ilib t/integration/sysread_syswrite_full.t >& /tmp/without_PERL_SIGNALS.txt jdurand@jddwwwopenindiana:~/.local/share/.cpan/build/App-MtAws-1.113-apqFj2$ PERL_SIGNALS=unsafe perl -Ilib t/integration/sysread_syswrite_full.t >& /tmp/with_PERL_SIGNALS.txt I let you take the appropriate conclusion. I note that this section already has a SKIP section depending on perl version -; Regards, Jean-Damien. ----- Mail original ----- De: "Victor Efimov" <vic...@vsespb.ru> À: "David Golden" <x...@xdg.me> Cc: jeandamiendur...@free.fr, "CPAN-Testers-Discuss" <cpan-testers-discuss@perl.org> Envoyé: Samedi 15 Février 2014 10:16:47 Objet: Re: failure report print returned EINTR error there is error: "Error Interrupted system call in print" caused by this line: print ($f $_[1]) or confess "Error $! in print"; i.e. it's not related to sysread/syswrite (below errors related to syswrite, but let's ignore them) 2014-02-15 13:10 GMT+04:00 David Golden <x...@xdg.me>: > Read the documentation for sysread/syswrite. They bypass buffered IO. > > On Sat, Feb 15, 2014 at 4:02 AM, Victor Efimov <vic...@vsespb.ru> wrote: >> there is report >> http://www.cpantesters.org/cpan/report/b22f82c2-943c-11e3-b4bc-9b1944f7ffa7 >> >> failure in this report cause by print() call returning EINTR. >> but it's not possible. perl protects buffered IO from Interrupts. >> >> please advice. > > > > -- > David Golden <x...@xdg.me> > Take back your inbox! → http://www.bunchmail.com/ > Twitter/IRC: @xdg
1..60 ok 1 ok 2 - sysread initialize buffer to empty string ok 3 ok 4 - sysreadfull initialize buffer to empty string ok 5 ok 6 - read initialize buffer to empty string ok 7 - should merge two reads ok 8 - should merge two reads ok 9 - should return first data chunk ok 10 - should return first data chunk correct ok 11 - should return EOF # SIG 21392 ok 12 - should handle EINTR in sysread ok 13 - should handle EINTR in sysread ok 14 - should handle EINTR in syswrite ok 15 ok 16 - should handle EINTR in syswrite ok 17 ok 18 - should handle EINTR in syswrite ok 19 ok 20 - should handle EINTR in syswrite ok 21 ok 22 - should handle EINTR in syswrite ok 23 ok 24 - should handle EINTR in syswrite ok 25 ok 26 - should handle EINTR in syswrite ok 27 ok 28 - should handle EINTR in syswrite ok 29 ok 30 - should handle EINTR in syswrite ok 31 ok 32 - should handle EINTR in syswrite ok 33 ok 34 - should merge two reads ok 35 - should merge two reads ok 36 - should return first data chunk ok 37 - should return first data chunk correct ok 38 - should return EOF # SIG 21392 ok 39 - should handle EINTR in sysread ok 40 - should handle EINTR in sysread # SIG 21400 Error Interrupted system call in print at t/integration/sysread_syswrite_full.t line 67. main::__ANON__(IO::Pipe::End=GLOB(0x8704ddc), "abxhrtf6abxhrtf6abxhrtf6abxhrtf6abxhrtf6abxhrtf6abxhrtf6abxhr"...) called at t/integration/sysread_syswrite_full.t line 156 main::__ANON__(IO::Pipe::End=GLOB(0x8704df0), IO::Pipe::End=GLOB(0x8704ddc), 21392) called at /home/jdurand/.local/share/.cpan/build/App-MtAws-1.113-apqFj2/t/integration/../lib/TestUtils.pm line 248 TestUtils::with_fork(CODE(0x87048f0), CODE(0x8704c10)) called at t/integration/sysread_syswrite_full.t line 160 not ok 41 - should handle EINTR in syswrite # Failed test 'should handle EINTR in syswrite' # at t/integration/sysread_syswrite_full.t line 148. # got: '20480' # expected: '65480' not ok 42 # Failed test at t/integration/sysread_syswrite_full.t line 149. not ok 43 - should handle EINTR in syswrite # Failed test 'should handle EINTR in syswrite' # at t/integration/sysread_syswrite_full.t line 148. # got: '0' # expected: '65480' not ok 44 # Failed test at t/integration/sysread_syswrite_full.t line 149. not ok 45 - should handle EINTR in syswrite # Failed test 'should handle EINTR in syswrite' # at t/integration/sysread_syswrite_full.t line 148. # got: '0' # expected: '65480' not ok 46 # Failed test at t/integration/sysread_syswrite_full.t line 149. not ok 47 - should handle EINTR in syswrite # Failed test 'should handle EINTR in syswrite' # at t/integration/sysread_syswrite_full.t line 148. # got: '0' # expected: '65480' not ok 48 # Failed test at t/integration/sysread_syswrite_full.t line 149. not ok 49 - should handle EINTR in syswrite # Failed test 'should handle EINTR in syswrite' # at t/integration/sysread_syswrite_full.t line 148. # got: '0' # expected: '65480' not ok 50 # Failed test at t/integration/sysread_syswrite_full.t line 149. not ok 51 - should handle EINTR in syswrite # Failed test 'should handle EINTR in syswrite' # at t/integration/sysread_syswrite_full.t line 148. # got: '0' # expected: '65480' not ok 52 # Failed test at t/integration/sysread_syswrite_full.t line 149. not ok 53 - should handle EINTR in syswrite # Failed test 'should handle EINTR in syswrite' # at t/integration/sysread_syswrite_full.t line 148. # got: '0' # expected: '65480' not ok 54 # Failed test at t/integration/sysread_syswrite_full.t line 149. not ok 55 - should handle EINTR in syswrite # Failed test 'should handle EINTR in syswrite' # at t/integration/sysread_syswrite_full.t line 148. # got: '0' # expected: '65480' not ok 56 # Failed test at t/integration/sysread_syswrite_full.t line 149. not ok 57 - should handle EINTR in syswrite # Failed test 'should handle EINTR in syswrite' # at t/integration/sysread_syswrite_full.t line 148. # got: '0' # expected: '65480' not ok 58 # Failed test at t/integration/sysread_syswrite_full.t line 149. not ok 59 - should handle EINTR in syswrite # Failed test 'should handle EINTR in syswrite' # at t/integration/sysread_syswrite_full.t line 148. # got: '0' # expected: '65480' not ok 60 # Failed test at t/integration/sysread_syswrite_full.t line 149. # Looks like you failed 20 tests of 60.
1..60 ok 1 ok 2 - sysread initialize buffer to empty string ok 3 ok 4 - sysreadfull initialize buffer to empty string ok 5 ok 6 - read initialize buffer to empty string ok 7 - should merge two reads ok 8 - should merge two reads ok 9 - should return first data chunk ok 10 - should return first data chunk correct ok 11 - should return EOF # SIG 21403 ok 12 - should handle EINTR in sysread ok 13 - should handle EINTR in sysread # SIG 21407 ok 14 - should handle EINTR in syswrite ok 15 ok 16 - should handle EINTR in syswrite ok 17 ok 18 - should handle EINTR in syswrite ok 19 ok 20 - should handle EINTR in syswrite ok 21 ok 22 - should handle EINTR in syswrite ok 23 ok 24 - should handle EINTR in syswrite ok 25 ok 26 - should handle EINTR in syswrite ok 27 ok 28 - should handle EINTR in syswrite ok 29 ok 30 - should handle EINTR in syswrite ok 31 ok 32 - should handle EINTR in syswrite ok 33 ok 34 - should merge two reads ok 35 - should merge two reads ok 36 - should return first data chunk ok 37 - should return first data chunk correct ok 38 - should return EOF # SIG 21403 ok 39 - should handle EINTR in sysread ok 40 - should handle EINTR in sysread # SIG 21411 ok 41 - should handle EINTR in syswrite ok 42 ok 43 - should handle EINTR in syswrite ok 44 ok 45 - should handle EINTR in syswrite ok 46 ok 47 - should handle EINTR in syswrite ok 48 ok 49 - should handle EINTR in syswrite ok 50 ok 51 - should handle EINTR in syswrite ok 52 ok 53 - should handle EINTR in syswrite ok 54 ok 55 - should handle EINTR in syswrite ok 56 ok 57 - should handle EINTR in syswrite ok 58 ok 59 - should handle EINTR in syswrite ok 60