diff --git a/src/parallel b/src/parallel index 2474eb26..2d2d8dbb 100755 --- a/src/parallel +++ b/src/parallel @@ -1310,18 +1310,17 @@ sub save_stdin_stdout_stderr { # Returns: N/A # Find file descriptors that are already opened (by the shell) - for (1..60) { + for my $fdno (1..61) { # /dev/fd/62 and above are used by bash for <(cmd) my $fh; - if(open($fh,">&=$_")) { - $Global::fd{$_}=$fh; + if(open($fh,">&=",$fdno)) { + $Global::fd{$fdno}=$fh; } } open $Global::original_stderr, ">&", "STDERR" or ::die_bug("Can't dup STDERR: $!"); open $Global::original_stdin, "<&", "STDIN" or ::die_bug("Can't dup STDIN: $!"); - $Global::fd{0} = $Global::original_stdin; } sub enough_file_handles { @@ -1334,16 +1333,18 @@ sub enough_file_handles { if($Global::grouped) { my %fh; my $enough_filehandles = 1; - # We need a filehandle for STDOUT and STDERR - # perl uses 7 filehandles for something? + # perl uses 7 filehandles for something? # open3 uses 2 extra filehandles temporarily - for my $i (1..8) { + # We need a filehandle for each redirected file descriptor + # (normally just STDOUT and STDERR) + for my $i (1..(7+2+keys %Global::fd)) { $enough_filehandles &&= open($fh{$i}, "<", "/dev/null"); } for (values %fh) { close $_; } return $enough_filehandles; } else { - return 1; + # Ungrouped does not need extra file handles + return 1; } } @@ -1490,13 +1491,15 @@ sub start_another_job { ::usleep(rand()*300); ::warning("No more processes: ", "Decreasing number of running jobs to $max. ", - "Raising ulimit -u may help.\n"); + "Raising ulimit -u or /etc/security/limits.conf may help.\n"); return 0; } } } else { # No more file handles - debug("Not starting: no more file handles\n"); + $Global::no_more_file_handles_warned++ or + ::warning("No more file handles. ". + "Raising ulimit -n or /etc/security/limits.conf may help.\n"); return 0; } } @@ -2882,16 +2885,16 @@ sub processes_available_by_system_limit { if($system_limit < $wanted_processes) { # The system_limit is less than the wanted_processes if($system_limit < 1 and not $Global::JobQueue->empty()) { - ::warning("Cannot spawn any jobs. Raising ulimit -u may help.\n"); + ::warning("Cannot spawn any jobs. Raising ulimit -u or /etc/security/limits.conf may help.\n"); ::wait_and_exit(255); } if(not $more_filehandles) { - ::warning("Only enough filehandles to run ", $system_limit, - " jobs in parallel. Raising ulimit -n may help.\n"); + ::warning("Only enough file handles to run ", $system_limit, " jobs in parallel.\n", + "Raising ulimit -n or /etc/security/limits.conf may help.\n"); } if($max_system_proc_reached) { ::warning("Only enough available processes to run ", $system_limit, - " jobs in parallel. Raising ulimit -u may help.\n"); + " jobs in parallel. Raising ulimit -u or /etc/security/limits.conf may help.\n"); } } if($] == 5.008008 and $system_limit > 1000) { @@ -3599,10 +3602,7 @@ sub new { 'commandline' => $commandline, # The commandline with no args 'workdir' => undef, # --workdir 'stdin' => undef, # filehandle for stdin (used for --pipe) - 'stdout' => undef, # filehandle for stdout (used for --group) # filename for writing stdout to (used for --files) - 'stdoutfilename' => undef, - 'stderr' => undef, # filehandle for stderr (used for --group) 'remaining' => "", # remaining data not sent to stdin (used for --pipe) 'datawritten' => 0, # amount of data sent via stdin (used for --pipe) 'transfersize' => 0, # size of files using --transfer @@ -3645,13 +3645,14 @@ sub openresultsfile { ::error("Cannot write to `$name'.\n"); ::wait_and_exit(255); } - $self->set_stdoutfilename($name); + $self->set_fd_file_name(1,$name); # prefix/name1/val1/name2/val2/stderr $name = "$dir/stderr"; if(not open($errfh,"+>",$name)) { ::error("Cannot write to `$name'.\n"); ::wait_and_exit(255); } + $self->set_fd_file_name(2,$name); open OUT, '>&', $outfh or ::die_bug("Can't redirect STDOUT: $!"); open ERR, '>&', $errfh or ::die_bug("Can't dup STDOUT: $!"); $self->set_fd(1,$outfh); @@ -3672,14 +3673,18 @@ sub fd { return $self->{'fd'}{$fd_no}; } -sub set_stdoutfilename { +sub set_fd_file_name { + # Set file name for a file descriptor my $self = shift; - $self->{'stdoutfilename'} = shift; + my $fd_no = shift; + $self->{'fd_file_name',$fd_no} = shift; } -sub stdoutfilename { +sub fd_file_name { + # Get file name for a file descriptor my $self = shift; - return $self->{'stdoutfilename'}; + my $fd_no = shift; + return $self->{'fd_file_name',$fd_no}; } sub write { @@ -4229,7 +4234,7 @@ sub start { # To group we create temporary files for STDOUT and STDERR # To avoid the cleanup unlink the files immediately (but keep them open) ($outfh, $name) = ::tempfile(SUFFIX => ".par"); - $job->set_stdoutfilename($name); + $job->set_fd_file_name(1,$name); $opt::files or unlink $name; ($errfh, $name) = ::tempfile(SUFFIX => ".par"); unlink $name; @@ -4383,18 +4388,16 @@ sub print { if($opt::pipe and $self->virgin()) { # Nothing was printed to this job: # cleanup tmp files if --files was set - unlink $self->{'stdoutfilename'}; + unlink $self->fd_file_name(1); return; } if($opt::dryrun) { # Nothing was printed to this job: # cleanup tmp files if --files was set - unlink $self->{'stdoutfilename'}; + unlink $self->fd_file_name(1); } # Only relevant for grouping $Global::grouped or return; - my $out = $self->fd(1); - my $err = $self->fd(2); my $command = $self->sshlogin_wrap(); if($Global::joblog) { @@ -4427,60 +4430,61 @@ sub print { # so flush to avoid STDOUT being buffered flush STDOUT; } - seek $err, 0, 0; - if($Global::debug) { - print STDERR "ERR:\n"; - } - if($opt::tag or defined $opt::tagstring) { - my $tag = $self->tag(); - # OpenSSH_3.6.1p2 gives 'tcgetattr: Invalid argument' with -tt - # This is a crappy way of ignoring it. - while(<$err>) { - if($_ ne "tcgetattr: Invalid argument\n") { - print STDERR $tag,$_; - } - # At most run the loop once - last; + for my $fdno (sort { $a <=> $b } keys %Global::fd) { + # Sort by file descriptor numerically: 1,2,3,..,9,10,11 + $fdno == 0 and next; + my $out_fd = $Global::fd{$fdno}; + my $in_fd = $self->fd($fdno); + if(not $in_fd) { +# ::warning("File descriptor $fdno not defined\n"); + next; } - while(<$err>) { - print STDERR $tag,$_; - } - } else { - my $buf; - sysread($err,$buf,1_000_000); - # OpenSSH_3.6.1p2 gives 'tcgetattr: Invalid argument' with -tt - $buf =~ s/^tcgetattr: Invalid argument\n//; - print STDERR $buf; - while(sysread($err,$buf,1_000_000)) { - print STDERR $buf; - } - } - flush STDERR; - - if($opt::files) { - print STDOUT $self->{'stdoutfilename'},"\n"; - } else { - my $buf; - seek $out, 0, 0; + seek $in_fd, 0, 0; if($Global::debug) { - print STDOUT "OUT:\n"; + print STDERR "File descriptor $fdno:\n"; } - if($opt::tag or defined $opt::tagstring) { - my $tag = $self->tag(); - while(<$out>) { - print STDOUT $tag,$_; - } + if($opt::files) { + $self->fd_file_name($fdno) and print $out_fd $self->fd_file_name($fdno),"\n"; } else { my $buf; - while(sysread($out,$buf,1_000_000)) { - print STDOUT $buf; + seek $in_fd, 0, 0; + if($Global::debug) { + print STDOUT "OUT:\n"; + } + if($opt::tag or defined $opt::tagstring) { + my $tag = $self->tag(); + if($fdno == 2) { + # OpenSSH_3.6.1p2 gives 'tcgetattr: Invalid argument' with -tt + # This is a crappy way of ignoring it. + while(<$in_fd>) { + if($_ ne "tcgetattr: Invalid argument\n") { + print $out_fd $tag,$_; + } + # At most run the loop once + last; + } + } + while(<$in_fd>) { + print $out_fd $tag,$_; + } + } else { + my $buf; + if($fdno == 2) { + # OpenSSH_3.6.1p2 gives 'tcgetattr: Invalid argument' with -tt + # This is a crappy way of ignoring it. + sysread($in_fd,$buf,1_000_000); + $buf =~ s/^tcgetattr: Invalid argument\n//; + print $out_fd $buf; + } + while(sysread($in_fd,$buf,1_000_000)) { + print $out_fd $buf; + } } } - flush STDOUT; + flush $out_fd; ::debug("< 4 GB' -# echo | niceload --io 10 parallel -q perl -e '"\$a=\"x\"x1000000;for(0..4300){print \$a}"' | md5sum +## echo | niceload --io 10 parallel -q perl -e '"\$a=\"x\"x1000000;for(0..4300){print \$a}"' | md5sum echo | parallel -q perl -e '$a="x"x1000000;for(0..4300){print $a}' | md5sum +echo '**' + echo "### Test Force outside the file handle limit, 2009-02-17 Gave fork error" (echo echo Start; seq 1 20000 | perl -pe 's/^/true /'; echo echo end) | stdout parallel -uj 0 | egrep -v 'processes took|adjusting' +echo '**' + echo '### Test of --retries on unreachable host' seq 2 | stdout parallel -k --retries 2 -v -S 4.3.2.1,: echo +echo '**' + echo '### Test race condition on 8 CPU (my laptop)'; seq 1 5000000 > /tmp/parallel_test; seq 1 10 | parallel -k "cat /tmp/parallel_test | parallel --pipe --recend '' -k gzip >/dev/null; echo {}" +echo '**' + echo '### Test exit val - true'; echo true | parallel; echo $? +echo '**' + echo '### Test exit val - false'; echo false | parallel; echo $? +echo '**' + echo '### Test --halt-on-error 0'; (echo "sleep 1;true"; echo "sleep 2;false";echo "sleep 3;true") | parallel -j10 --halt-on-error 0; echo $?; (echo "sleep 1;true"; echo "sleep 2;false";echo "sleep 3;true";echo "sleep 4; non_exist") | parallel -j10 --halt 0; echo $? +echo '**' + echo '### Test --halt-on-error 1'; (echo "sleep 1;true"; echo "sleep 2;false";echo "sleep 3;true") | parallel -j10 --halt-on-error 1; echo $?; (echo "sleep 1;true"; echo "sleep 2;false";echo "sleep 3;true";echo "sleep 4; non_exist") | parallel -j10 --halt 1; echo $? +echo '**' + echo '### Test --halt-on-error 2'; (echo "sleep 1;true"; echo "sleep 2;false";echo "sleep 3;true") | parallel -j10 --halt-on-error 2; echo $?; (echo "sleep 1;true"; echo "sleep 2;false";echo "sleep 3;true";echo "sleep 4; non_exist") | parallel -j10 --halt 2; echo $? -echo '### Test last dying print --halt-on-error'; +echo '**' + +echo '### Test last dying print --halt-on-error 1'; (seq 0 8;echo 0; echo 9) | parallel -j10 -kq --halt 1 perl -e 'sleep $ARGV[0];print STDERR @ARGV,"\n"; exit shift'; - echo $?; + echo exit code $? + +echo '### Test last dying print --halt-on-error 2'; (seq 0 8;echo 0; echo 9) | parallel -j10 -kq --halt 2 perl -e 'sleep $ARGV[0];print STDERR @ARGV,"\n"; exit shift'; - echo $? + echo exit code $? + +echo '**' echo '### Test slow arguments generation - https://savannah.gnu.org/bugs/?32834'; seq 1 3 | parallel -j1 "sleep 2; echo {}" | parallel -kj2 echo diff --git a/testsuite/tests-to-run/parallel-local18.sh b/testsuite/tests-to-run/parallel-local18.sh index 1fbe3ed2..08a66ca1 100644 --- a/testsuite/tests-to-run/parallel-local18.sh +++ b/testsuite/tests-to-run/parallel-local18.sh @@ -35,11 +35,17 @@ parallel -S localhost --env SPC echo 'a"$SPC"b' ::: 5 parallel -S csh@localhost --env SPC echo 'a"$SPC"b' ::: 5 parallel -S tcsh@localhost --env SPC echo 'a"$SPC"b' ::: 5 -echo '### Test --env for \n and \\ - single and double - no output is good' -perl -e 'for(10,92) { printf "%c%c %c%d\0",$_,$_,$_,$_ }' | stdout parallel --nice 19 -j4 -k -I // --arg-sep _ -0 V=// V2=V2=// parallel -k -j1 -S :,1/lo,1/tcsh@lo,1/csh@lo --env V,V2 echo \''"{}$V$V2"'\' ::: {#} {#} {#} {#} | sort | uniq -c | grep -v ' 4 '|grep -v xauth |grep -v X11 +echo '### Test --env for \n and \\ - single and double (bash only) - no output is good' +perl -e 'for(10,92) { printf "%c%c %c%d\0",$_,$_,$_,$_ }' | stdout parallel --nice 19 -j4 -k -I // --arg-sep _ -0 V=// V2=V2=// parallel -k -j1 -S 2/:,2/lo --env V,V2 echo \''"{}$V$V2"'\' ::: {#} {#} {#} {#} | sort | uniq -c | grep -v ' 4 '|grep -v xauth |grep -v X11 -echo '### Test --env for \n and \\ - single and double --onall - no output is good' -perl -e 'for(10,92) { printf "%c%c %c%d\0",$_,$_,$_,$_ }' | stdout parallel --nice 19 -j4 -k -I // --arg-sep _ -0 V=// V2=V2=// parallel -k -j1 -S :,1/lo,1/tcsh@lo,1/csh@lo --onall --env V,V2 echo \''"{}$V$V2"'\' ::: {#} | sort | uniq -c | grep -v ' 4 '|grep -v xauth |grep -v X11 +echo '### Test --env for \n and \\ - single and double (*csh only) - no output is good' +perl -e 'for(10,92) { printf "%c%c %c%d\0",$_,$_,$_,$_ }' | stdout parallel --nice 19 -j4 -k -I // --arg-sep _ -0 V=// V2=V2=// parallel -k -j1 -S 2/tcsh@lo,2/csh@lo --env V,V2 echo \''"{}$V$V2"'\' ::: {#} {#} {#} {#} | sort | uniq -c | grep -v ' 4 '|grep -v xauth |grep -v X11 + +echo '### Test --env for \n and \\ - single and double --onall (bash only) - no output is good' +perl -e 'for(10,92) { printf "%c%c %c%d\0",$_,$_,$_,$_ }' | stdout parallel --nice 19 -j4 -k -I // --arg-sep _ -0 V=// V2=V2=// parallel -k -j1 -S :,lo --onall --env V,V2 echo \''"{}$V$V2"'\' ::: {#} | sort | uniq -c | grep -v ' 4 '|grep -v xauth |grep -v X11 + +echo '### Test --env for \n and \\ - single and double --onall (*csh only) - no output is good' +perl -e 'for(10,92) { printf "%c%c %c%d\0",$_,$_,$_,$_ }' | stdout parallel --nice 19 -j4 -k -I // --arg-sep _ -0 V=// V2=V2=// parallel -k -j1 -S 1/tcsh@lo,1/csh@lo --onall --env V,V2 echo \''"{}$V$V2"'\' ::: {#} | sort | uniq -c | grep -v ' 2 '|grep -v xauth |grep -v X11 echo '### Test --env for \160 - which kills csh - single and double - no output is good' perl -e 'for(160) { printf "%c%c %c%d\0",$_,$_,$_,$_ }' | stdout parallel --nice 19 -j4 -k -I // --arg-sep _ -0 V=// V2=V2=// parallel -k -j1 -S :,1/lo,1/tcsh@lo --env V,V2 echo \''"{}$V$V2"'\' ::: {#} {#} {#} | uniq -c | grep -v ' 3 '|grep -v xauth |grep -v X11 diff --git a/testsuite/tests-to-run/parallel-polarhome.sh b/testsuite/tests-to-run/parallel-polarhome.sh index f1af6a18..d4a0a55e 100644 --- a/testsuite/tests-to-run/parallel-polarhome.sh +++ b/testsuite/tests-to-run/parallel-polarhome.sh @@ -1,19 +1,29 @@ #!/bin/bash -P="scosysv centos dragonfly netbsd freebsd solaris openbsd debian aix hpux qnx irix suse minix openindiana mandriva unixware miros raspberrypi hurd ultrix ubuntu redhat" -P="scosysv centos dragonfly netbsd freebsd solaris openbsd debian aix hpux qnx irix suse minix openindiana mandriva unixware raspberrypi hurd ultrix ubuntu" -#P="scosysv hpux qnx irix openindiana ultrix" -POLAR=`parallel echo {}.polarhome.com ::: $P` +P_ALL="vax freebsd solaris openbsd netbsd debian alpha aix redhat hpux ultrix qnx irix tru64 openindiana suse openstep mandriva ubuntu scosysv unixware dragonfly centos miros hurd minix raspberrypi" +P_NOTWORKING="vax alpha openstep" +P_NOTWORKING_YET="ultrix tru64" + +P_WORKING="freebsd solaris openbsd netbsd debian aix redhat hpux qnx irix openindiana suse mandriva ubuntu scosysv unixware dragonfly centos miros hurd minix raspberrypi" + +P="$P_WORKING" +POLAR=`parallel -k echo {}.polarhome.com ::: $P` +# Avoid the stupid /etc/issue.net banner at Polarhome echo '### Tests on polarhome machines' echo 'Setup on polarhome machines' -stdout parallel -kj0 ssh {} mkdir -p bin ::: $POLAR >/dev/null 2>/dev/null & -# scp to each polarhome machine do not work. From redhat it works. -stdout rsync -a `which parallel` redhat.polarhome.com:bin/ -stdout ssh redhat.polarhome.com \ - chmod 755 bin/parallel\; \ - bin/parallel --tag -kj0 -v --delay 0.2 ssh {} rm -f bin/parallel\\\;scp bin/parallel {}:bin/ ::: $POLAR | sort +stdout parallel -kj0 ssh -oLogLevel=quiet {} mkdir -p bin ::: $POLAR & +# scp to each polarhome machine do not work. Use cat +copy_to_host() { + H=$1 + # Avoid the stupid /etc/issue.net banner with -oLogLevel=quiet + ssh -oLogLevel=quiet $H rm -f bin/parallel + cat `which parallel` | ssh -oLogLevel=quiet $H 'cat > bin/parallel; chmod 755 bin/parallel' +} +export -f copy_to_host +stdout parallel -j0 --timeout 20 --tag -kj0 -v copy_to_host {} ::: $POLAR # Now test -echo 'Run the test on polarhome machines' -stdout parallel --argsep // -k --tag ssh {} bin/parallel -k echo Works on ::: {} // $POLAR | sort +echo '### Run the test on polarhome machines' +stdout parallel -j0 --argsep // -k --tag ssh -oLogLevel=quiet {} bin/perl bin/parallel -k echo Works on ::: {} // $POLAR + diff --git a/testsuite/wanted-results/parallel-local11 b/testsuite/wanted-results/parallel-local11 index f91003ba..09f68c2f 100644 --- a/testsuite/wanted-results/parallel-local11 +++ b/testsuite/wanted-results/parallel-local11 @@ -1,9 +1,12 @@ ### Test if we can deal with output > 4 GB 46a318993dfc8e2afd71ff2bc6f605f1 - +** ### Test Force outside the file handle limit, 2009-02-17 Gave fork error -parallel: Warning: Only enough filehandles to run 506 jobs in parallel. Raising ulimit -n may help. +parallel: Warning: Only enough file handles to run 506 jobs in parallel. +Raising ulimit -n or /etc/security/limits.conf may help. Start end +** ### Test of --retries on unreachable host ssh: connect to host 4.3.2.1 port 22: Connection timed out parallel: Warning: Could not figure out number of cpus on 4.3.2.1 (). Using 1. @@ -11,6 +14,7 @@ echo 1 1 echo 2 2 +** ### Test race condition on 8 CPU (my laptop) 1 2 @@ -22,14 +26,21 @@ echo 2 8 9 10 +** ### Test exit val - true 0 +** ### Test exit val - false 1 -/bin/bash: non_exist: command not found +** ### Test --halt-on-error 0 1 2 +/bin/bash: non_exist: command not found +** +### Test --halt-on-error 1 +1 +127 parallel: Starting no more jobs. Waiting for 2 jobs to finish. This job failed: sleep 2;false /bin/bash: non_exist: command not found @@ -37,16 +48,17 @@ parallel: Starting no more jobs. Waiting for 3 jobs to finish. This job failed: sleep 2;false parallel: Starting no more jobs. Waiting for 1 jobs to finish. This job failed: sleep 4; non_exist -### Test --halt-on-error 1 -1 -127 -parallel: This job failed: -sleep 2;false -parallel: This job failed: -sleep 2;false +** ### Test --halt-on-error 2 1 1 +parallel: This job failed: +sleep 2;false +parallel: This job failed: +sleep 2;false +** +### Test last dying print --halt-on-error 1 +exit code 9 0 1 2 @@ -76,13 +88,13 @@ parallel: Starting no more jobs. Waiting for 2 jobs to finish. This job failed: perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 8 parallel: Starting no more jobs. Waiting for 1 jobs to finish. This job failed: perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 9 +### Test last dying print --halt-on-error 2 +exit code 1 0 1 parallel: This job failed: perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 1 -### Test last dying print --halt-on-error -9 -1 +** ### Test slow arguments generation - https://savannah.gnu.org/bugs/?32834 1 2 diff --git a/testsuite/wanted-results/parallel-local18 b/testsuite/wanted-results/parallel-local18 index cfe5101e..e62c4171 100644 --- a/testsuite/wanted-results/parallel-local18 +++ b/testsuite/wanted-results/parallel-local18 @@ -24,19 +24,25 @@ a' * ? >o o o o &' at bin/parallel line 1310. -irix.polarhome.com Welcome to irix ...member of polarhome.com realm -mandriva.polarhome.com -mandriva.polarhome.com -mandriva.polarhome.com Mandriva Linux release 2010.2 (Official) for x86_64 -mandriva.polarhome.com Welcome to Mandrake/Mandriva ...member of polarhome.com realm -mandriva.polarhome.com Works on mandriva.polarhome.com -minix.polarhome.com Works on minix.polarhome.com -netbsd.polarhome.com -netbsd.polarhome.com -netbsd.polarhome.com NetBSD 5.1 -netbsd.polarhome.com Welcome to NetBSD ...member of polarhome.com realm -netbsd.polarhome.com Works on netbsd.polarhome.com -openbsd.polarhome.com -openbsd.polarhome.com -openbsd.polarhome.com OpenBSD 4.9 -openbsd.polarhome.com Welcome to OpenBSD ...member of polarhome.com realm +solaris.polarhome.com Works on solaris.polarhome.com openbsd.polarhome.com Works on openbsd.polarhome.com -openindiana.polarhome.com -openindiana.polarhome.com -openindiana.polarhome.com OpenIndiana SunOS 5.11 -openindiana.polarhome.com Welcome to OpenIndiana ...member of polarhome.com realm +netbsd.polarhome.com Works on netbsd.polarhome.com +debian.polarhome.com Works on debian.polarhome.com +aix.polarhome.com Works on aix.polarhome.com +redhat.polarhome.com Works on redhat.polarhome.com +hpux.polarhome.com Works on hpux.polarhome.com +qnx.polarhome.com Works on qnx.polarhome.com +qnx.polarhome.com parallel: Warning: Cannot figure out number of CPU cores. Using 1. +irix.polarhome.com Unknown open() mode '>&=' at bin/parallel line 1316. openindiana.polarhome.com Works on openindiana.polarhome.com openindiana.polarhome.com parallel: Warning: Cannot figure out number of CPU cores. Using 1. -qnx.polarhome.com -qnx.polarhome.com -qnx.polarhome.com QNX 6.5.0 -qnx.polarhome.com Welcome to QNX ...member of polarhome.com realm -qnx.polarhome.com perl: No such file or directory -raspberrypi.polarhome.com -raspberrypi.polarhome.com -raspberrypi.polarhome.com CentOS release 5.6 (Final) -raspberrypi.polarhome.com Welcome to CentOS ...member of polarhome.com realm -raspberrypi.polarhome.com Works on raspberrypi.polarhome.com -scosysv.polarhome.com -scosysv.polarhome.com SCO OpenServer(TM) Release 6 -scosysv.polarhome.com Welcome to scosysv ...member of polarhome.com realm -scosysv.polarhome.com Works on scosysv.polarhome.com -solaris.polarhome.com -solaris.polarhome.com -solaris.polarhome.com SUN Ultra-5 -solaris.polarhome.com SunOS 5.10 -solaris.polarhome.com Welcome to Solaris ...member of polarhome.com realm -solaris.polarhome.com Works on solaris.polarhome.com -suse.polarhome.com -suse.polarhome.com -suse.polarhome.com Welcome to SuSE/openSUSE ...member of polarhome.com realm suse.polarhome.com Works on suse.polarhome.com -suse.polarhome.com openSUSE 11.4 "Celadon" -ubuntu.polarhome.com -ubuntu.polarhome.com -ubuntu.polarhome.com Ubuntu 10.04.2 LTS -ubuntu.polarhome.com Welcome to Ubuntu ...member of polarhome.com realm +mandriva.polarhome.com Works on mandriva.polarhome.com ubuntu.polarhome.com Works on ubuntu.polarhome.com -ultrix.polarhome.com BEGIN failed--compilation aborted at File/Temp.pm line 148. -ultrix.polarhome.com BEGIN failed--compilation aborted at bin/parallel line 28. -ultrix.polarhome.com BEGIN not safe after errors--compilation aborted at Errno.pm line 188. -ultrix.polarhome.com Global symbol "EXPORT_OK" requires explicit package name at Errno.pm line 14. -ultrix.polarhome.com Global symbol "EXPORT_TAGS" requires explicit package name at Errno.pm line 32. -ultrix.polarhome.com Global symbol "ISA" requires explicit package name at Errno.pm line 12. -ultrix.polarhome.com Global symbol "VERSION" requires explicit package name at Errno.pm line 10. -ultrix.polarhome.com Global symbol "VERSION" requires explicit package name at Errno.pm line 11. -ultrix.polarhome.com Global symbol "VERSION" requires explicit package name at Errno.pm line 11. -ultrix.polarhome.com Variable "$VERSION" is not imported at Errno.pm line 10. -ultrix.polarhome.com Variable "$VERSION" is not imported at Errno.pm line 11. -ultrix.polarhome.com Variable "$VERSION" is not imported at Errno.pm line 11. -ultrix.polarhome.com Variable "%EXPORT_TAGS" is not imported at Errno.pm line 32. -ultrix.polarhome.com Variable "@EXPORT_OK" is not imported at Errno.pm line 14. -ultrix.polarhome.com Variable "@ISA" is not imported at Errno.pm line 12. -unixware.polarhome.com -unixware.polarhome.com SCO UnixWare 7.1.4 -unixware.polarhome.com Welcome to unixware ...member of polarhome.com realm +scosysv.polarhome.com Works on scosysv.polarhome.com unixware.polarhome.com Works on unixware.polarhome.com +dragonfly.polarhome.com Works on dragonfly.polarhome.com +centos.polarhome.com Works on centos.polarhome.com +miros.polarhome.com Works on miros.polarhome.com +hurd.polarhome.com Works on hurd.polarhome.com +minix.polarhome.com Works on minix.polarhome.com diff --git a/testsuite/wanted-results/test13 b/testsuite/wanted-results/test13 index 2ae8b3db..97ababb0 100644 --- a/testsuite/wanted-results/test13 +++ b/testsuite/wanted-results/test13 @@ -1,5 +1,6 @@ ### Test -k -parallel: Warning: Only enough filehandles to run 19 jobs in parallel. Raising ulimit -n may help. +parallel: Warning: Only enough file handles to run 19 jobs in parallel. +Raising ulimit -n or /etc/security/limits.conf may help. begin 1 2 @@ -17,6 +18,7 @@ begin 14 15 16 +parallel: Warning: No more file handles. Raising ulimit -n or /etc/security/limits.conf may help. 17 18 19