|
|
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.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.