Annotation of 43BSDTahoe/new/help/src/f77/error_msgs, revision 1.1.1.1

1.1       root        1: .TI F77/ERROR_MSGS "Sep. 4, 1985"
                      2: Interpreting Execution Error Messages
                      3: 
                      4: .SH
                      5: 1. Types of Errors
                      6: .LP
                      7: Execution error messages for Fortran programs are generated by the Fortran
                      8: I/O library (error number = -1 or > 99),
                      9: by the UNIX system routines ( 0 < error number < 99),
                     10: and by the UNIX signal handler (no error number printed).
                     11: .SH
                     12: 2. Fortran I/O Library Error Messages
                     13: .LP
                     14: Here are examples of two common I/O errors; 
                     15: for a complete list of the Fortran I/O library error messages,
                     16: see "help f77 io_err_msgs".
                     17: The first error results from trying to read beyond the end of a file:
                     18: .nf
                     19: 
                     20:        dofio: [-1] end of file
                     21:        logical unit 5, named 'stdin'
                     22:        lately: reading sequential formatted external I/O
                     23:        format: (i10)
                     24:        *** Execution terminated
                     25: 
                     26: .fi
                     27: The first line names the system routine, dofio(), that issued
                     28: the error message, gives the error message number, -1, and a short description
                     29: of the error.
                     30: The second line shows that the error involved Fortran logical unit 5
                     31: and file 'stdin' (standard input).
                     32: The other lines tell the type of I/O being attempted,
                     33: the format being used, and that execution was terminated due to the error.
                     34: If the program had been compiled with the '-g' flag for debugging,
                     35: the last line would instead be:
                     36: 
                     37:        Illegal instruction (core dumped)
                     38: 
                     39: and an image of memory at the time of the error would be written to the
                     40: file 'core'.
                     41: .LP
                     42: The second example is a little more complex:
                     43: .nf
                     44: 
                     45:        dofio: [115] invalid data for integer format term
                     46:        logical unit 5, named 'stdin'
                     47:        lately: reading sequential formatted external I/O
                     48:        format: (i10)
                     49:        part of last data: 22|e8   
                     50:        *** Execution terminated
                     51: 
                     52: .fi
                     53: The program tried to read ``22e8'' with an ``i5'' format term.
                     54: The I/O library is complaining that the letter ``e'' is not
                     55: a valid input character when reading integers.
                     56: There is a new line, listing the data being read, which was
                     57: not present in the previous error message.
                     58: A vertical bar, ``|'', is put next to the input character the
                     59: formatting routines were scanning when the error was detected.
                     60: This line is only generated when doing I/O with disk files.
                     61: In this example, the program was invoked by:
                     62: 
                     63:        a.out < data
                     64: 
                     65: The program is reading a disk file via the redirection
                     66: of standard input.
                     67: .LP
                     68: Any error detected during I/O processing will cause the program
                     69: to abort unless the I/O statement included an 'err=' clause to
                     70: provide a branch on error or an 'iostat=' clause to save the
                     71: error code.
                     72: Read statements may include 'end=' to branch  on end-of-file.
                     73: .SH
                     74: 3. Signal Handler Error Messages
                     75: .LP
                     76: Most arithmetic errors and other errors causing hardware interrupts cause a
                     77: signal to be sent to the process that caused the error.
                     78: If, as is typical with Fortran programs,
                     79: the process has not been set up to handle signals, then
                     80: the process is terminated with an 
                     81: appropriate (although sometimes mysterious) error message.
                     82: These error messages usually appear with no numbers;  
                     83: however under certain circumstances, the error numbers may also appear.
                     84: .LP
                     85: The most common of these messages are reproduced and explained here:
                     86: 
                     87: .nf
                     88:        *** Arithmetic Exception: Floating point overflow
                     89:        *** Execution Terminated
                     90: .fi
                     91: 
                     92: The program tried to generate a floating point number greater in absolute value 
                     93: than approximately 1.7e+38.
                     94: 
                     95: .nf
                     96:        *** Arithmetic Exception: Integer divide by 0
                     97:        *** Execution Terminated
                     98: .fi
                     99: 
                    100: The program divided by an integer zero; this is mathematically undefined.
                    101: 
                    102: .nf
                    103:        *** Arithmetic Exception: Floating divide by zero
                    104:        *** Execution Terminated
                    105: .fi
                    106: 
                    107: The program divided by a floating point zero; this is mathematically undefined.
                    108: 
                    109: .nf
                    110:        *** Arithmetic Exception: Integer overflow
                    111:        *** Execution Terminated
                    112: .fi
                    113: 
                    114: The program tried to generate an integer outside the VAX's range of integers,
                    115: either greater than 2**31-1 (2147483647) or less than -2**31 (-2147483648).
                    116: This interrupt is not normally enabled; to catch this error, you need to
                    117: call subroutine traper() in each subprogram (see "man 3f traper").
                    118: 
                    119: .nf
                    120:        *** Arithmetic Exception: Floating point underflow
                    121:        *** Execution Terminated
                    122: .fi
                    123: 
                    124: The program tried to generate a floating point number whose absolute value
                    125: is less than 2.9e-39.  This trap is not normally enabled; to enable it you
                    126: must call subroutine traper() in each subprogram (see "man 3f traper").
                    127: 
                    128: .nf
                    129:        *** Segmentation violation
                    130:        *** Execution Terminated
                    131: .fi
                    132: 
                    133: The program tried to reference beyond the current bounds of its memory.
                    134: This is usually caused by using invalid subscripts for an array;
                    135: recompiling and rerunning with the ``-C'' flag will catch many of these 
                    136: errors.
                    137: 
                    138: .nf
                    139:        *** Bus error
                    140:        *** Execution Terminated
                    141: .fi
                    142: 
                    143: The program has tried to store in a protected area such as the code for
                    144: the program.  This is often caused
                    145: by using an invalid subscript when storing into an array; recompiling and
                    146: rerunning with the ``-C'' option will find many of these errors.
                    147: This may also be caused by calling a subprogram passing fewer actual arguments
                    148: than are declared and used in the subprogram.
                    149: It can also occur when
                    150: a subroutine or function is passed as an argument to a subprogram when
                    151: the subprogram is expecting a variable or array and the
                    152: subprogram tries to store in the argument.
                    153: Storing on top of a constant, e.g.:
                    154: .nf
                    155: 
                    156:        call sub(0)
                    157:        ...
                    158:        subroutine sub(ival)
                    159:        ival = min0(ival,3000)
                    160: 
                    161: .fi
                    162: also causes this error.
                    163: 
                    164: .nf
                    165:        *** Illegal instruction
                    166:        *** Execution Terminated
                    167: .fi
                    168: 
                    169: This may mean that your program is overwriting itself.  This is uncommon
                    170: because the program code and variable storage are in different areas of
                    171: memory and the program code is normally protected.
                    172: 
                    173: .nf
                    174:        *** Illegal operand
                    175:        *** Execution Terminated
                    176: .fi
                    177: 
                    178: An invalid floating point number (exponent value of 0, sign value of 1)
                    179: was used in a floating point computation.  This is a reserved operand in
                    180: the floating point logic of the VAX.  If an integer multiple of
                    181: 32768 is used as a real, this interrupt will be generated.
                    182: .LP
                    183: For a complete list of signals, see "man 2 sigvec" or "man 3c signal".
                    184: .LP
                    185: The user can regain control after signal handler errors via 
                    186: the signal() subroutine (see "man 3f signal").
                    187: Unfortunately, after regaining control, there is currently no way to
                    188: resume exactly where you left off.
                    189: .SH
                    190: 4. Errors due to unsuccessful system calls
                    191: .LP
                    192: This type of message is less common than the other two types.
                    193: Here are two examples.
                    194: The following messages result from trying to read from a file for which
                    195: you do not have read permission:
                    196: 
                    197: .nf
                    198:        fort.1: [13] Permission denied
                    199:        logical unit 1, named 'fort.1'
                    200:        *** Execution Terminated
                    201: .fi
                    202: 
                    203: and the following resulted when trying to read from unit 6, standard
                    204: output:
                    205: 
                    206: .nf
                    207:        read sfe: [9] Bad file number
                    208:        logical unit 6, named 'stdout'
                    209:        lately: reading sequential formatted external IO
                    210:        format: (i5)
                    211:        *** Execution Terminated
                    212: .fi
                    213: 
                    214: Unfortunately, these errors are numbered using the same number range as
                    215: the signal errors described above.  For example, an error 24 could either
                    216: be the system call error 24, too many files open, or signal message
                    217: 24, cpu time limit exceeded.  The context usually makes it clear
                    218: which type of error has occurred; also the signal messages normally
                    219: appear without numbers.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.