I have run into a problem after upgrading s system from 7.2 to 8.3
with a script that has worked correctly for about a decade. The
script, written in perl, starts about 25 processes to gather
information from a number of other systems. I create an array of
filehandles, one per remote system and then open each with an ssh
command:
$pid = open $fh, "ssh -xa $_ <command> 2>& 1 |"
I then set up a 30 second watchdog via sigalarm that will kill any
process that has not completed and exited and do a wait for each
process to complete with a waitpid.  (The processes normally all
complete in about 2 seconds.)

Each ssh command will return between about 14 and 32 KB of ASCII data,
written line at a time with lines of no more than 80- characters.. On
each run after the upgrade between 8 and 15 of the processes will hang
and only a portion of the data will be available when I read the
filehandle.

Anyone have any idea what could have changed between FreeBSD 7.2 and
8.3? It looks like a bug or a new limitation on pipe operations. I
don't know much about Perl internals, but I assume that no read is
done on the pipe until I attempt to read the filehandle, so I believe
it is some limit on writes to the pipe with no reads done.

I have modified the script to write to files instead of a pipe and it
is working again, but I would like to understand what broke my script.
-- 
R. Kevin Oberman, Network Engineer
E-mail: kob6...@gmail.com
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

Reply via email to