Internal Error: Difference between revisions
Combined the list of causes and the EIP table. |
Reordered table by EIP, tested some IEs and added their EIP values. |
||
Line 27: | Line 27: | ||
|- | |- | ||
! EIP | ! EIP | ||
! | ! Cause | ||
|- | |- | ||
| {{Anchor| | | {{Anchor|004145BD|eip}} || An [[InfantryType]] has been given a spawn weapon (such as ASWLauncher). | ||
|- | |- | ||
| {{Anchor| | | {{Anchor|004242DB|eip}} || 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|0042E7AF|eip}} || A Construction Yard not having {{TTL|AIBuildThis|yes}} set when the owning side's AI is present in a game. | |||
|- | |||
| {{Anchor|00441C28|eip}} || You have set [[ShakeScreen]] to zero. | |||
|- | |- | ||
| {{Anchor|0046650D|eip}} || You have a shrapnel weapon which isn't assigned to a dummy object (see 'broken-reference causes' below). | | {{Anchor|0046650D|eip}} || You have a shrapnel weapon which isn't assigned to a dummy object (see 'broken-reference causes' below). | ||
|- | |- | ||
| {{Anchor| | | {{Anchor|00471CA4|eip}} || NEEDS TESTING. Not sure about the details of this one, needs clarification: A unit whose Primary weapon had Suicide=yes and Secondary had multiple mind-control. Selecting the unit and hovering the cursor over an enemy caused an IE. Swapping Primary and Secondary prevented the IE. Later, after tweaking the unit to try and determine the precise cause, got the same IE the instant it was built. | ||
|- | |||
| {{Anchor|004895C7|eip}} || You have a warhead with a {{TTL|CellSpread}} greater than 11. | |||
|- | |||
| {{Anchor|004F8CCD|eip}} || 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|0050CE14|eip}} || You have a [[BuildingType]] with {{TTL|IsPlug|yes}}, but you need to uncomment/restore the [{{TTL|General}}] {{arr|r}} {{TTL|AIIonCannonPlugValue}} line. | |||
|- | |||
| {{Anchor|0050CE5C|eip}} || The AI used a Weather Storm or Nuclear Missile superweapon and a building exists on the map with {{TTL|HoverPad}}<tt>=yes</tt> set. You need to uncomment/restore the [{{TTL|General}}] {{arr|r}} {{TTL|AIIonCannonHelipadValue}} line. | |||
|- | |||
| {{Anchor|005D7387|eip}} || Not having at least one valid [[InfantryTypes|InfantryType]] with {{TTL|AllowedToStartInMultiplayer|yes}} (default) for each house. | |||
|- | |||
| {{Anchor|0062B662|eip}} || Having an animation with {{TTL|SpawnsParticle}} which does not point to a valid ParticleSystem (see 'broken-reference causes, below). | |||
|- | |||
| {{Anchor|0064003C|eip}} || 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| | | {{Anchor|006AEBB8|eip}} || Your ra2md.ini file lists a combination of mpmode/map which the game cannot satisfy. | ||
|- | |- | ||
| {{Anchor| | | {{Anchor|006F3481|eip}} || The (elite) secondary weapon (or its warhead) of the object you just selected could not be found (see 'broken-reference causes', below). | ||
|- | |- | ||
| {{Anchor| | | {{Anchor|006F40A2|eip}} || Started construction of a unit that has been assigned a weapon that does not exist, or the weapon's warhead does not exist (see 'broken-reference causes', below). | ||
|- | |- | ||
| {{Anchor| | | {{Anchor|007120F7|eip}} || 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}} || Detonating a {{TTL|Temporal|yes}} warhead under one of the following conditions: | |||
*Firing weapon was a a shrapnel weapon. | |||
*Firing weapon was an urban combat weapon (fired from an occupied building). | |||
*Warhead has a non-zero {{TTL|CellSpread}} set. | |||
|- | |- | ||
| {{Anchor| | | {{Anchor|0073B0C9|eip}} || 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| | | {{Anchor|00772A98|eip}} || Firing a weapon that has no projectile (see 'broken-reference causes', below). | ||
|- | |- | ||
| {{Anchor| | | {{Anchor|90900004|eip}} || Generic exception, for example, raised when you are [http://bugs.renegadeprojects.com/view.php?id=76 missing the snowmd.ini median fix]. | ||
|- | |- | ||
| {{Anchor| | | {{Anchor|?|eip}} || A unit in a game mode override file has a weapon that isn't assigned to a dummy unit in the main rules (see 'broken-reference causes', below). | ||
|- | |- | ||
| {{Anchor|?|eip}} || Warheads that are not listed under {{tt|[[Warheads|[Warheads]]]}} can cause an IE, although some modders have found that this isn't always a problem. | | {{Anchor|?|eip}} || Warheads that are not listed under {{tt|[[Warheads|[Warheads]]]}} can cause an IE, although some modders have found that this isn't always a problem. | ||
|- | |- | ||
| {{Anchor|?|eip}} || 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|?|eip}} || 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|?|eip}} || 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 [[Super weapon:Genetic Mutator|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). | | {{Anchor|?|eip}} || 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 [[Super weapon:Genetic Mutator|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). | ||
|- | |- | ||
| {{Anchor|?|eip}} || Omitting {{TTL|MakeInfantry|X}} on [[InfDeath]] 9's animation ({{TTL|InfantryMutate|GENDEATH}}) can sometimes cause an IE. See [[MakeInfantry]] for more information. | | {{Anchor|?|eip}} || Omitting {{TTL|MakeInfantry|X}} on [[InfDeath]] 9's animation ({{TTL|InfantryMutate|GENDEATH}}) can sometimes cause an IE. See [[MakeInfantry]] for more information. | ||
Line 74: | Line 87: | ||
|- | |- | ||
| {{Anchor|?|eip}} || Adding a new harvester for a 4th side/faction and not making an AI Trigger for it. | | {{Anchor|?|eip}} || Adding a new harvester for a 4th side/faction and not making an AI Trigger for it. | ||
|- | |- | ||
| {{Anchor|?|eip}} || Calling for an animation that is not listed under {{tt|[[Animations|[Animations]]]}} might trigger an IE. | | {{Anchor|?|eip}} || Calling for an animation that is not listed under {{tt|[[Animations|[Animations]]]}} might trigger an IE. | ||
|- | |- | ||
| {{Anchor|?|eip}} || Building a unit in-game whose VXL/SHP was inserted in an original game MIX instead of an expansion MIX. | | {{Anchor|?|eip}} || Building a unit in-game whose VXL/SHP was inserted in an original game MIX instead of an expansion MIX. | ||
|- | |- | ||
| {{Anchor|?|eip}} || Setting {{TTL|CarryOverCap|0}}. Default value is -1, positive values do not cause an IE. | | {{Anchor|?|eip}} || Setting {{TTL|CarryOverCap|0}}. Default value is -1, positive values do not cause an IE. | ||
|- | |- | ||
| {{Anchor|?|eip}} || 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=. | | {{Anchor|?|eip}} || 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=. | ||
Line 94: | Line 99: | ||
|- | |- | ||
| {{Anchor|?|eip}} || Placing two buildings on a map so that they overlap (in the map editor), and then destroying or garrisoning one of them (in-game). Use [[FinalAlert]]'s {{tt|Options}} {{arr|r}} {{tt|{{y}}Show Building Outline}} feature to see the actual areas taken up by buildings, since there are a lot of buildings whose foundation is different from their visual size. | | {{Anchor|?|eip}} || Placing two buildings on a map so that they overlap (in the map editor), and then destroying or garrisoning one of them (in-game). Use [[FinalAlert]]'s {{tt|Options}} {{arr|r}} {{tt|{{y}}Show Building Outline}} feature to see the actual areas taken up by buildings, since there are a lot of buildings whose foundation is different from their visual size. | ||
|} | |} | ||
Line 120: | Line 111: | ||
| {{Anchor|00415698|eip}} || You used a [[TrailerAnim]] on an animation but forgot to set a [[TrailerSeperation]]. | | {{Anchor|00415698|eip}} || You used a [[TrailerAnim]] on an animation but forgot to set a [[TrailerSeperation]]. | ||
|- | |- | ||
| {{Anchor| | | {{Anchor|004C6428|eip}} || AI does not have any buildings available for it to build. Check {{TTL|BuildConst}}=, {{TTL|BuildPower}}= etc. | ||
|- | |||
| {{Anchor|006703D4|eip}} || 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. | |||
|- | |- | ||
| {{Anchor|0067159B|eip}} || WaveClass Sonic exception. Not sure if this is code related, could be end user. | | {{Anchor|0067159B|eip}} || WaveClass Sonic exception. Not sure if this is code related, could be end user. | ||
|- | |- | ||
| {{Anchor| | | {{Anchor|006717CB|eip}} || WaveClass laser exception. No certain fix for this as we know, it is a possible error with the games code. | ||
|- | |- | ||
| {{Anchor|90900004|eip}} || Generic exception, for example, raised when you are [http://bugs.renegadeprojects.com/view.php?id=76 missing the snowmd.ini median fix]. | | {{Anchor|90900004|eip}} || 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:12, 4 April 2008
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.
List of known causes of Internal Errors (and their EIPs) (please expand)
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.
Yuri's Revenge 1.001 | |
---|---|
EIP | Cause |
004145BD | An InfantryType has been given a spawn weapon (such as ASWLauncher). |
004242DB | 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. |
0042E7AF | A Construction Yard not having Template:TTL set when the owning side's AI is present in a game. |
00441C28 | You have set ShakeScreen to zero. |
0046650D | You have a shrapnel weapon which isn't assigned to a dummy object (see 'broken-reference causes' below). |
00471CA4 | NEEDS TESTING. Not sure about the details of this one, needs clarification: A unit whose Primary weapon had Suicide=yes and Secondary had multiple mind-control. Selecting the unit and hovering the cursor over an enemy caused an IE. Swapping Primary and Secondary prevented the IE. Later, after tweaking the unit to try and determine the precise cause, got the same IE the instant it was built. |
004895C7 | You have a warhead with a Template:TTL greater than 11. |
004F8CCD | 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. |
0050CE14 | You have a BuildingType with Template:TTL, but you need to uncomment/restore the [[[:Template:TTL]]] → Template:TTL line. |
0050CE5C | The AI used a Weather Storm or Nuclear Missile superweapon and a building exists on the map with Template:TTL=yes set. You need to uncomment/restore the [[[:Template:TTL]]] → Template:TTL line. |
005D7387 | Not having at least one valid InfantryType with Template:TTL (default) for each house. |
0062B662 | Having an animation with Template:TTL which does not point to a valid ParticleSystem (see 'broken-reference causes, below). |
0064003C | 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 | Your ra2md.ini file lists a combination of mpmode/map which the game cannot satisfy. |
006F3481 | The (elite) secondary weapon (or its warhead) of the object you just selected could not be found (see 'broken-reference causes', below). |
006F40A2 | Started construction of a unit that has been assigned a weapon that does not exist, or the weapon's warhead does not exist (see 'broken-reference causes', below). |
007120F7 | You have a BuildingType (which is click-repairable) with Template:TTL or Template:TTL below [[[:Template:TTL]]]→Template:TTL. |
0071AF4D | Detonating a Template:TTL warhead under one of the following conditions:
|
0073B0C9 | 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 | Firing a weapon that has no projectile (see 'broken-reference causes', below). |
90900004 | Generic exception, for example, raised when you are missing the snowmd.ini median fix. |
? | A unit in a game mode override file has a weapon that isn't assigned to a dummy unit in the main rules (see 'broken-reference causes', below). |
? | Warheads that are not listed under [Warheads] can cause an IE, although some modders have found that this isn't always 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 Construction Yards do not seem to cause a problem. |
? | 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. |
? | Using the 'Sell Unit' super weapon on a tank-bunkered unit breaks the Tank Bunker. Attempting to sell or destroy the broken Tank Bunker causes an IE. The only way to prevent this is to make sure a player never has access to both the Sell Unit Super weapon and the Tank Bunker at the same time (so unless both buildings are country specials, that means removing MCVs from crates and making Construction Yards uncapturable and immune to mind-control). |
? | Adding a new harvester for a 4th side/faction and not making an AI Trigger for it. |
? | Calling for an animation that is not listed under [Animations] might trigger an IE. |
? | Building a unit in-game whose VXL/SHP was inserted in an original game MIX instead of an expansion MIX. |
? | Setting Template:TTL. Default value is -1, positive values do not cause an IE. |
? | 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=. |
? | If an overlay type with Template:TTL is destroyed and the Template:TTL tag is blank or missing. |
? | Placing two buildings on a map so that they overlap (in the map editor), and then destroying or garrisoning one of them (in-game). Use FinalAlert's Options → Show Building Outline feature to see the actual areas taken up by buildings, since there are a lot of buildings whose foundation is different from their visual size. |
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. |
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).
Footnotes
1 ↑ The RockPatch does allow higher values (depending on version).
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)