[mod.computers.vax] LIB$SPAWN Problem

lauri@MITRE-BEDFORD.ARPA.UUCP (03/04/87)

We are running a program which SPAWNS commands frequently.  Most of the time,
these commands work properly, but every once in a while, the LIB$SPAWN will 
fail.  The return status for LIB$SPAWN is SS$_NOIOCHAN.  I realize that 
LIB$SPAWN needs to assign an I/O channel to create a mailbox but I can't figure
out why it can't find one.  I've checked for files which have been left open 
earlier in the program but no luck.  After I get this error, I open an existing
file successfully, am unable to create an output file, and from then on,
cannot even open any existing files.

Has anyone ever encountered any problems like this?  Any suggestions?  Thanks.

LEICHTER-JERRY@YALE.ARPA.UUCP (03/05/87)

    We are running a program which SPAWNS commands frequently.  Most of the
    time, these commands work properly, but every once in a while, the
    LIB$SPAWN will  fail.  The return status for LIB$SPAWN is SS$_NOIOCHAN.  I
    realize that  LIB$SPAWN needs to assign an I/O channel to create a mailbox
    but I can't figure out why it can't find one.  I've checked for files
    which have been left open earlier in the program but no luck....  After I
    get this error, I open an existing file successfully, am unable to create
    an output file, and from then on, cannot even open any existing files.

What version of VMS are you running?  (I don't recall any particular bug fixes
for any problem related to this one, but that's pretty fundamental information
for tracking things down.)

At the time of the SPAWN that fails, have other SPAWN's finished already, or
are they still out there executing?  Every still-active SPAWN'ed process will
still be costing you an I/O channel....  In addition, note that the open file
quota is pooled among all the processes in a job.  Hence, if you have a still-
active subprocess that has many files open, it can prevent you from opening
any more.

Unfortunately, it's pretty easy to write programs that "lose" channels this
way, and pretty hard to figure out where they are going.  If all else fails,
ANALYZE/SYSTEM lets you display all the channels in use by a process.  Of
course, that requires mucho privilege (CMKRNL, at least).  A "tame" version
of ANALYZE/SYSTEM - which would only let you look at processes you otherwise
have access rights to - would be nice to have....

							-- Jerry
-------

lauri@MITRE-BEDFORD.ARPA.UUCP (03/05/87)

>    We are running a program which SPAWNS commands frequently.  Most of the
>    time, these commands work properly, but every once in a while, the
>    LIB$SPAWN will  fail.  The return status for LIB$SPAWN is SS$_NOIOCHAN.  I
>    realize that  LIB$SPAWN needs to assign an I/O channel to create a mailbox
>    but I can't figure out why it can't find one.  I've checked for files
>    which have been left open earlier in the program but no luck....  After I
>    get this error, I open an existing file successfully, am unable to create
>    an output file, and from then on, cannot even open any existing files.


Thanks for your replies to my problem spawning.  Using SDA to examine 
the problematic process on the running system was very helpful in pinpointing 
where and how channels were left assigned in the program.  It turned out
that a program called FILE_ORG which we got off the network last summer 
was the culprit, so I replaced it and all works fine now.  Thanks again.