in reply to Closing a piped command gives SIGABRT/SIGIOT

$? is telling you that the child process died with a signal, so its unlikely to be anything to do with perl itself.
Try something like
open(QSTAT, 'strace -o /tmp/tr qstat|')
to see what's going on in the child process. (A side-effect of this is that perl will now see the exit status of strace rather than qstat, so close() won't report anything wrong.)

Dave.

Replies are listed 'Best First'.
Re^2: Closing a piped command gives SIGABRT/SIGIOT
by talexb (Chancellor) on Feb 18, 2005 at 04:46 UTC

    Ah, strace. Good catch. I'll try that out. Thanks for the suggestion.

    Alex / talexb / Toronto

    "Groklaw is the open-source mentality applied to legal research" ~ Linus Torvalds

Re^2: Closing a piped command gives SIGABRT/SIGIOT
by talexb (Chancellor) on Feb 18, 2005 at 22:38 UTC

    Dave, thanks again for your suggestion. I have now tracked this extensively over the past two days and we finally found what we think is the problem .. a bad NIC. This was causing timeouts, dropped RPC commands and the appearance that the kernel was running out of buffers.

    Alex / talexb / Toronto

    "Groklaw is the open-source mentality applied to legal research" ~ Linus Torvalds