Skip eintr.t on FreeBSD (see perl #85842 and #84688).
authorCraig A. Berry <craigberry@mac.com>
Fri, 11 Mar 2011 23:00:46 +0000 (17:00 -0600)
committerCraig A. Berry <craigberry@mac.com>
Sat, 12 Mar 2011 00:01:12 +0000 (18:01 -0600)
It appears that a larger PerlIO buffer combined with writing to a
pipe triggers an alternate write mechanism in FreeBSD called a
direct write, which is not interruptible by signals.  That's
somewhat speculative and has not been confirmed by someone with
knowledge of FreeBSD internals, but we do know the test hangs, so
it's best not to run it for now.

t/io/eintr.t

index a1d9966..dc93660 100644 (file)
@@ -42,8 +42,10 @@ if (exists $ENV{PERLIO} && $ENV{PERLIO} =~ /stdio/  ) {
 
 # on Win32, alarm() won't interrupt the read/write call.
 # Similar issues with VMS.
+# On FreeBSD, writes to pipes of 8192 bytes or more use a mechanism
+# that is not interruptible (see perl #85842 and #84688).
 
-if ($^O eq 'VMS' || $^O eq 'MSWin32' || $^O eq 'cygwin') {
+if ($^O eq 'VMS' || $^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'freebsd') {
        skip_all('various portability issues');
        exit 0;
 }