1. Change many(most) of the ckvmssts macro calls to ckvmsts_noperl as
these routines can be called with a null context, and that causes
ckvmssts to access violate instead of terminating Perl with the real
2. Fix pipe_exit_routine. This routine will be called with a null
context from the exit handler. It needs to extract the thread context
from the specific pipe info structure getting run down.
3. Safe_popen can open a pipe with out using a file descriptor in the
case where it waits for the subprocess to complete.
In this case, my_pclose() routine is never called.
This needs a special shortened version of pclose() to be called to do
Personal Opinion Only