Exit Status

The exit status is an important piece of information to decide whether a job has succeeded or not. Normally, an exit status of 0 (zero) is used to signify the successful execution of a tool.

The following table describes some of the exit statuses used by VOV.
Status Possible Meaning
0 Successful termination.
1 Generic failure. This status is commonly used to indicate failures.
2 A program printed the usage message and exited.
4 Command not found.
5 A program exited because it received a signal.
6 A wrapper (e.g. vw or vrt) cannot redirect stdout or stderr.
7 An interactive job (see option -I of nc run) did not complete (was descheduled or forgotten).
8 The vovtasker encountered an error while managing the job (please report this condition to https://www.pbsworks.com/ContactSupport.aspx)
  • The vovserver cannot bind the main socket. (OLD. New value is 76)
  • A VOV client cannot connect to the server. (OLD. New value is 75)
72 A job sent to Accelerator with an indirect tasker failed.
73 A job was lost in Accelerator.
74 A capsule has failed. You will probably have to run the job from the terminal to get the complete description of the error.
75 A VOV client cannot connect to the server.
76 The vovserver cannot bind the main socket.
77 VOV Channel error. Occurs when the tool exits without calling VovEnd(). See VOV Instrumentation Library (VIL) for more details.
78 vovtasker could not redirect stdout.
79 vovtasker could not find executable.
91-93 Problems in collecting status of job.
100-120 Problems with the VOV Instrumentation Library (VIL).
126 No longer used. See 136.
136 Typically a deep error in the execution of a job. This was previously exit 126, but has been changed because /bin/sh also uses this code.
  • The vovtasker is unable to perform an execve() of the job.
137 Typically a deep error in the execution of a piped command as a child of vovserver. Rarely seen (was previously 127).
138 Typically a deep error in the execution of utcc_system(), an internal utility (was previously 127).
201-215 These codes are used to force automatic rescheduling of jobs. A job that exits with one of these codes will be rescheduled immediately with Priority given by code - 200. Thus a job that exits with status 201 will be rescheduled with priority low (1) while a job that exits with status 215 will be rescheduled with top priority. These codes are typically used by jobs that fail because of a spurious license problem. They allow the tool developer to signal VOV that the failure is probably due to a missing license and that it will probably not occur again if the job is resubmitted.
240 Job could not be dispatched to selected best tasker.
249 Channel has died (a VIL problem) (same as -7)
251 Tool had an output conflict (same as -5)
252 Tool had an input conflict (same as -4)
253 Tool had a cycle conflict (same as -3)

Legal Exit Status

A property of each job is the list of exit status values that are accepted as meaning success. By default, only the exit status 0 (zero) is accepted. To change the list of accepted exit status values:

From VIL
Use the procedure VovCorrectExitStatus(char* list) as in:
/* This is a fragment of C or C++ code. */
VovCorrectExitStatus( "0 2 12" );
With VIL-Tools
Use VovCorrectExitStatus, as in
#!/bin/csh -f
# This is an instrumented shell script.
VovCorrectExitStatus "0 2 12"
From Flow.tcl
Use the procedure L, as in:
# This is a fragment of Flow.tcl
R sun5
# Like E and R, the procedure L has effect on all 
# subsequent jobs.
L "0 2 12" 
J vw cp aa bb

Exit Status Fields

The fields associated with the exit status are:

Field Description
EXIT_STATUS The actual exit status
OK_STATUS (old) The list of allowed exit status values (same as LEGALEXIT)
LEGALEXIT (new) The list of allowed exit status values (same as OK_STATUS)