ModEnc is currently in Maintenance Mode: Changes could occur at any given moment, without advance warning.

Difference between revisions of "Internal Error"

From ModEnc
Jump to: navigation, search
(Re: CarryOverCap, building overlap)
m (table sort, added category column)
Line 27: Line 27:
 
==== Yuri's Revenge 1.001 ====
 
==== Yuri's Revenge 1.001 ====
  
{| cellpadding="4" border="1" class="table_descrowdesccol anchorcontainer"
+
{| cellpadding="4" border="1" class="table_descrowdesccol anchorcontainer sortable"
 
! style="text-align: center" | EIP
 
! style="text-align: center" | EIP
 +
! style="text-align: center; width: 7em;" | Category
 
! style="text-align: center" | Cause
 
! style="text-align: center" | Cause
 
|-
 
|-
 
! {{Anchor|004242DB|eip}}
 
! {{Anchor|004242DB|eip}}
 +
| Animation
 
| Using a [[TrailerAnim]] on an [[animation]] but not setting a [[TrailerSeperation]] (or setting {{TTL|TrailerSeperation|0}}). This is because the default TrailerSeperation is zero, and that number is used as a divisor.
 
| Using a [[TrailerAnim]] on an [[animation]] but not setting a [[TrailerSeperation]] (or setting {{TTL|TrailerSeperation|0}}). This is because the default TrailerSeperation is zero, and that number is used as a divisor.
 
|-
 
|-
 
! {{Anchor|00424A14|eip}}
 
! {{Anchor|00424A14|eip}}
 +
| Animation
 
| An [[Animation]] with {{TTL|MakeInfantry|X}} set was played, where X was greater than the number of list entries in {{TTL|AnimToInfantry}} or less than 0.
 
| An [[Animation]] with {{TTL|MakeInfantry|X}} set was played, where X was greater than the number of list entries in {{TTL|AnimToInfantry}} or less than 0.
 
|-
 
|-
 
! {{Anchor|0042E7AF|eip}}
 
! {{Anchor|0042E7AF|eip}}
 +
| AI
 
| A Construction Yard not having {{TTL|AIBuildThis|yes}} set when the owning side's AI is present in a game.
 
| A Construction Yard not having {{TTL|AIBuildThis|yes}} set when the owning side's AI is present in a game.
 
|-
 
|-
 
! {{Anchor|00441C28|eip}}
 
! {{Anchor|00441C28|eip}}
 +
| Misc
 
| You have set [[ShakeScreen]] to zero.
 
| You have set [[ShakeScreen]] to zero.
 
|-
 
|-
 
! {{Anchor|004593BB|eip}}
 
! {{Anchor|004593BB|eip}}
 +
| Misc
 
| See [[#Tank_Bunker_/_Sell_Unit_IEs|Tank Bunker / Sell Unit IEs]]
 
| See [[#Tank_Bunker_/_Sell_Unit_IEs|Tank Bunker / Sell Unit IEs]]
 
|-
 
|-
 
! {{Anchor|0045EC90|eip}}
 
! {{Anchor|0045EC90|eip}}
 +
| Misc
 
| Multiple reasons, depending on the stack dump in the except:
 
| Multiple reasons, depending on the stack dump in the except:
 
* If {{Tt|00506115}} appears near the top of the stack dump - some country (present in the game at the moment, controlled by AI) cannot build anything from [{{TTL|General}}] {{arr|r}} {{TTL|Shipyard}}.
 
* If {{Tt|00506115}} appears near the top of the stack dump - some country (present in the game at the moment, controlled by AI) cannot build anything from [{{TTL|General}}] {{arr|r}} {{TTL|Shipyard}}.
 
|-
 
|-
 
! {{Anchor|0046650D|eip}}
 
! {{Anchor|0046650D|eip}}
 +
| Weapon
 
| You have a shrapnel weapon which isn't assigned to a dummy object (see [[#Broken-reference_Causes|broken-reference causes]], below).
 
| You have a shrapnel weapon which isn't assigned to a dummy object (see [[#Broken-reference_Causes|broken-reference causes]], below).
 
|-
 
|-
 
! {{Anchor|00471CA4|eip}}
 
! {{Anchor|00471CA4|eip}}
 +
| Weapon
 
| A unit has a {{TTL|Secondary}} weapon whose {{TTL|Warhead}} has {{TTL|MindControl|yes}} set. Triggered by one of the following events:
 
| A unit has a {{TTL|Secondary}} weapon whose {{TTL|Warhead}} has {{TTL|MindControl|yes}} set. Triggered by one of the following events:
 
*Unit was selected by the user and the user moused-over a potential target.
 
*Unit was selected by the user and the user moused-over a potential target.
Line 59: Line 68:
 
|-
 
|-
 
! {{Anchor|004895C7|eip}}
 
! {{Anchor|004895C7|eip}}
 +
| Warhead
 
| You have a warhead with a {{TTL|CellSpread}} greater than 11.
 
| You have a warhead with a {{TTL|CellSpread}} greater than 11.
 
|-
 
|-
 
! {{Anchor|004D5108|eip}}
 
! {{Anchor|004D5108|eip}}
 +
| Weapon
 
| A unit's secondary weapon does not exist (see [[#Broken-reference_Causes|broken-reference causes]], below), or the weapon's {{TTL|Warhead}} tag is missing or set to blank. Examples:
 
| A unit's secondary weapon does not exist (see [[#Broken-reference_Causes|broken-reference causes]], below), or the weapon's {{TTL|Warhead}} tag is missing or set to blank. Examples:
 
*The offending weapon is the unit's {{TTL|Secondary}} weapon, and the unit just finished constructing.
 
*The offending weapon is the unit's {{TTL|Secondary}} weapon, and the unit just finished constructing.
Line 67: Line 78:
 
|-
 
|-
 
! {{Anchor|004F8CCD|eip}}
 
! {{Anchor|004F8CCD|eip}}
 +
| AI
 
| You've listed less than 3 BuildingTypes at BuildConst= in [AI] Section and lost or sold your last listed Construction Yard while on low power. If you've already lost it, the IE will trigger when you run out of power after that.
 
| You've listed less than 3 BuildingTypes at BuildConst= in [AI] Section and lost or sold your last listed Construction Yard while on low power. If you've already lost it, the IE will trigger when you run out of power after that.
 
|-
 
|-
 
! {{Anchor|00505E41|eip}}
 
! {{Anchor|00505E41|eip}}
 +
| Misc
 
| An MCV turns neutral: If a player's MCV was mind-controlled by an enemy, that player is killed, and the MCV is then released from mind-control, an IE will occur. The cause is probably due to the Civilian house not being designed to handle MCVs. The only workaround is to make MCVs immune to mind-control (this is done in the [[YR 1.002 UMP]]). Neutral [[Building:Construction Yard|Construction Yards]] do not seem to cause a problem.
 
| An MCV turns neutral: If a player's MCV was mind-controlled by an enemy, that player is killed, and the MCV is then released from mind-control, an IE will occur. The cause is probably due to the Civilian house not being designed to handle MCVs. The only workaround is to make MCVs immune to mind-control (this is done in the [[YR 1.002 UMP]]). Neutral [[Building:Construction Yard|Construction Yards]] do not seem to cause a problem.
 
|-
 
|-
 
! {{Anchor|0050CD20|eip}}<br>{{Anchor|0050CD44|eip}}<br>{{Anchor|0050CD79|eip}}<br>{{Anchor|0050CDA2|eip}}<br>{{Anchor|0050CDCC|eip}}<br>{{Anchor|0050CDF0|eip}}<br>{{Anchor|0050CE14|eip}}<br>{{Anchor|0050CE38|eip}}<br>{{Anchor|0050CE5C|eip}}<br>{{Anchor|0050CEA2|eip}}<br>{{Anchor|0050CECC|eip}}<br>{{Anchor|0050CF15|eip}}<br>{{Anchor|0050CF2A|eip}}
 
! {{Anchor|0050CD20|eip}}<br>{{Anchor|0050CD44|eip}}<br>{{Anchor|0050CD79|eip}}<br>{{Anchor|0050CDA2|eip}}<br>{{Anchor|0050CDCC|eip}}<br>{{Anchor|0050CDF0|eip}}<br>{{Anchor|0050CE14|eip}}<br>{{Anchor|0050CE38|eip}}<br>{{Anchor|0050CE5C|eip}}<br>{{Anchor|0050CEA2|eip}}<br>{{Anchor|0050CECC|eip}}<br>{{Anchor|0050CF15|eip}}<br>{{Anchor|0050CF2A|eip}}
 +
| AI
 
| The AI is trying to pick a target for the Nuclear Missile or Weather Storm superweapon but is missing target weighting values for a certain object that exists on the map. You need to uncomment/restore one of the [{{TTL|General}}] {{arr|r}} {{TTL|AIIonCannonXXXXValue}} lines.
 
| The AI is trying to pick a target for the Nuclear Missile or Weather Storm superweapon but is missing target weighting values for a certain object that exists on the map. You need to uncomment/restore one of the [{{TTL|General}}] {{arr|r}} {{TTL|AIIonCannonXXXXValue}} lines.
 
*'''0050CD20''' - An [[InfantryType]] with {{TTL|Engineer|yes}} exists on the map. {{TTL|AIIonCannonEngineerValue}} needs restoring.
 
*'''0050CD20''' - An [[InfantryType]] with {{TTL|Engineer|yes}} exists on the map. {{TTL|AIIonCannonEngineerValue}} needs restoring.
Line 89: Line 103:
 
|-
 
|-
 
! {{Anchor|005D7387|eip}}
 
! {{Anchor|005D7387|eip}}
 +
| Misc
 
| Not having at least one valid [[InfantryTypes|InfantryType]] with {{TTL|AllowedToStartInMultiplayer|yes}} (default) for each house.
 
| Not having at least one valid [[InfantryTypes|InfantryType]] with {{TTL|AllowedToStartInMultiplayer|yes}} (default) for each house.
 
|-
 
|-
 
! {{Anchor|0062B662|eip}}
 
! {{Anchor|0062B662|eip}}
 +
| Animation
 
| Having an animation with {{TTL|SpawnsParticle}} which does not point to a valid ParticleSystem (see [[#Broken-reference_Causes|broken-reference causes]], below).
 
| Having an animation with {{TTL|SpawnsParticle}} which does not point to a valid ParticleSystem (see [[#Broken-reference_Causes|broken-reference causes]], below).
 
|-
 
|-
 
! {{Anchor|0062DCD2|eip}}
 
! {{Anchor|0062DCD2|eip}}
 +
| Misc
 
| If an overlay type with {{TTL|Explodes|yes}} set is destroyed and the {{TTL|BarrelParticle}} tag is blank or missing. Appears to be intermittent.
 
| If an overlay type with {{TTL|Explodes|yes}} set is destroyed and the {{TTL|BarrelParticle}} tag is blank or missing. Appears to be intermittent.
 
|-
 
|-
 
! {{Anchor|0064003C|eip}}
 
! {{Anchor|0064003C|eip}}
 +
| Misc
 
| If you have a buildable Construction Yard, start its construction, and then cancel it, an IE will occur. Construction Yards should not be buildable - they should only be deployed from vehicles.
 
| If you have a buildable Construction Yard, start its construction, and then cancel it, an IE will occur. Construction Yards should not be buildable - they should only be deployed from vehicles.
 
|-
 
|-
 
! {{Anchor|006AEBB8|eip}}
 
! {{Anchor|006AEBB8|eip}}
 +
| Misc
 
| Your ra2md.ini file lists a combination of mpmode/map which the game cannot satisfy.
 
| Your ra2md.ini file lists a combination of mpmode/map which the game cannot satisfy.
 
|-
 
|-
 
! {{Anchor|006F352E|eip}}
 
! {{Anchor|006F352E|eip}}
 +
| Weapon
 
| A unit has an {{TTL|ElitePrimary}} weapon specified which does not exist (see [[#Broken-reference_Causes|broken-reference causes]], below), or the weapon's {{TTL|Warhead}} tag is missing or set to blank, and that unit just got promoted to Elite status.
 
| A unit has an {{TTL|ElitePrimary}} weapon specified which does not exist (see [[#Broken-reference_Causes|broken-reference causes]], below), or the weapon's {{TTL|Warhead}} tag is missing or set to blank, and that unit just got promoted to Elite status.
 
|-
 
|-
 
! {{Anchor|006F72EF|eip}}
 
! {{Anchor|006F72EF|eip}}
 +
| Weapon
 
| A unit has an {{TTL|ElitePrimary}} weapon specified which does not exist (see [[#Broken-reference_Causes|broken-reference causes]], below), or the weapon's {{TTL|Warhead}} tag is missing or set to blank, and that unit just got promoted to Elite status.
 
| A unit has an {{TTL|ElitePrimary}} weapon specified which does not exist (see [[#Broken-reference_Causes|broken-reference causes]], below), or the weapon's {{TTL|Warhead}} tag is missing or set to blank, and that unit just got promoted to Elite status.
 
|-
 
|-
 
! {{Anchor|006F40A2|eip}}
 
! {{Anchor|006F40A2|eip}}
 +
| Weapon
 
| Started construction of a unit whose {{TTL|Primary}} weapon does not exist (see [[#Broken-reference_Causes|broken-reference causes]], below), or the weapon's {{TTL|Warhead}} tag is missing or set to blank.
 
| Started construction of a unit whose {{TTL|Primary}} weapon does not exist (see [[#Broken-reference_Causes|broken-reference causes]], below), or the weapon's {{TTL|Warhead}} tag is missing or set to blank.
 
|-
 
|-
 
! {{Anchor|0070031E|eip}}
 
! {{Anchor|0070031E|eip}}
 +
| Weapon
 
| A unit has an {{TTL|ElitePrimary}} weapon specified which does not exist (see [[#Broken-reference_Causes|broken-reference causes]], below), or the weapon's {{TTL|Warhead}} tag is missing or set to blank, and that unit just got promoted to Elite status.
 
| A unit has an {{TTL|ElitePrimary}} weapon specified which does not exist (see [[#Broken-reference_Causes|broken-reference causes]], below), or the weapon's {{TTL|Warhead}} tag is missing or set to blank, and that unit just got promoted to Elite status.
 
|-
 
|-
 
! {{Anchor|007120F7|eip}}
 
! {{Anchor|007120F7|eip}}
 +
| Misc
 
| You have a BuildingType (which is click-repairable) with {{TTL|Strength|0}} or {{TTL|Strength}} below [{{TTL|General}}]{{arr|r}}{{TTL|RepairStep}}.
 
| You have a BuildingType (which is click-repairable) with {{TTL|Strength|0}} or {{TTL|Strength}} below [{{TTL|General}}]{{arr|r}}{{TTL|RepairStep}}.
 
|-
 
|-
 
! {{Anchor|0071AF4D|eip}}
 
! {{Anchor|0071AF4D|eip}}
 +
| Warhead
 
| Detonating a {{TTL|Temporal|yes}} warhead under one of the following conditions:
 
| Detonating a {{TTL|Temporal|yes}} warhead under one of the following conditions:
 
*Firing weapon was a shrapnel weapon.
 
*Firing weapon was a shrapnel weapon.
Line 125: Line 150:
 
|-
 
|-
 
! {{Anchor|0073B0C9|eip}}
 
! {{Anchor|0073B0C9|eip}}
 +
| Misc
 
| The concept known as "[[Infantry Linking]]" can result in an IE, occuring when the linked infantry was modified in a subsequent game mode override file or a map ''and'' a human player scrolls their battlefield view to a place on the map where an AI-owned [[Building:War Factory|War Factory]] is located. Don't do Infantry Linking.
 
| The concept known as "[[Infantry Linking]]" can result in an IE, occuring when the linked infantry was modified in a subsequent game mode override file or a map ''and'' a human player scrolls their battlefield view to a place on the map where an AI-owned [[Building:War Factory|War Factory]] is located. Don't do Infantry Linking.
 
|-
 
|-
 
! {{Anchor|00772A98|eip}}
 
! {{Anchor|00772A98|eip}}
 +
| Weapon
 
| A unit has an {{TTL|ElitePrimary}} weapon specified which does not exist (see [[#Broken-reference_Causes|broken-reference causes]], below), or the weapon's {{TTL|Warhead}} tag is missing or set to blank, and that unit just got promoted to Elite status.
 
| A unit has an {{TTL|ElitePrimary}} weapon specified which does not exist (see [[#Broken-reference_Causes|broken-reference causes]], below), or the weapon's {{TTL|Warhead}} tag is missing or set to blank, and that unit just got promoted to Elite status.
 
Also reported to be due to "firing a weapon that has no projectile".
 
Also reported to be due to "firing a weapon that has no projectile".
Line 133: Line 160:
 
|-
 
|-
 
! {{Anchor|007CAF66|eip}}
 
! {{Anchor|007CAF66|eip}}
 +
| Warhead
 
| Multiple reasons, depending on the stack dump in the except:
 
| Multiple reasons, depending on the stack dump in the except:
 
* If {{Tt|0075DE19}} appears near the top of the stack dump - A [[Warhead]] whose {{TTL|Verses}} could not be processed. {{Tt|EBP}} value says how many values remained to be parsed when an error occurred - (11 - {{Tt|EBP}}) is the 0-based index of the problematic value.
 
* If {{Tt|0075DE19}} appears near the top of the stack dump - A [[Warhead]] whose {{TTL|Verses}} could not be processed. {{Tt|EBP}} value says how many values remained to be parsed when an error occurred - (11 - {{Tt|EBP}}) is the 0-based index of the problematic value.
 
|-
 
|-
 
! {{Anchor|90900004|eip}}
 
! {{Anchor|90900004|eip}}
 +
| Misc
 
| Generic exception, for example, raised when you are [http://bugs.renegadeprojects.com/view.php?id=76 missing the snowmd.ini median fix].
 
| Generic exception, for example, raised when you are [http://bugs.renegadeprojects.com/view.php?id=76 missing the snowmd.ini median fix].
 
|}
 
|}

Revision as of 23:34, 20 April 2008

Tiberian Sun's Internal Error
Red Alert 2's Internal Error
Yuri Revenge's Internal Error
RockPatch's Internal Error

The Internal Error (often just written short-hand as IE) is a general error returned by the Tiberian Sun engine and its derivates. The message itself gives no information about what the error actually was or what went wrong, thus leaving it to the modder to know what could have caused the error and to find the cause in their mod's changes.

If you experience an Internal Error, you should:

  1. Check if the EIP reported in your except.txt file matches an EIP for which the IE cause is known (see below).
  2. Think about whether a distinctive event immediately preceeded the error (e.g. a unit being built, a weapon being fired, etc.). If this was the case then take a look at the changes you applied to that unit/weapon/whatever and see if there are any mistakes.
  3. Carefully check your latest modifications, with the help of a diff between the current rules set and the previous, working rules if possible (for this reason, and in case you mess up your code beyond repair, you should always keep recent backups of working code).

Remember that the more code you add at the same time, the more likely it is to introduce multiple bugs and IE causes (and just because you found one mistake in your code, that doesn't mean there can't be another).

Except.txt

If your game crashes because of an Internal Error, a file named except.txt is generated in your game folder. This file is a dump of certain runtime-data from the game at the moment the error occurred and could potentially tell you exactly what went wrong if you knew the engine code.
Due to his research into the game's binary and his efforts to develop the RockPatch, pd has occasionally been able to indicate the area of the engine where the error occurred (for example, an error occurring in the voxel-loading routines may indicate a problem with a custom voxel). However, pd has other commitments and should not be treated as the go-to guy for any IEs you may have. Further more, pd may not neccessarily be able to help - without the source code or a comprehensive understanding of the game's binary the file is of little use. (cp. SYNCx.txt)

According to an early version of Except.txt (which now redirects here), this file includes the full structure and a stack dump of a CONTEXT element.

IEs that share the same cause also share the same EIP: value in except.txt, so knowing that value might help you determine the cause of your IE (see the list of known IE causes (below) which also includes the corresponding EIP). However, it should be noted that some shared IE causes in INI code can yield one of several different EIP values (depending on the circumstance), and that some rare IE causes can actually yield totally random EIP values. As such, if you do have an unexplained IE, you should check all of the known causes.

Known causes of Internal Errors and their EIPs

Since "Internal Error" is the game's response to almost any fatal error, its causes are diverse. Most common are causes related to weapons and warheads, with a missing warhead probably being the most commonly reported cause.
Note that some IE causes may be prevented (or at least have certain limits extended (e.g. CellSpread)) by the RockPatch, which in turn has opened up potential for new IE causes (RockPatch-specific IEs are not listed here).

Specific game versions

Yuri's Revenge 1.001

EIP Category Cause
004242DB Animation Using a TrailerAnim on an animation but not setting a TrailerSeperation (or setting Template:TTL). This is because the default TrailerSeperation is zero, and that number is used as a divisor.
00424A14 Animation An Animation with Template:TTL set was played, where X was greater than the number of list entries in Template:TTL or less than 0.
0042E7AF AI A Construction Yard not having Template:TTL set when the owning side's AI is present in a game.
00441C28 Misc You have set ShakeScreen to zero.
004593BB Misc See Tank Bunker / Sell Unit IEs
0045EC90 Misc Multiple reasons, depending on the stack dump in the except:
  • If 00506115 appears near the top of the stack dump - some country (present in the game at the moment, controlled by AI) cannot build anything from [[[:Template:TTL]]] → Template:TTL.
0046650D Weapon You have a shrapnel weapon which isn't assigned to a dummy object (see broken-reference causes, below).
00471CA4 Weapon A unit has a Template:TTL weapon whose Template:TTL has Template:TTL set. Triggered by one of the following events:
  • Unit was selected by the user and the user moused-over a potential target.
  • Unit was considering potential targets on its own (e.g. the unit was about to fire automatically at a nearby enemy unit).
004895C7 Warhead You have a warhead with a Template:TTL greater than 11.
004D5108 Weapon A unit's secondary weapon does not exist (see broken-reference causes, below), or the weapon's Template:TTL tag is missing or set to blank. Examples:
  • The offending weapon is the unit's Template:TTL weapon, and the unit just finished constructing.
  • The offending weapon is the unit's Template:TTL weapon, and the unit just got promoted to Elite status.
004F8CCD AI You've listed less than 3 BuildingTypes at BuildConst= in [AI] Section and lost or sold your last listed Construction Yard while on low power. If you've already lost it, the IE will trigger when you run out of power after that.
00505E41 Misc An MCV turns neutral: If a player's MCV was mind-controlled by an enemy, that player is killed, and the MCV is then released from mind-control, an IE will occur. The cause is probably due to the Civilian house not being designed to handle MCVs. The only workaround is to make MCVs immune to mind-control (this is done in the YR 1.002 UMP). Neutral Construction Yards do not seem to cause a problem.
0050CD20
0050CD44
0050CD79
0050CDA2
0050CDCC
0050CDF0
0050CE14
0050CE38
0050CE5C
0050CEA2
0050CECC
0050CF15
0050CF2A
AI The AI is trying to pick a target for the Nuclear Missile or Weather Storm superweapon but is missing target weighting values for a certain object that exists on the map. You need to uncomment/restore one of the [[[:Template:TTL]]] → Template:TTL lines.
005D7387 Misc Not having at least one valid InfantryType with Template:TTL (default) for each house.
0062B662 Animation Having an animation with Template:TTL which does not point to a valid ParticleSystem (see broken-reference causes, below).
0062DCD2 Misc If an overlay type with Template:TTL set is destroyed and the Template:TTL tag is blank or missing. Appears to be intermittent.
0064003C Misc If you have a buildable Construction Yard, start its construction, and then cancel it, an IE will occur. Construction Yards should not be buildable - they should only be deployed from vehicles.
006AEBB8 Misc Your ra2md.ini file lists a combination of mpmode/map which the game cannot satisfy.
006F352E Weapon A unit has an Template:TTL weapon specified which does not exist (see broken-reference causes, below), or the weapon's Template:TTL tag is missing or set to blank, and that unit just got promoted to Elite status.
006F72EF Weapon A unit has an Template:TTL weapon specified which does not exist (see broken-reference causes, below), or the weapon's Template:TTL tag is missing or set to blank, and that unit just got promoted to Elite status.
006F40A2 Weapon Started construction of a unit whose Template:TTL weapon does not exist (see broken-reference causes, below), or the weapon's Template:TTL tag is missing or set to blank.
0070031E Weapon A unit has an Template:TTL weapon specified which does not exist (see broken-reference causes, below), or the weapon's Template:TTL tag is missing or set to blank, and that unit just got promoted to Elite status.
007120F7 Misc You have a BuildingType (which is click-repairable) with Template:TTL or Template:TTL below [[[:Template:TTL]]]→Template:TTL.
0071AF4D Warhead Detonating a Template:TTL warhead under one of the following conditions:
  • Firing weapon was a shrapnel weapon.
  • Firing weapon was an urban combat weapon (fired from an occupied building).
  • Warhead has a non-zero Template:TTL set.
0073B0C9 Misc The concept known as "Infantry Linking" can result in an IE, occuring when the linked infantry was modified in a subsequent game mode override file or a map and a human player scrolls their battlefield view to a place on the map where an AI-owned War Factory is located. Don't do Infantry Linking.
00772A98 Weapon A unit has an Template:TTL weapon specified which does not exist (see broken-reference causes, below), or the weapon's Template:TTL tag is missing or set to blank, and that unit just got promoted to Elite status.

Also reported to be due to "firing a weapon that has no projectile". This needs testing - missing projectile may be an alternative reason to all 'missing weapon' IEs.

007CAF66 Warhead Multiple reasons, depending on the stack dump in the except:
  • If 0075DE19 appears near the top of the stack dump - A Warhead whose Template:TTL could not be processed. EBP value says how many values remained to be parsed when an error occurred - (11 - EBP) is the 0-based index of the problematic value.
90900004 Misc Generic exception, for example, raised when you are missing the snowmd.ini median fix.

Tiberian Sun 2.03

EIP Cause
00415698 You used a TrailerAnim on an animation but forgot to set a TrailerSeperation.
004C6428 AI does not have any buildings available for it to build. Check Template:TTL=, Template:TTL= etc.
006703D4 WaveClass Sonic exception, normally triggered by a unit with a weapon that has IsSonic=yes set, firing to the south of the screen and the user scrolling up. No certain fix for this as we know, it is a possible error with the games code.
0067159B WaveClass Sonic exception. Not sure if this is code related, could be end user.
006717CB WaveClass laser exception. No certain fix for this as we know, it is a possible error with the games code.
90900004 Generic exception, for example, raised when you are missing the snowmd.ini median fix.

Unverified / lacking information

EIP Cause
004145BD An InfantryType has been given a spawn weapon (such as ASWLauncher).
(Real reason appears to be the spawned aircraft with a corrupted HVA. Needs verification.)
? Removing a building from the PrerequisitePower= list, while it exists in one of the (GDI/NODRegular/Third)PowerPlant= lists will cause an IE the moment any of your Power buildings get destroyed or sold as long as you own a Construction Yard. YR mods that remove Yuri's side from the game, should not remove YAPOWR from PrerequisitePower=.


(Could not be reproduced thus far.)

? Calling for an animation that is not listed under [Animations] might trigger an IE.


(That can be caused by multiple issues at various EIPs.)

? Building a unit in-game whose VXL/SHP was inserted in an original game MIX instead of an expansion MIX.


(Does this really happen? Sounds more like the mix editor crapping up than simply "game should blow up because you changed stock files".)

006F3481 The (elite) secondary weapon (or its warhead) of the object you just selected could not be found (see broken-reference causes, below).


(Marshall retested this and found that the EIP for a missing secondary weapon is actually 006F352E (see above). Not sure what is meant by "you just selected" as the IE will occur the instant the unit is created/promoted. Please can someone else confim that EIP 006F3481 is incorrect and remove this entry if so. Although, it begs the question of where this EIP came from? - it was added by DCoder on 2008-03-04 (id 14195))

I'm sorry, I made a mistake analyzing that one. I saw it at C-GEN and analyzed it. But in fact it was caused by the ElitePrimary being wrong, not EliteSecondary. (Though 006F352E in your comment has "ElitePrimary" as the cause as well, I assume you meant 004D5108.) Just cause a certain EIP causes an IE, doesn't mean another EIP cannot cause an IE for the same reason - there are quite a lot of code paths in the game, and under certain circumstances the first EIP doesn't get hit.
I just reanalyzed the function which both these EIPs fall under, and I can say this: 006F3481 IEs if (Elite)Secondary is broken, 006F352E - if (Elite)Primary is. The function is responsible for selecting which weapon a unit should use against a certain target in idle mode, the EIP you reported above for (Elite)Secondary (004D5108) is correct, but is only hit if the unit is in Guard mode scanning for targets when promotion happens. [maybe this part should go off to a talk page?] //DCoder

(Just tested this a bit more and got several new EIPs for when the unit was promoted (added in this revision), can't seem to get any consistent results - will need to test this further. //Marshall

? Setting Template:TTL. Default value is -1, positive values do not cause an IE.


I have tested this and couldn't get an IE to occur. Are there any specific circumstances that are required to trigger an IE on a map with CarryOverCap=0? Note that, in FA2YR, CarryOverCap defaults to zero so I would expect this IE to have been seen more often if it was really a problem. //Marshall

This setting applies when you progress from one campaign map to another. However, I now see that the default campaigns use 0, so there must be something else amiss. A quick investigation shows that this value is not divided by, so there shouldn't be an exception at all... Will contact Apollo who submitted this as the cause. //DCoder
? Warheads that are not listed under [Warheads] have been reported to cause an IE, although the exact details are not established. It is not neccessary for every warhead to be listed (for example, removing the Grand Cannon warhead from the list appears to have no effect on the game), however there is no reason not to list every warhead.
? If a falling paratrooper (who has nearly reached the ground) is killed by an area-effect mutation weapon. Point based mutations seem to be okay (the falling paratrooper explodes) and the Genetic Mutator seems incapable of killing falling paratroopers. If you have an area-effect mutation weapon, you should ensure that all paratroopers are immune to it (this also means that you can't have a buildable paradrop plane and an area-effect mutation weapon in the same mod).
? Omitting Template:TTL on InfDeath 9's animation (Template:TTL) can sometimes cause an IE. See MakeInfantry for more information.
? Adding a new harvester for a 4th side/faction and not making an AI Trigger for it.
(Possibly RockPatch only, or possibly not the real reason. Need an except to resolve.)


I intend to remove this entry soon but am leaving it here for now to give someone else a chance to overrule me. I have tested this as thoroughly as I can and this does not affect the unpatched game. I tried removing all references to CMIN in aimd.ini, removing CMIN from HarvesterUnit=, renaming CMIN to CMIN2 in various different places. Even when the AI could not get a harvester via any means there was still no IE. If this is fourth side specific then obviously specific to the RockPatch, for which I don't think we should be listing IEs on this page. //Marshall

00000000 Placing two buildings on a map in the map editor so that they overlap, and then destroying or garrisoning one of them in-game. Note that this error is intermittent so may not immediately be noticeable. Use FinalAlert's OptionsShow Building Outline feature to see the actual areas taken up by buildings, since there are some buildings whose foundation is different from their visual size, and make sure you don't have any buildings that overlap.

Given the unusual EIP value (all zeroes) that has been gathered from testing, it may be a corrupt EIP and not a true indication of the source of the error. Note that this EIP has also been gathered from other 'random-EIP' causes.

Indeed it is not a true indication, EIP 00000000 can be acquired in several ways. If you can provide an except, I will be able to provide more specific details to look for, like in the case of 0045EC90 . //DCoder

Broken-reference Causes

  • Most of the flags that point to an object type do not verify that the object type exists and will try to invoke it anyway. This includes pointers to weapons, projectiles, warheads, particles, particle systems and infantry/unit/aircraft/building types, among other things.
  • All object types must be parsed in order for them to be invoked successfully. For example, a weapon must be parsed by being referenced by a unit in the main rules (weapons used in a game mode that aren't referenced in the main rules will not have been parsed, nor will shrapnel weapons that haven't been referenced by a dummy unit).
  • Note that all weapons have to specify a Template:TTL tag and the tag must not be blank otherwise an IE will occur. However if the specified Template:TTL does not exist then that will not cause an IE, as the game will use default warhead settings.
  • Your object type may not be 'missing' as such, you may just have mis-spelled its ID (e.g. "MagenticBeam" as opposed to "MagneticBeam"). Always check your typing carefully to make sure you don't any words out.

Tank Bunker / Sell Unit IEs

  • There are two IEs that can occur after using a 'Sell Unit' superweapon on a tank-bunkered unit. Both of these IEs can yield seemingly random EIP values (due to the fact that, when the unit is sold, the building's "BunkeredUnit" pointer isn't cleared and so points to garbage memory. Attempts to dereference it will be met with varying levels of failure).
  • An IE may occur the instant you sell the unit.
  • If an IE does not occur the instant you sell the unit, then the Tank Bunker will have been rendered unusable as the walls are still up. If the 'broken' Tank Bunker is sold or destroyed then an IE will occur (this IE does always happen). This IE frequently yields EIP 004593BB, although has been known to yield seemingly random EIP values (for the reason stated above).
  • The only way to prevent these IEs is to make sure a player never has access to both the Sell Unit superweapon and the Tank Bunker at the same time. (To achieve this, the building that provides the superweapon must be uncapturable and immune to mind-control and, unless both buildings are country specials, you will need to remove MCVs from crates and make Construction Yards uncapturable and immune to mind-control too.)

Software used to find Internal Errors

  • INI Checker (can check your rules, art and sound files for syntactic errors like typos and missing references)
  • ExceptChecker (primarily for RockPatch-related IEs, it analyzes except.txt, tries to find references to code added by the patch or known routines, and might then be able give a direction)
  • Debugger (if you know assembler)

See also