Apple Mac System Error Codes
Because the Mac OS is a sophisticated, complex operating system, the problems a user encounters can be equally complex.
These are examples of some problems that may occur:
- A handle can be de-referenced.
- A routine can get a NIL pointer.
- The stack can dip into the heap for just a few cycles and not be caught by the stack sniffer.
- An application can forget to check an error code.
A Macintosh usually crashes with a system error code while running under System 6.0.x. Starting with System 7, errors are displayed in a different fashion. Instead of displaying an error code, the system translates the code to the appropriate words, like "Address Error".
Finding out what's wrong involves use of debugging tools, intricate knowledge of Macintosh memory structures, and familiarity with the application itself. Fixing it usually involves recompiling the source code. The table below explains some of the codes.
ID=01 Bus Error
This means the computer tried to access memory that doesn't exist. You can get this error on almost any Macintosh. If one of these computers tried to access one or more bytes beyond the total number of bytes in RAM, you see a bus error. You should never see this error on a Macintosh Plus or SE, because address references that are out of bounds "roll over". This means if one of these computers tries to access one byte beyond the total bytes in RAM, it actually accesses the first byte in memory. If you see this error on a Macintosh Plus or SE, it's reporting the wrong error or having hardware problems.
ID=02 Address Error
The Motorola 68000 microprocessor can access memory in increments of one byte (8 bits), one word (16 bits), or one long word (32 bits). The microprocessor can access a byte of information at an odd or even memory address. But it must access a word or long word at an even memory address. So, when the microprocessor attempts to read or write a word or long word at an odd address, you see this error. Since that's a 50/50 proposition when running random code, this one shows up quite often.
ID=03 Illegal Instruction
The computer has a specific vocabulary of machine language instructions it can understand. If a computer tries to execute an instruction that isn't in its vocabulary, you see this error code. It's less likely than error 02, but still very common.
ID=04 Zero Divide Error
This error results if the microprocessor divides two numbers, and the divisor is zero. Sometimes a programmer puts these in as debugging aids, and then forgets to take them out.
ID=05 Range Check Error
Programmers can use an instruction in the Motorola 68000 to check if a number is within a certain range. This error indicates that the number tested isn't in the specified range.
ID=06 Overflow Error
Each number stored in a computer is given a certain amount of space. The larger the number, the more space is needed to represent the number. An overflow condition results if a generated number is too big for its allotted space. A Motorola 68000 instruction tests for an overflow condition, and displays this error if it detects an overflow.
ID=07 Privilege Violation
The Motorola 68000 runs in Supervisor or User mode. The Macintosh should always be in Supervisor mode, but sometimes is placed in User mode. Some of the instructions can only be executed in Supervisor mode. If the computer attempts one of these instructions while in User mode, a Privilege Violation error results.
ID=08 Trace Mode Error
A programmer can use a runtime debugger while in Trace mode. This allows tracing through a program one instruction at a time. You see this error if a debugger isn't installed and the 68000 is accidentally placed in Trace mode.
ID=09 and ID=10 Line 1010 & 1111 Trap
There are many routines in the Macintosh ROM that can be called by placing instructions in a program that aren't in the 68000's vocabulary. When the 68000 encounters such an instruction, it looks it up in the instruction table. This table gives the location of routines paired with each instruction. If it finds an entry in the table for the instruction, it branches to the routine. If there's no entry for the instruction, you see one of these errors.
ID=12 Unimplemented Core Routine
A programmer might set breakpoints in parts of a program to inspect for errors. This requires using a debugger. If a debugger isn't installed when a breakpoint occurs, you see this error code.
ID=13 Uninstalled Interrupt
The Macintosh uses an interrupt to identify when devices like keyboards and disk drives need service. Routines must be available in memory to tell the computer how to service the device. If those routines aren't available, you see this error.
ID=15 Segment Loader Error
Macintosh programs are broken up into segments, and each program will always have at least one segment. Multiple segments allow loading parts of the program into memory to provide more room for data in internal RAM. The segment loader is responsible for loading a needed segment into RAM. If the segment loader can't do this, you'll see this error.
ID=17 through ID=24 Missing Packages 0-7
The Macintosh uses packages to do specific tasks. Some of the packages are International Utilities, Binary-Decimal Conversion, Standard File Utilities, and Disk Initialization. These packages are located in the System file. If you get these errors, you probably have a damaged System file. Error codes 15, 16, 26, 27, 30, and 31 also come up when the System file is damaged. Try replacing the System file.
ID=25 Memory Full Error
You've probably run out of RAM. But you can get this error when an earlier error causes the Macintosh to falsely detect an out-of-memory condition.
ID=26 Bad Program Launch
The Macintosh couldn't execute the application opened.
ID=28 Stack Ran into Heap
This is similar to the Memory Full error. It's a good idea to save your work frequently, and keep current backups of your hard disk data. When a system crash does occur, you'll lose less data if you've taken these precautions.
Troubleshooting System Errors
It's a good idea to save your work frequently, and keep current backup copies of your hard disk data. When a system crash occurs, you'll lose less data if you've taken these precautions.
If you're getting system errors frequently, investigate these possibilities:
- Try to open the document with a current version copy of the application.
- Try opening other documents with the same copy of the application.
- Check to see if the document size exceeds the application size limits.
- Boot your system with extensions off (restart while holding the Shift key down).
- Any changes (new Control Panels, extensions, etc.) you've made to the system might give you a clue to the cause of the crashes.
- Make a note of the desk accessories you had open at the time of the crash and exactly what you did before the crash.
- Make a note of the error ID or text, and the version numbers of the application and system software you were using.
- Try to recreate the problem on another Macintosh.
- Cleanly install your system software and try the application again.
Negative Error Codes
Here is a list of negative codes (0 to -261) with brief explanations.
General System Errors (VBL Mgr, Queue)
| 0||No Error||0 For Success|
| 0||smNotTruncated ||No truncation necessary|
|-1 ||qErr||queue element not found during deletion|
|-1||smTruncErr||Truncation indicator alone is wider than the specified width|
|-2||vTypErr||invalid queue element|
|-3||corErr||core routine number out of range|
|-4||unimpErr||unimplemented core routine|
|-5||SlpTypeErr||invalid queue element|
|-8||seNoDB||no debugger installed to handle debugger command|
Color Manager Errors
|-15 ||seOutOfRange ||from SetEntry|
I/O System Errors
|-17||controlErr||Driver can't respond to Control call|
|-18||statusErr||Driver can't respond to Status call|
|-19||readErr||Driver can't respond to Read call|
|-20||writErr||Driver can't respond to Write call|
|-21||badUnitErr||Driver ref num doesn't match unit table|
|-22 ||unitEmptyErr ||Driver ref num specifies NIL handle in unit table|
|-23||openErr||Requested read/write permission doesn't match driver's open permission|
or Attempt to open RAM serial Driver failed
|-24||closErr||Close failed; Permission to close. MPP driver was denied|
|-25||dRemovErr||tried to remove an open driver|
|-26||dInstErr||DrvrInstall couldn't find driver in resources|
|-27||abortErr||IO call aborted by KillIO; Publisher has written a new edition|
|-27||iIOAbortErr||IO abort error (Printing Manager)|
|-28||notOpenErr||Couldn't rd/wr/ctl/sts cause driver not opened|
|-29||unitTblFullErr||Unit table has no more entries|
|-30||dceExtErr||dce extension error|
File System Errors
|-35||nsvErr||No such volume; volume not found|
|-37||bdNamErr||Bad file name; there may be no bad names in the final system!|
|-38||fnOpnErr||File not open|
|-39||eofErr||End of file; no additional data in the format|
|-40||posErr||Tried to position to before start of file (r/w)|
|-41||mFulErr||Memory full (open) or file won't fit (load)|
|-42||tmfoErr||Too many files open|
|-43||fnfErr||File not found; Folder not found; Edition container not found;|
Target not found
|-44||wPrErr||Disk is write-protected; Volume is locked through hardware|
|-45||fLckdErr||File is locked|
|-45||fLckedErr||Publisher writing to an edition|
|-46||vLckdErr||Volume is locked through software|
|-47||fBsyErr||File is busy (delete); Section doing I/O|
|-48||dupFNErr||Duplicate filename (rename); File found instead of folder|
|-49||opWrErr||File already open with write permission|
|-50||paramErr||Error in user parameter list|
|-51||rfNumErr||Reference number invalid|
|-52||gfpErr||Get file position error|
|-53||volOffLinErr||Volume is off line|
|-54||permErr||Software lock on file; Not a subscriber |
[permissions error on file open]
|-55||volOnLinErr||drive volume already on-line at MountVol|
|-56||nsDrvErr||no such drive (tried to mount a bad drive num)|
|-57 ||noMacDskErr ||not a Macintosh disk (sig bytes are wrong)|
|-58||extFSErr||External file system file system identifier is nonzero|
|-59||fsRnErr||file system internal error: during rename the old entry was|
deleted but could not be restored.
|-60||badMDBErr||bad master directory block|
|-61||wrPermErr||Write permissions error; Not a publisher|
Font Manager Errors
|-64||fontDecError||error during font declaration|
|-65 ||fontNotDeclared ||font not declared|
|-66||fontSubErr||font substitution occurred|
Disk, Serial Ports, Clock Specific Errors
|-64||noDriveErr||drive not installed|
|-65||offLinErr||r/w requested for an off-line drive|
|-66||noNybErr||couldn't find 5 nybbles in 200 tries|
|-67 ||noAdrMkErr ||couldn't find valid addr mark|
|-68||dataVerErr||read verify compare failed|
|-69||badCksmErr||addr mark checksum didn't check|
|-70||badBtSlpErr||bad addr mark bit slip nibbles|
|-71||noDtaMkErr||couldn't find a data mark header|
|-72||badDCksum||bad data mark checksum|
|-73||badDBtSlp||bad data mark bit slip nibbles|
|-74||wrUnderrun||write underrun occurred|
|-75||cantStepErr||step handshake failed|
|-76||tk0BadErr||track 0 detect doesn't change|
|-77||initIWMErr||unable to initialize IWM|
|-78||twoSideErr||tried to read 2nd side on a 1-sided drive|
|-79||spdAdjErr||unable to correctly adjust disk speed|
|-80||seekErr||track number wrong on address mark|
|-81||sectNFErr||sector number never found on a track|
|-82||fmt1Err||can't find sector 0 after track format|
|-83||fmt2Err||can't get enough sync|
|-84||verErr||track failed to verify|
|-85||clkRdErr||unable to read same clock value twice|
|-86||clkWrErr||time written did not verify|
|-87||prWrErr||parameter RAM written didn't read-verify|
|-88||prInitErr||InitUtil found the parameter RAM uninitialized|
|-89||rcvrErr||SCC receiver error (framing, parity, OR)|
|-90||breakRecd||Break received (SCC)|
|-91||ddpSktErr||Error opening socket|
|-91||eMultiErr||Invalid address or table is full|
|-92||ddpLenErr||Data length too big|
|-92||eLenErr||Packet too large or first entry of the write-data structure |
didn't contain the full 14-byte header
|-93||noBridgeErr||No router available [for non-local send]|
|-94||lapProtErr||error in attaching/detaching protocol|
|-94||LAPProtErr||Protocol handler is already attached, node's protocol table is full,|
protocol not attached, or protocol handler pointer was not 0
|-95||excessCollsns||Hardware error [excessive collisions on write]|
|-97||portInUse||driver Open error code (port is in use)|
|-98||portNotCf||driver Open error code |
(parameter RAM not configured for this connection)
|-99||memROZErr||hard error in ROZ|
|-99||memROZError||hard error in ROZ|
|-99 ||memROZWarn ||soft error in ROZ|
Scrap Manager Errors
|-100 ||noScrapErr ||No scrap exists error|
|-102||noTypeErr||Format not available [no object of that type in scrap]|
Storage Allocator Errors
|-108||memFullErr||Ran out of memory [not enough room in heap zone]|
|-109||nilHandleErr||GetHandleSize fails on baseText or substitutionText; |
NIL master pointer [handle was NIL in HandleZone or other]
|-110||memAdrErr||Address was odd, or out of range|
|-111||memWZErr||Attempted to operate on a free block; |
GetHandleSize fails on baseText or substitutionText
[WhichZone failed (applied to free block)]
|-112||memPurErr||Trying to purge a locked or non-purgeable block|
|-113||memAZErr||Address in zone check failed|
|-114||memPCErr||Pointer Check failed|
|-115||memBCErr||Block Check failed|
|-116||memSCErr||Size Check failed|
|-117 ||memLockedErr ||Trying to move a locked block (MoveHHi)|
|-120||dirNFErr||Directory not found|
|-121||tmwdoErr||No free WDCB available|
|-122||badMovErr||Move into offspring error|
|-123||wrgVolTypErr||Not an HFS volume [wrong volume type error or (obsolete)|
operation not supported for MFS]
|-124||volGoneErr||Server volume has been disconnected.|
|-125 ||updPixMemErr ||Insufficient memory to update a pixmap|
|-127||fsDSIntErr||Internal file system error|
Menu Manager Errors
|-126||dsMBarNFnd||System error code for MBDF not found|
|-127 ||dsHMenuFindErr ||Couldn't find HMenu's parent in MenuKey|
|-128||userCanceledErr||User canceled an operation|
HFS FileID Errors
|-130 ||fidNotFound ||no file thread exists|
|-132||fidExists||file ID already exists|
Color QuickDraw and Color Manager Errors
|-147 ||regionTooBigError ||Region too big or complex|
|-148||pixMapTooBigErr||Pixel map record is deeper than 1 bit per pixel |
[passed pixelmap is too large]
|-149||notEnoughStack||Not enough stack space for the necessary buffers|
|-150||cMatchErr||Color2Index failed to find an index|
|-151||cTempMemErr||Failed to allocate memory for temporary structures|
|-152||cNoMemErr||Failed to allocate memory for structure|
|-153||cRangeErr||Range error on colorTable request|
|-154||cProtectErr||ColorTable entry protection violation|
|-155||cDevErr||Invalid type of graphics device|
|-156||cResErr||Invalid resolution for MakeITable|
|-157||cDepthErr||Invalid pixel depth|
Resource Manager Errors (other than I/O)
|-185||badExtResource||Extended resource has a bad format|
|-186||CantDecompress||Resource bent ("the bends") can't decompress a|
|-188 ||resourceInMemory ||Resource already in memory|
|-189||writingPastEnd||Writing past end of file|
|-190||inputOutOfBounds||Offset or count out of bounds|
|-192||resNotFound||Resource not found|
|-193||resFNotFound||Resource file not found|
|-198||resAttrErr||Attribute inconsistent with operation|
|-199||mapReadErr||Map inconsistent with operation|
Sound Manager Errors
|-200||noHardware||Required sound hardware not available |
[no hardware support for the specified synthesizer]
|-201||notEnoughHardware||Insufficient hardware available |
[no more channels for the specified synthesizer]
|-203||queueFull||No room in the queue|
|-204||resProblem||Problem loading the resource|
|-205||badChannel||Channel is corrupt or unusable [invalid channel queue length]|
|-206||badFormat||Resource is corrupt or unusable |
[handle to 'snd ' resource was invalid]
|-207 ||notEnoughBufferSpace ||Insufficient memory available|
|-208||badFileFormat||File is corrupt or unusable, or not AIFF or AIFF-C|
|-209||channel||Channel is busy|
|-210||buffersTooSmall||Buffer is too small|
|-211||channelNotBusy||Channel not currently used|
|-212||noMoreRealTime||Not enough CPU time available|
|-213||badParam||A parameter is incorrect|
|-220||siNoSoundInHardware||No sound input hardware available|
|-221||siBadSoundInDevice||Invalid sound input device|
|-222||siNoBufferSpecified||No buffer specified|
|-223||siInvalidCompression||Invalid compression type|
|-224||siHardDiskTooSlow||Hard drive too slow to record|
|-225||siInvalidSampleRate||Invalid sample rate|
|-226||siInvalidSampleSize||Invalid sample size|
|-227||siDeviceBusyErr||Sound input device is busy|
|-228||siBadDeviceName||Invalid device name|
|-229||siBadRefNum||Invalid reference number|
|-230||siInputDeviceErr||Input device hardware failure|
|-231||siUnknownInfoType||Unknown type of information|
MIDI Manager Errors
|-250||midiNoClientErr||no client with that ID found|
|-251||midiNoPortErr||no port with that ID found|
|-252 ||midiTooManyPortsErr ||too many ports already installed in the system|
|-253||midiTooManyConsErr||too many connections made|
|-254||midiVConnectErr||pending virtual connection created|
|-255||midiVConnectMade||pending virtual connection resolved|
|-256||midiVConnectRmvd||pending virtual connection removed|
|-257||midiNoConErr||no connection exists between specified ports|
|-258||midiWriteErr||couldn't write to all connected ports|
|-259||midiNameLenErr||name supplied is longer than 31 characters|
|-260||midiDupIDErr||duplicate client ID|
|-261||midiInvalidCmdErr||command not supported for port type|