Error messages appear when the Doom engine aborts due to a runtime error which it considers to be unrecoverable. In addition to any predictable situations, error messages may appear in response to anything ranging from network instability to random memory corruption. This article lists all reachable error messages in the Doom source code and explains what normally causes them.
Note that some errors which indicate that they should not be possible under normal conditions can still occur as a result of undefined behavior, typically when the game engine overflows an internal static array.
- 1 Simulation errors
- 1.1 P_AddActivePlat: no more plats!
- 1.2 P_CrossSubsector: ss %i with numss = %i
- 1.3 P_GiveAmmo: bad type %i
- 1.4 P_GroupLines: miscounted
- 1.5 P_InitPicAnims: bad cycle from %s to %s
- 1.6 P_NewChaseDir: called with no target
- 1.7 P_PlayerInSpecialSector: unknown special %i
- 1.8 P_RemoveActivePlat: can't find plat!
- 1.9 P_SpawnMapThing: Unknown type %i at (%i, %i)
- 1.10 P_SpecialThing: Unknown gettable thing
- 1.11 P_StartButton: no more button slots!
- 1.12 PTR_SlideTraverse: not a line?
- 1.13 Weird actor->movedir!
- 2 Memory errors
- 2.1 I_AllocLow: DOS alloc of %i failed, %i free
- 2.2 Insufficient DPMI memory!
- 2.3 Z_CT at %s:%i
- 2.4 Z_ChangeTag: an owner is required for purgable blocks
- 2.5 Z_CheckHeap: block size does not touch the next block
- 2.6 Z_CheckHeap: next block doesn't have proper back link
- 2.7 Z_CheckHeap: two consecutive free blocks
- 2.8 Z_Free: freed a pointer without ZONEID
- 2.9 Z_Malloc: An owner is required for purgable blocks.
- 2.10 Z_Malloc: failed on allocation of %i bytes
- 3 Miscellaneous errors
- 4 Network errors
- 4.1 Bad net cmd %i
- 4.2 consistency failure (%i should be %i)
- 4.3 Different DOOM versions cannot play a net game!
- 4.4 Doomcom buffer invalid!
- 4.5 Killed by network driver
- 4.6 NetUpdate: netbuffer->numtics > BACKUPTICS
- 4.7 Only %i deathmatch spots, 4 required
- 4.8 Tried to transmit to another node
- 4.9 TryRunTics: lowtic < gametic
- 5 Rendering errors
- 5.1 Bad R_RenderWallRange: %i to %i
- 5.2 R_DrawColumn: %i to %i at %i
- 5.3 R_DrawFuzzColumn: %i to %i at %i
- 5.4 R_DrawPlanes: drawsegs overflow (%i)
- 5.5 R_DrawPlanes: opening overflow (%i)
- 5.6 R_DrawPlanes: visplane overflow (%i)
- 5.7 R_DrawSpan: %i to %i at %i
- 5.8 R_DrawSpriteRange: bad texturecolumn
- 5.9 R_FindPlane: no more visplanes
- 5.10 R_FlatNumForName: %s not found
- 5.11 R_GenerateLookup: texture %i is >64K
- 5.12 R_InitSprites: No patches found for %s frame %c
- 5.13 R_InitSprites: Sprite %s frame %c has multip rot=0 lump
- 5.14 R_InitSprites: Sprite %s frame %c has rotations and a rot=0 lump
- 5.15 R_InitSprites: Sprite %s frame %c is missing rotations
- 5.16 R_InitSprites: Sprite %s : %c : %c has two lumps mapped to it
- 5.17 R_InitTextures: bad texture directory
- 5.18 R_InitTextures: Missing patch in texture %s
- 5.19 R_InstallSpriteLump: Bad frame characters in lump %i
- 5.20 R_MapPlane: %i, %i at %i
- 5.21 R_ProjectSprite: invalid sprite number %i
- 5.22 R_ProjectSprite: invalid sprite frame %i : %i
- 5.23 R_Subsector: ss %i with numss = %i
- 5.24 R_TextureNumForName: %s not found
- 6 Savegame errors
- 7 Sound errors
- 8 Status bar errors
- 9 Video errors
- 10 WAD file errors
- 10.1 Couldn't allocate lumpcache
- 10.2 Couldn't realloc lumpinfo
- 10.3 Error fstating
- 10.4 Filename base of %s >8 chars
- 10.5 Wad file %s doesn't have IWAD or PWAD id
- 10.6 W_CacheLumpNum: %i >= numlumps
- 10.7 W_GetNumForName: %s not found!
- 10.8 W_InitFiles: no files found
- 10.9 W_LumpLength: %i >= numlumps
- 10.10 W_ReadLump: %i >= numlumps
- 10.11 W_ReadLump: couldn't open %s
- 10.12 W_ReadLump: only read %i of %i on lump %i
- 10.13 W_Reload: couldn't open %s
P_AddActivePlat: no more plats!
Too many platform actions are active at one time. This error can easily be triggered by allowing the player to activate too many lifts at once, or by starting too many perpetual lifts during the course of a level.
P_CrossSubsector: ss %i with numss = %i
A line of sight check has indexed into the subsector array out of bounds. This error should never occur.
P_GiveAmmo: bad type %i
A pickup item the player has collected has tried to give an invalid ammo type. This error should never occur.
An inconsistency has occurred while building the sector line pointer tables. This error should never occur.
P_InitPicAnims: bad cycle from %s to %s
An error occurred while determining the number of frames in an animated flat or texture. This error can occur if the texture directory is reordered so that the last flat or texture in a sequence occurs before the first.
P_NewChaseDir: called with no target
An enemy looking for a new direction to move in is not actually moving toward a valid target. This error should never occur.
P_PlayerInSpecialSector: unknown special %i
The player has stepped in a sector with an undefined special, or type, value.
P_RemoveActivePlat: can't find plat!
The game has tried to stop a platform action that it apparently never started in the first place. This error should never occur.
P_SpawnMapThing: Unknown type %i at (%i, %i)
The map being loaded has an unknown type of thing specified at the given x-y coordinates. This error most often occurs if maps are loaded in the wrong game, or occasionally with carelessly made DeHackEd patches.
P_SpecialThing: Unknown gettable thing
The player has touched a thing which is marked as a collectable item, but for which the game does not have a hard-coded sprite-based effect. This error can be easily triggered by modifying pickup items through DeHackEd.
The player has activated too many switch-type line actions at a time. This includes gun-type switch lines, and so the easiest way to cause this error is to put too many consecutive gun switches on two-sided lines.
PTR_SlideTraverse: not a line?
While sliding the player against a line, the traversal code has iterated over an intercept object which represents a moving object (enemy, torch, etc.) rather than a line. This error should never occur.
An enemy has attempted to move in an undefined direction. This error should never occur.
I_AllocLow: DOS alloc of %i failed, %i free
An allocation of low DOS memory, RAM within the first 640 KB of address space required for communicating with real mode code, failed.
Insufficient DPMI memory!
The Doom engine requires a contiguous block of at least 4 MB of free RAM. "DPMI" stands for DOS Protected Mode Interface.
Z_CT at %s:%i
A cache tag change operation has referenced a memory block which did not contain the value
0x1d4a11 in the header. This error can only occur in the event of heap corruption.
Z_ChangeTag: an owner is required for purgable blocks
A cache tag change operation has referenced a memory block which is marked as PU_CACHE (disposable memory) but has no valid "owner," a pointer-to-pointer in the memory block which is set to NULL to notify the rest of the game engine that the cached data has been freed implicitly. This error can only occur in the event of heap corruption.
Z_CheckHeap: block size does not touch the next block
The zone heap does not allow gaps to exist between any two blocks. If a gap exists, then the heap has been corrupted. This error is notorious for appearing when loading maps with bad sidedefs, or linedefs with no sector attached to them (this can be achieved in DoomCAD by removing the sector reference from a linedef).
A zone memory block's neighbor does not point back to it as being its previous neighbor. This error can only occur in the event of heap corruption.
Z_CheckHeap: two consecutive free blocks
The zone heap does not allow two consecutive free blocks to exist; it would instead merge them into one larger block. This error can only occur in the event of heap corruption.
Z_Free: freed a pointer without ZONEID
A memory block was freed which did not contain the value
0x1d4a11 in the block header. This message is an indication of heap corruption.
Z_Malloc: An owner is required for purgable blocks.
The WAD data caching system has malfunctioned. This error will only normally occur in the event of heap corruption.
Z_Malloc: failed on allocation of %i bytes
The game has run out of memory.
Can't register 35 Hz timer w/ DMX library
The attempt to install a timer interrupt for use with the DMX sound library failed. This error message often appeared when attempting to run Doom under early versions of the Microsoft Windows operating system.
Couldn't read file %s
A file the game has tried to open directly was either not found, or could not be read by the underlying operating system.
FixedDiv: divide by zero
Game code has attempted to perform a fixed-point division by zero. There is virtually nowhere that this error can occur in the game by default, but it could possibly be induced through giving the game bad data files, or through executable hacking.
INT_SetTimer0: %i is a bad value
An attempt to modify system timer 0 with a bad value was made. This error should never occur.
M_ScreenShot: Couldn't create a PCX
The user has 100 or more screenshot files in Doom's directory. Rather than simply ignoring the request to take a screen shot, Doom exits with this message.
These errors are related to multiplayer games. Many of these errors should never technically happen, but could be induced by faulty network drivers, noisy connections, or extreme latency.
Bad net cmd %i
A command which is marked as neither a SEND nor a RECEIVE command has been intercepted in the network stream.
consistency failure (%i should be %i)
The most common netgame error message, caused by a loss of synchronization between nodes. This can most often be caused by players using the wrong IWAD or different PWADs, executables with DeHackEd patches applied, or by network instability. This message could sometimes appear at random when playing over a dialup connection.
Different DOOM versions cannot play a net game!
At startup each node broadcasts its internal game version number to the other nodes. If the version number is found to not match, the game is aborted with this message. Note that no other verification of identical play state is made. If the users' IWADs differ or the users have different PWADs loaded, no error will occur until the game later desynchronizes.
Doomcom buffer invalid!
The communications buffer, which is owned by the network driver program under DOS, has not been initialized properly. This could occur if the user tries to manually start a network game by providing the internal command line parameters directly, rather than using the setup or DeathManager! programs.
Killed by network driver
The network driver code has sent a packet that contains the "kill" flag, designed to cause the player to which it is sent to drop from the network game.
NetUpdate: netbuffer->numtics > BACKUPTICS
A node has attempted to transmit more gametics at one time than the engine allows buffer space to contain.
Only %i deathmatch spots, 4 required
Players have selected a map to play in Deathmatch mode which does not have the required minimum of four deathmatch start spots. Four spots are required even if only two players are active.
Tried to transmit to another node
The internal state of the game has become inconsistent, and network packets have been sent out during a single player game. This error should never happen.
TryRunTics: lowtic < gametic
The game is ahead in time of where it thinks it should be. This is a possible sign of desynchronization. A similar error "gametic > lowtic" may also occur, and means the same thing.
Bad R_RenderWallRange: %i to %i
This error occurs if the game engine attempts to construct a drawseg which covers a region outside the frame buffer. This error should never occur in the final version of the game, but has been known to occur frequently in the Doom 0.5 beta.
R_DrawColumn: %i to %i at %i
The renderer has attempted to draw a column to the screen at the final x coordinate which is partially or completely outside the frame buffer. This error can occur when the game engine suffers numeric overflow while rendering excessively tall areas. See Numeric overflow crash in tall areas for further information.
R_DrawFuzzColumn: %i to %i at %i
The same as the above error, but the error happened while drawing spectre fuzz.
R_DrawPlanes: drawsegs overflow (%i)
An earlier version of the Doom renderer apparently had the ability to create an unchecked number of drawsegs, and would exit after the fact, similar to how visplanes are still handled in the released source. Although this error message persists in the final version of the game's executable and appears reachable based only on the flow of execution in the function in which it occurs, it will never happen because code elsewhere in the renderer will stop generating drawsegs if the array is full. This causes the hall of mirrors effect, but has no other detrimental effect on the game.
R_DrawPlanes: opening overflow (%i)
Too many consecutive translucent and non-translucent posts exist in the current scene. This check is made after the fact, and in this case, the program virtually always crashes before it can display this message, due to corruption of other data needed in the rendering process by the overflow.
R_DrawPlanes: visplane overflow (%i)
Too many visplanes have been generated while rendering the current scene. This error can only occur if the number of visplanes was in bounds with respect to unique combinations of floor properties, but the game engine then needed to split some existing visplanes (the limit is not checked against when visplanes are split). This check is made after the fact, so the program may crash before it can display this message. See also R_FindPlane below.
R_DrawSpan: %i to %i at %i
The renderer has attempted to draw a span (part of a visplane) which is partially or completely outside the frame buffer. This error can also occur when rendering excessively tall areas, but is significantly less likely.
R_DrawSpriteRange: bad texturecolumn
An invalid patch graphic has been rendered as a sprite, and the texturecolumn index has stepped out of range.
R_FindPlane: no more visplanes
Too many sectors with unique combinations of texture, light level, and/or z-height are present in the current scene. See Visplane overflow for more information.
R_FlatNumForName: %s not found
A map sector or internal animated flat definition references a flat which cannot be found in any loaded WAD file.
R_GenerateLookup: texture %i is >64K
This error is a bizarre legacy from Doom's early development when it was still being compiled as a real mode DOS program, where single memory segments are limited to 64 kilobytes in size. This error will occur if the total size of patches in any texture is greater than or equal to 64 kilobytes.
R_InitSprites: No patches found for %s frame %c
A sprite is missing lump(s) for one of its frames.
R_InitSprites: Sprite %s frame %c has multip rot=0 lump
A sprite has more than one lump for its single-view zero-rotation frame.
R_InitSprites: Sprite %s frame %c has rotations and a rot=0 lump
A sprite has both frames for a normal rotation and for a single view.
R_InitSprites: Sprite %s frame %c is missing rotations
A sprite has a frame with an incomplete set of rotation graphics.
R_InitSprites: Sprite %s : %c : %c has two lumps mapped to it
A sprite has more than one lump for a single frame rotation. This error should not occur.
R_InitTextures: bad texture directory
The texture directory (stored in the TEXTURE1/TEXTURE2 lumps) is malformed. This would only be caused by a buggy texture editing program.
R_InitTextures: Missing patch in texture %s
A texture definition references a patch which was not found in any loaded WAD file.
R_InstallSpriteLump: Bad frame characters in lump %i
A sprite lump uses a frame character that is not one of A–Z, [, \, or ].
R_MapPlane: %i, %i at %i
The renderer has attempted to render a visplane with invalid properties. This error should not occur in normal play, but may appear when in very tall areas, due to the same problem that causes the numeric overflow crash in tall areas.
R_ProjectSprite: invalid sprite number %i
A mapthing uses a bad sprite number. This error could be caused using by using a DeHackEd patch to insert a bad sprite number into a frame.
R_ProjectSprite: invalid sprite frame %i : %i
The sprite being drawn does not have a frame with the second given number. This error can also be caused by DeHackEd editing, or by failing to provide all of the frame graphics for a mapthing.
R_Subsector: ss %i with numss = %i
The renderer is attempting to draw a subsector whose index is out of bounds. This error should never occur.
R_TextureNumForName: %s not found
A map sidedef or internal animated texture definition references a texture which is not defined by the TEXTURE1/TEXTURE2 lumps. The reported texture name may be absurd, in which case any character after the eighth should be ignored as they are not actually part of the missing texture name.
The final byte of the savegame file does not have the appropriate value. The save may be from a different version of the game, or a different game, or simply corrupt. This error is rare, however, due to earlier consistency checks.
Savegame buffer overrun
The level's memory footprint is too large to save inside of Doom's static savegame buffer. See Savegame buffer overflow for further information.
P_UnarchiveSpecials: Unknown tclass %i in savegame
An unknown thinker type has been archived in a savegame. Thinkers include actions which move floors and ceilings and change sector light levels. This is the most common sort of savegame error, and will occur if the data is out of alignment by even a single byte.
Attempt to set music volume at %d
An invalid value for music volume has been provided in the configuration file.
Attempt to set sfx volume at %d
An invalid value for digital sound effects volume has been provided in the configuration file.
Bad music number %d
The game tried to start an invalid music. This error can occur when playing levels outside the normal bounds of 32 maps in DOOM II, or when giving bad input to the IDMUS cheat code.
Bad sfx #: %d
A bad sound number was played. This error could occur by forcing invalid sound numbers into thing types using DeHackEd.
rightvol/leftvol out of bounds
These error messages should never occur. They indicate that volume calculation for one of the stereo digital audio channels has exceeded the range of 0 to 127.
Status bar errors
drawNum: n->y - ST_Y < 0
A status bar number was drawn outside the boundary of the status bar. This error should never occur.
updateMultIcon: y - ST_Y < 0
A multi-state icon was drawn outside the boundary of the status bar. This error should never occur.
updateBinIcon: y - ST_Y < 0
A binary-state icon was drawn outside the boundary of the status bar. This error should never occur.
A rect blit operation was performed from a location outside the frame buffer. This error should never occur.
A rect blit operation was performed to a location outside the frame buffer. This error should never occur.
Bad V_DrawPatch in V_DrawPatchFlipped
A flipped screen patch was drawn to an invalid location. This error can occur when certain screen patch graphics are altered.
WAD file errors
Couldn't allocate lumpcache
The game ran out of memory while trying to construct the buffer used to dynamically cache data read from WAD files.
Couldn't realloc lumpinfo
The game ran out of memory while trying to construct the master WAD directory.
The C library function
fstat returned a failure code. The file having its information looked up must have been deleted or otherwise made unavailable.
Filename base of %s >8 chars
Wad file %s doesn't have IWAD or PWAD id
Every valid IWAD or PWAD file must contain the string "IWAD" or "PWAD" in its file header. If a file added as a WAD is missing this signature, it is considered corrupt.
W_CacheLumpNum: %i >= numlumps
A request to dynamically cache a particular lump referenced a lump number out of the range of the master WAD directory. This error may especially occur when adding flats to a DOOM PWAD incorrectly, as it causes the game to construct invalid negative lump numbers (in other words, F_START is after F_END).
W_GetNumForName: %s not found!
A resource was requested from the WAD system by name, but no such resource exists in the master WAD directory.
W_InitFiles: no files found
There were no valid IWAD or PWAD files added to the game.
W_LumpLength: %i >= numlumps
A request to retrieve the length of a particular lump referenced a lump number out of the range of the master WAD directory.
W_ReadLump: %i >= numlumps
A request to read the contents of a particular lump referenced a lump number out of the range of the master WAD directory.
W_ReadLump: couldn't open %s
This error can only occur if the -wart command line parameter has been used and a reloadable WAD file cannot be opened while attempting to load a lump inside it.
W_ReadLump: only read %i of %i on lump %i
The C standard library function
fread indicated that fewer bytes were read than the number requested, meaning that the WAD directory is corrupt. This error can generally only occur if WAD files are improperly constructed by buggy tools.
W_Reload: couldn't open %s
A file specified using the undocumented -wart option could not be opened when attempting to dynamically reload the file. This option allowed for maps to be edited by an external program while the game was still running.