Difference between revisions of "Internal Error"
(→Figuring out your IE from Except.txt: Figured out a new code. :)) |
(Added EIP 00446F68) |
||
(132 intermediate revisions by 39 users not shown) | |||
Line 3: | Line 3: | ||
[[Image:Yr_ie.png|thumb|150px|right|Yuri Revenge's Internal Error]] | [[Image:Yr_ie.png|thumb|150px|right|Yuri Revenge's Internal Error]] | ||
[[Image:Rp_ie.png|thumb|150px|right|RockPatch's Internal Error]] | [[Image:Rp_ie.png|thumb|150px|right|RockPatch's Internal Error]] | ||
− | The '''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, the | + | If you experience an Internal Error, you should: |
+ | # Check if the EIP reported in your except.txt file matches an EIP for which the IE cause is known (see below). | ||
+ | # 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.<br> | ||
+ | # 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. <br> | ||
+ | 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 [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/context_str.asp CONTEXT] element. | ||
+ | |||
+ | IEs that share the same cause also share the same <tt>EIP:</tt> 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.<br>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). | ||
− | |||
− | |||
− | |||
− | + | === Some useful tips === | |
+ | If an integer between {{Tt|0x00812000}} and {{Tt|0x00B78300}} appears in the stack, subtract {{Tt|0x00400000}} from it and look at the resulting address in {{Tt|gamemd.exe}} with a hex editor. If you find some INI flag, you can be almost sure this flag was the one being read when the problem happened and as such its values (or absence thereof) is the problem. | ||
+ | <!-- Someone consider writing a tool to process this --> | ||
− | |||
− | == | + | === Specific game versions === |
− | |||
− | === | + | ==== Yuri's Revenge 1.001 ==== |
− | |||
− | |||
− | |||
− | |||
− | + | {{:Internal_Error/YR}} | |
− | |||
− | |||
− | |||
− | |||
− | === | + | ==== Tiberian Sun 2.03 ==== |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | === | + | {| cellpadding="4" border="1" class="table_descrowdesccol anchorcontainer" |
− | {{ | + | ! EIP |
− | {{ | + | ! Cause |
+ | |- | ||
+ | ! {{Anchor|00415698|eip}} | ||
+ | | You used a [[TrailerAnim]] on an animation but forgot to set a [[TrailerSeperation]]. | ||
+ | |- | ||
+ | ! {{Anchor|0042A061|eip}} | ||
+ | | Wall=yes on a normal building. | ||
+ | |- | ||
+ | ! {{Anchor|0043541C|eip}} | ||
+ | | Building turret animation has an invalid pointer to an [[AnimTypeClass]] when charging up. See Nod Obelisk of Light for example. | ||
+ | |- | ||
+ | ! {{Anchor|00446E61|eip}}<br />{{Anchor|00446F68|eip}} | ||
+ | | Airburst weapon bullet was null. If you have {{f|Airburst|yes|link}} or {{f|Splits|yes|link}} on a [[projectile]], you must also define {{f|AirburstWeapon|link}}. | ||
+ | |- | ||
+ | ! {{Anchor|0046C7E2|eip}} | ||
+ | | Fog of War was enabled and crashed the game. | ||
+ | |- | ||
+ | ! {{Anchor|004BAEF8|eip}} | ||
+ | | [AI] BuildRefinery= -> one of your factions is missing an entry here, which will cause a crash when the AI tries to use this faction. Will not trigger a crash for human players. | ||
+ | |- | ||
+ | ! {{Anchor|004BAF12|eip}} | ||
+ | | [General] HarvesterUnit -> one of the objects in this list is incorrect OR this list has exceeded 127 characters. Commonly triggered when adding new MCV and harvester object codes here when expanding the playable faction list in the TSC 6.00+ builds. | ||
+ | |- | ||
+ | ! {{Anchor|004C445E|eip}} | ||
+ | | A unit's Secondary weapon doesn't exist. Check the spelling and cases. | ||
+ | |- | ||
+ | ! {{Anchor|004C6428|eip}} | ||
+ | | AI does not have any buildings available for it to build. Check {{f|BuildConst|link}}=, {{f|BuildPower|link}}= etc. | ||
+ | |- | ||
+ | ! {{Anchor|004D2451|eip}} | ||
+ | | An infantry was about to take damage from a source with no valid [[Warhead]]= set. | ||
+ | |- | ||
+ | ! {{Anchor|004D8BF3|eip}} | ||
+ | | Infantry with missing image in rules.ini (same as missing sequence in art.ini). | ||
+ | |- | ||
+ | !{{Anchor|004F8EDD|eip}} | ||
+ | |The number of [[VehicleTypes]] in the [[BaseUnit]] section is incomplete. | ||
+ | |- | ||
+ | ! {{Anchor|005A4814|eip}} | ||
+ | | Railgun with wrong particle keys. | ||
+ | |- | ||
+ | ! {{Anchor|005A59B4|eip}} | ||
+ | | {{tt|[GasCloudSys]}} with a limited {{f|Lifetime|link}}. This system has hardcoded properties and must exist throughout the game, ergo you must set {{f|Lifetime|-1}} or leave it undefined (it defaults to -1). | ||
+ | |- | ||
+ | ! {{Anchor|005A5EB6|eip}} | ||
+ | | {{f|ParticleCap|1|link}} on a {{f|BehavesLike|Spark|link}} particle system. | ||
+ | |- | ||
+ | ! {{Anchor|005A640F|eip}} | ||
+ | | {{f|NextParticle|link}} defined on a particle spawned by a {{f|BehavesLike|Smoke|link}} particle system. | ||
+ | |- | ||
+ | ! {{Anchor|0062E6F6|eip}} | ||
+ | | It was attempted to use a normal colored house on a multiplayer map. | ||
+ | |- | ||
+ | ! {{Anchor|00649563|eip}} | ||
+ | | A [[trigger]] failed to spring. Look for a trigger with invalid parameters, for example a misspelled or undefined [[house]]. | ||
+ | |- | ||
+ | ! {{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, although [http://ppmsite.com/forum/viewtopic.php?t=31604 HyperPatch] has been confirmed to fix it at least on some systems. Another fix is disabling DirectDraw hardware acceleration via either dxdiag or a [http://www.ppmsite.com/forum/viewtopic.php?t=19543 custom ddraw.dll], although the fix doesn't work on Windows OS's newer than XP. | ||
+ | |- | ||
+ | ! {{Anchor|0067159B|eip}} | ||
+ | | WaveClass Sonic exception. Not sure if this is code related, could be end user. | ||
+ | |- | ||
+ | ! {{Anchor|006717CB|eip}} | ||
+ | | WaveClass laser exception. This can be fixed by setting DetailLevel= to 1 or 0 in SUN.ini. In addition, disabling DirectDraw hardware acceleration via either dxdiag or a [http://www.ppmsite.com/forum/viewtopic.php?t=19543 custom ddraw.dll] fixes it, but this fix only works on Windows operating systems older than Vista. | ||
+ | |- | ||
+ | ! {{Anchor|0067159B|eip}} | ||
+ | | | You have set {{sl|AudioVisual|ShakeScreen}} to zero. | ||
+ | |- | ||
+ | ! {{Anchor|00681363|eip}} | ||
+ | | Missing weedguy hack. (second stage Cluster weapons need to be assigned to a unit, to work) | ||
+ | |- | ||
+ | ! {{Anchor|006A877A|eip}} | ||
+ | | LightSize>94 was set on a particlesystem. | ||
+ | |- | ||
+ | ! {{Anchor|006B6AE6|eip}} | ||
+ | | Multiple reasons, depending on the stack dump in the except: | ||
+ | * If {{Tt|0066F44F}} appears near the top of the stack dump - A [[Warhead]] whose {{f|Verses|link}} could not be processed. {{Tt|EBP}} value says how many values remained to be parsed when an error occurred - (5 - {{Tt|EBP}}) is the 0-based index of the problematic value. | ||
+ | |- | ||
+ | ! {{Anchor|006BB69C|eip}} | ||
+ | | conyard construction as building was canceled in the sidebar. | ||
+ | |- | ||
+ | ! {{Anchor|90900004|eip}} | ||
+ | | Generic exception. | ||
+ | |} | ||
− | === | + | ==== Unverified / lacking information ==== |
− | + | {| cellpadding="4" border="1" class="table_descrowdesccol anchorcontainer" | |
− | {| cellpadding="4" border="1" class=" | ||
! EIP | ! EIP | ||
! Cause | ! Cause | ||
|- | |- | ||
− | ! | + | ! {{Anchor|00494BCD|eip}} |
+ | | (Ares 3.0) A corrupted SHP image was drawn. Check mix files for any .shp files marked by XCC Mixer as 'unknown' under "type". | ||
|- | |- | ||
− | |||
|- | |- | ||
− | + | ! {{Anchor|1118A7A5|eip}} | |
+ | | Probably caused by trying to destroy a tag, but supplying the tag and not a trigger (FA2 offers Triggers, but I hand-typed a tag (among other things). Occams razor suggests this is the culprit. | ||
|- | |- | ||
− | | | + | ! {{Anchor|655B4A9C|eip}} |
+ | |(Ares 0.E) Setting a [ParticlePart] with 2 BehavesLike= simutaneously (for example , 'both Like=railgun' and 'Like=smoke' exist) may cause an EIP as above . Remove BehavesLike=railgun , and keep Like=smoke here in a [RailgunPart] to avoid this EIP and still gets a railgun with specific SHP-animation rail. | ||
+ | <br>''(Two BehavesLike in Ares 0.D is still available , but 0.E not .)'' | ||
|- | |- | ||
− | + | ! {{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=. | ||
+ | <br>''(Could not be reproduced thus far.)'' | ||
|- | |- | ||
− | + | ! {{Anchor|?|eip}} | |
+ | | Calling for an animation that is not listed under {{tt|[[Animations|[Animations]]]}} might trigger an IE. | ||
+ | <br>''(That can be caused by multiple issues at various EIPs.)'' | ||
|- | |- | ||
− | + | ! {{Anchor|?|eip}} | |
+ | | Building a unit in-game whose VXL/SHP was inserted in an original game MIX instead of an expansion MIX. | ||
+ | <br>''(Does this really happen? Sounds more like the mix editor crapping up than simply "game should blow up because you changed stock files".)'' | ||
+ | <br>''Further more, why would anyone eschew the normal method of ''expand''ing the game''. I don't see anyone testing/replicating this so I propose removing it from the list. //Marshall'' | ||
|- | |- | ||
− | + | ! {{Anchor|006F3481|eip}} | |
+ | | The (elite) secondary weapon (or its warhead) of the object you just selected could not be found (see [[#Broken-reference_Causes|broken-reference causes]], below). | ||
+ | <br>''(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 [http://www.cannis.net/forum/index.php?s=&showtopic=8560&view=findpost&p=170096 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. <br>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?] ''//[[User:DCoder|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'' | ||
|- | |- | ||
− | | | + | ! {{Anchor|?|eip}} |
+ | | Setting {{f|CarryOverCap|0|link}}. Default value is -1, positive values do not cause an IE. | ||
+ | <br>''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. ''//[[User:DCoder|DCoder]]'' | ||
|- | |- | ||
− | | | + | ! {{Anchor|?|eip}} |
+ | | Warheads that are not listed under {{tt|[[Warheads|[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. '''Validity questionable - if someone can replicate this then please provide an except.txt.''' | ||
+ | ''Simply thinking about this, putting warheads on the list should guarantee their position in the internal array, so if there is anywhere that references warheads by internal array position then this is important. However, even if you change an existing weapon's warhead to a non-parsed one in a game mode file, you ''still'' won't get an IE because default warhead values will be used. Because of this, I'm starting to wonder if the reports of un-listed warheads causing an IE are erroneous. If someone can replicate this then please provide an except.txt //Marshall'' | ||
+ | : Verified under a debugger - if a weapon exists and links to a warhead that does not, this will not cause an IE, warhead stats will simply remain defaulted. (In other cases, warheads should also remain defaulted but functional. I have not verified every warhead loading location now, but my applicable ini flags tables should indicate whether or not uninited objects cause issues.) ''//[[User:DCoder|DCoder]] 12:44, 11 May 2008 (UTC)'' | ||
|- | |- | ||
− | | | + | ! {{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|00000000|eip}} |
+ | | 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 {{tt|Options}} {{arr|r}} {{tt|Show 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 . ''//[[User:DCoder|DCoder]]'' | ||
|- | |- | ||
− | | | + | ! {{Anchor|004A2684|eip}} |
+ | | Starting a game on any map concludes in a "unable to read scenario" error while loading. The cause of this is an empty uimd.ini file or possibly another empty ini file without any content. | ||
+ | ''//[[User:RaVaGe|RaVaGe]]'' | ||
|- | |- | ||
− | ! | + | ! {{Anchor|007564BD|eip}} |
+ | | Internal error when starting a game, possibly caused by attempting to load graphics from a corrupt mix file. | ||
+ | ''//[[User:RaVaGe|RaVaGe]]'' | ||
|- | |- | ||
− | | | + | ! {{Anchor|404E0000|eip}} |
+ | | Selectable=no on spawned [[AircraftTypes]]. | ||
+ | ''// [[User:Bbglas007|Bbglas007]]'' | ||
+ | |||
+ | This error also occurs if there are overlapping structures and/or overlapping rubble on the map and units try to pathfind over them or one of the buildings is destroyed. Keep in mind that an existing building with Image=none (like for example a nuclear silo) still remains its Bib as it is read from art.ini. So if you give a [NUKE] Image=none it still remains its 3x3 Bib, which counts as an overlapping building. In general don't have overlapping buildings on your map. | ||
+ | |||
+ | ''// [[User:DoctorEvil|DoctorEvil]]'' and ~ [[User:RAZER|RAZER]] | ||
+ | |- | ||
+ | ! {{Anchor|006E2449|eip}} | ||
+ | | This error occurs when you fire a trigger action 42 (Do explosion at...) at an undefined waypoint. | ||
+ | ''// [[User:DoctorEvil|DoctorEvil]]'' | ||
|} | |} | ||
+ | |||
+ | ===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 {{f|Warhead|link}} tag and the tag must not be blank otherwise an IE will occur. However if the specified {{f|Warhead|link}} 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 <!-- irony intended --> 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. <small>(To achieve this, the building that provides the superweapon must be uncapturable and immune to mind-control as must the Tank Bunker. Further more, 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.)</small> | ||
==Software used to find Internal Errors== | ==Software used to find Internal Errors== | ||
− | *[ | + | *[http://dc.strategy-x.com/checker 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) | *[[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) | *[[Debugger]] (if you know assembler) | ||
Line 100: | Line 221: | ||
[[Category:Bugs_and_Errors]] | [[Category:Bugs_and_Errors]] | ||
− | |||
− |
Latest revision as of 16:19, 2 October 2024
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:
- Check if the EIP reported in your except.txt file matches an EIP for which the IE cause is known (see below).
- 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.
- 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).
Contents
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).
Some useful tips
If an integer between 0x00812000 and 0x00B78300 appears in the stack, subtract 0x00400000 from it and look at the resulting address in gamemd.exe with a hex editor. If you find some INI flag, you can be almost sure this flag was the one being read when the problem happened and as such its values (or absence thereof) is the problem.
Specific game versions
Yuri's Revenge 1.001
EIP | Category | Cause |
---|---|---|
00000002 | Unknown | Uknown. Depends on stack dump |
00000061 | either Countries or Singleplayer | This error is encountered when you launch RA2's unedited campaign missions, but have added a new country to the Countries list. This can happen if RulesMD.ini is used by RA2 instead of Rules.ini (by manually renaming the file) and you forgot to add a ';' to entry 9 (which is set to YuriCountry for YR). |
004145BD | Art | An AircraftType has a corrupted HVA, assuming one even exists for the game to read.
Shows the file type as "unknown" in the XCC Mixer if corrupt. Also an AircraftType has image tag missing or no artmd section. This could also be caused from an aircraft with no name under AircraftTypes or the name is in the wrong section, or attempting to use SHP image for aircraft (which game cannot draw and will attempt to treat as a voxel image, leading back to the first point). |
004157E3 | Weapon | An AircraftType used as spy plane has no Primary weapon. |
00417D05 | Weapon | An AircraftType has fired a weapon which has Suicide=yes set. |
004184AB | Weapon | Needs more investigation, but... It could be that a unit is trying to use a weapon that did not specify a valid projectile. If this is the case, the error happens when the weapon is first used. It could also be that a unit died but whatever DeathWeapon was supplied is somehow inadequate. This has also been reported to be the same error as 004157E3 and therefore points to a broken-reference cause relating to airplane death and/or weapon handling.. |
0041D9B1 | ??? | "something to do with ColorAdd section or LaserTargetColor [...] theres only 16 color slots in YR, you corrupted the game's memory" |
004242DB | Animation | Using a TrailerAnim on an Animation but not setting a TrailerSeperation (or setting TrailerSeperation=0). This is because the default TrailerSeperation is zero, and that number is used as a divisor. |
00424A05 | Animation | An Animation with MakeInfantry=X set was played, where X was greater than the number of list entries in AnimToInfantry or less than 0.
Genetic Converter calls an animation that has "MakeInfantry=0" line the global setting "AnimToInfantry=(list)" has an infantry-type listed at list position 0 which no longer exists (in this case, list position 0 was BRUTE, which no longer exists in the mod) ...so it crashes once the anim is done playing and it tries to create the infantry-type at the location of the anim |
00424A14 | Animation | An Animation with MakeInfantry=X set was played, where X was greater than the number of list entries in AnimToInfantry or less than 0. |
0042E7AF | AI | A Construction Yard does not have AIBuildThis=yes set and the owning side's AI was present in the game. |
00441C28 | Misc | You have set [AudioVisual]→ShakeScreen= to zero. |
004593BB | Misc | See Tank Bunker / Sell Unit IEs |
004586A9 | General | "What PadAircraft would you like?" ";" "You must have PadAircraft!!! I kill you!" |
0045EC90 | Misc | Multiple reasons, depending on the stack dump in the except: |
0045ED69 | Misc | The [General]→PadAircraft= list is empty. |
0045ED71 | Misc | The first AircraftType in the [General]→PadAircraft= list doesn't have at least one BuildingType listed as its Dock. |
0046650D | Weapon | A unit's ShrapnelWeapon or DeathWeapon does not exist (see broken-reference causes, below). |
004687E5 | Weapon | Most likely caused by something like assigning a Weapon value to a Warhead key, potentially on a ShrapnelWeapon (needs verification). |
00469EDA | Weapon | Reproducible by firing a homing weapon whose projectile has Airburst=yes on the ground. |
00471CA4 | Weapon | A unit's initial primary (Primary or Weapon1) weapon's Warhead does not have MindControl=yes set, but a weapon in some other weapon slot does. Triggered by one of the following events:
|
0047C2E7 | Map/Terrain | Crash was when a cell's radar color was being retrieved from an Isometric Tile, which might be corrupt.
Can happen when loading a map that uses tiles that are not present; like when FA2 asks "map is corrupt, do you want to attempt fix?". |
00482096 | Unit crates | Your [AI]→BuildRefinery= is either invalid, missing or blank thereby the game can't find the harvesters for deciding the unit. |
004895C7 | Warhead | You have a warhead with a CellSpread greater than 11. |
0049FA09 | Map | Unconfirmed, but might have been happening when a team of rhinos and a siege chopper were spawned as a reinforcement team at a waypoint at the very top of the visible boundary. Replacing the team with one with just rhino tanks seems to have prevented the error.
This can also happen when reinforcements meant for a particular house are meant to arrive but there is no player or AI in the game session. Seems to also happen when you try to spawn a teamtype that doesn't exist. PROBABLY this should be classified as a TeamTypes or TriggerActions issue. |
004AEE5A | Scenario | a YR Scenario as declared in missionmd.ini doesn't have LS800BkgdPal= defined or it's commented out. |
004C445E | Weapon | A unit's secondary weapon does not exist (see broken-reference causes, below), or the weapon's Warhead tag is missing or set to blank. Examples:
|
004C2C19 | Weapon | A vehicle that did not achieve complete "independent existence" launched a weapon with EBolt special effects, the game crashes due to the loss of the shooter's pointer.
A vehicle, as a passenger with a vehicle with OpenTopped=true(like Battle Fortress), fires outwards. At this point, the Battle Fortress is suddenly destroyed, which has a high chance of causing a crash. Replacing IsElectricBolt with IsLaser can partially reduce the probability of crashing, but it still IE(0046650D), albeit with a slightly lower probability.
|
004D5108 | Weapon | A unit's secondary weapon does not exist (see broken-reference causes, below), or the weapon's Warhead tag is missing or set to blank. Examples:
|
004D81DA | Malformed input | A Tube expects at least an entry cell, a direction how to enter the Tube, and an exit cell.
In this case the exit cell is invalid/improperly defined. Happens when using the TS & RA2 Tunnel Drawer and then force-ending a Tube with F (since that editor then doesn't generate ending coordinates when force-ending). |
004F0FEC | Weapon | A unit's Primary weapon does not exist (see broken-reference causes, below), or the weapon's Warhead tag is missing or set to blank. Examples:
|
004F65BF | Misc | Some House cannot build anything from [General]→BaseUnit= . |
004F78E4 | AI | A Team was created without a teamtype. |
004F8CCD | AI | [AI]→BuildConst= lists less than 3 BuildingTypes and your last [listed] Construction Yard was destroyed or sold while you were on low power, or you went into low power without owning any Construction Yards. |
004F9FAD | Misc | A trigger is trying to perform an action that requires the trigger's house owner to be present in the game, but the country (most likely America) is not playing. The crash happens as soon as the action is executed. |
00502CC4 | Map | A reinforcement (7) TeamType that does not have a valid House is being created (e.g. create a reinforcement on a TeamType with House: <none>). |
00502CE1 | Map | Nobody is the House on a Trigger whose Action creates a reinforcement (7) TeamType belonging to said House. |
00505E41 | Misc | An AI-controlled House which, due to rules(md).ini configuration, is unable to construct a base, received a Construction Yard thus triggering the AI base planning routine. Triggered by the following events:
More detail: The AI base planning logic kicks in at the moment a player receives a Construction Yard and generates a plan of what buildings to build, in what order. However, the game makes an assumption that any country that can actually start base construction will be able to build at least 3 different BuildingTypes. When that assumption fails (a Construction Yard is received by the civilian house, who cannot build anything), everything goes haywire. For more info on how base planning logic works, refer to the AI Base Planning System article. |
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 lacking target weighting values for a certain object that exists on the map. You need to uncomment/restore one of the [General]→AIIonCannonXValue= lines.
|
00518369 | Warhead | An InfantryType is taking damage from a non-existant warhead. |
005213CB | Weapon | An InfantryType with DeployFire=yes doesn't have a Secondary weapon set, and the game crashes while retrieving the weapon's RadLevel. |
0054AF0E | Object | A unit's Secondary points to a non-existent weapon. |
0054D10A | Object | This happens when you re-code the Battle Fortress to have a SizeLimit bigger than 2 (i.e. can load other tanks) and then tell it to enter an amphibious transport. Of course, this isn't limited to the BFRT alone. It should be noted though that the game doesn't always crash when the enter order is issued. It's more of an occasional crash that seems to happen randomly. (confirmed for RA2) |
00567B43 | Object | An Object has a negative sight. |
0056D388 | Object | An InfantryType or VehicleType does not have a valid movement zone. |
005B36EB | AI Programming (Script Actions) | The internal error happens when a team tries to execute the "11. Change Mission" script action when the parameter is invalid or missing. |
005D7387 | Misc | Not having at least one valid InfantryType with AllowedToStartInMultiplayer=yes (default) for each house. |
005DA453 | Network | A crash occurred with the network code around an object called FirewallHelper. |
005F4F88 | Animation | An Animation has TiberiumSpawnType=SOME_OVERLAY and SOME_OVERLAY is one of the three last entries in [OverlayTypes]. Link to original report |
005F5155 | Misc | You tried to construct a BuildingType with HasSpotlight=yes. Yuri's Revenge 1.001 doesn't support this, only patched versions do. |
00629FE7 | Weapon/Unit | Parasite=yes on the warhead, but no other Parasite settings. The thing that manages the parasite has no owner. Weapon will manage to fire several times without crashing, though. |
0062B662 | Animation | Having an animation with SpawnsParticle which does not point to a valid ParticleSystem (see broken-reference causes, below). |
0062DCD2 | Misc | An overlay type with Explodes=yes set has been destroyed, random dice roll determined that the particle specified in BarrelParticle should be displayed, but that flag is blank OR you're firing a weapon with UseSparkParticles=yes/UseFireParticles=yes/IsRailgun=yes without a valid AttachedParticleSystem= set. |
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. |
006407A6 | Misc | You've made a MapShot "Not ScreenShot" that was saved as Map****.yrm and is in your Directory. Game is trying to load map during initial startup. Remove these MapShots from the directory to prevent this from happening. |
0065B73F | Weapon | You have a Weapon whose RadLevel is less than [Radiation]→RadLightDelay=. (Cause: Integer division is performed on those two values, which yields zero in this case, and then another value is divided by the result - division by zero.) |
00691520 006915D6 |
AI Programming (Script Actions) | An invalid parameter was supplied to the script action, for example:
|
0069ACC6 | Map | A PKT file's [MultiMaps] section declares a map which doesn't have its own section to define the parameters, or lacks the CD entry in the section. |
00697F29 | Misc | The game can't find a valid gamemode. Your mpmodesmd.ini is corrupted. |
006ABF96 | Misc | This IE is encountered immediately after loading up. This was tested for skirmish with the XWIS Multiplayer-only components.
This crash happens when the resolution is set to higher than 2560x1600. |
006AEBB8 | Misc | Your ra2md.ini file lists a combination of game mode/map which the game cannot satisfy. This can happen if the range of valid combinations changes between one game session and the next (i.e. because you changed what maps were valid for which game modes in your mod, or you activated a different mod to the one that was active previously).
LaunchBase works around this by saving and restoring the game's configuration on a per-mod basis. |
006B7987 | Object | A garrisonable building has non-existing weapons. |
006B7D30 | Object | An object has a weapon with Spawner=yes, but it doesn't have Spawns=yes. The latter part is what tells the game to initialize the Spawn Manager for this unit when it's instantiated, the former part tells the game to try and access the Spawn Manager (and it doesn't check if it's been initialized properly). |
006B7718 | Object | A Spawned=yes attempted to fly over the map border instead of landing, thus crashing the game. A known reason for this issue is Selectable=no on AircraftTypes that use aircraft Locomotor. |
006C1D28 | Object | A unit has Turret=yes despite unittur.vxl not existing. What's interesting is that the game won't crash because of this if no VXL or HVA for this unit exists at all. |
006DE99D | Map | A Trigger has an Action that references the Trigger's House, but said House does not exist. For example, a Trigger on Iraq exists that grants Iraq a Superweapon and sets the charge to 100 will only crash if Iraq isn't playing. |
006EA6AE | AI/Map | You coerced the game into creating an instance of a TeamType that is not defined, either through Map Triggers or through AI Script Actions. |
006F1FC6 | AI programming | A TeamType has been defined without assigning it a TaskForce, or a TeamType is being referenced without being defined at all. |
006F352E | Weapon | A unit has an ElitePrimary weapon specified which does not exist (see broken-reference causes, below), or the weapon's Warhead tag is missing or set to blank, and that unit just got promoted to Elite status. |
006F40A2 | Weapon | Started construction of a unit whose Primary weapon does not exist (see broken-reference causes, below), or the weapon's Warhead tag is missing or set to blank. This also applies to turret changers, for instance if Weapon1 is not a valid weapon. |
006F72EF | Weapon | A unit has an ElitePrimary weapon specified which does not exist (see broken-reference causes, below), or the weapon's Warhead tag is missing or set to blank, and that unit just got promoted to Elite status. |
006F9DB6 | Techno | The game tried to check an ownerless unit's owner. Reported case was Service Depot's allegiance check. |
006FC655 | Weapon | A unit has an EliteWeaponX weapon specified which does not exist (see broken-reference causes, below), and that unit just got promoted to Elite status.. |
0070031E | Weapon | A unit has a weapon specified which does not exist in the INI (see broken-reference causes, below), or the weapon's Warhead tag is missing or set to blank. (Common reason - that unit just got promoted to Elite status and one of the Elite weapons is misdefined.) |
00702330 | Anim | A building has missing or non-existing DebrisTypes. Like DebrisTypes=CRYSTAL1. |
0070DF8A | Weapon | A unit with IsGattling=yes is either missing WeaponX/EliteWeaponX entries, or WeaponCount is less than 2 times WeaponStages. For example, if WeaponStages=2, WeaponCount must equal 4, and you must have accompanying Weapon1-4/EliteWeapon1-4 entries. IE occurs at the time the IsGattling unit is firing and would advance to the missing Weapon Stage. |
007120F7 | Misc | You have a BuildingType (which is click-repairable) with Strength=0 or Strength below [General]→RepairStep=. |
0071ADE9 | Weapon | Deploying an elite unit that does not have the elite secondary weapon. |
0071AF4D | Warhead | Detonating a Temporal=yes warhead under one of the following conditions:
|
0071B173 | Warhead | Firing a death weapon using a Temporal=yes warhead. |
00442832 00442892 004428DE |
Warhead | Using Sparky=yes warhead without three valid animations defined in [AudioVisual]→OnFire=. Crash happens when damaging a building into yellow or red health. |
0071C661 | Warhead | Using Sparky=yes warhead without two valid animations defined in [AudioVisual]→TreeFire=. Crash happens when damaging a wooden terrain object. |
0072652D | Map | There is a trigger in the map that wants to change a house's non-existant object to another house. |
00684E55 | Map | There is a trigger which requires a house, either because its events, actions or attached triggers require a house. The house on the trigger is not set. |
00728F08 | Object | Something's wrong with this building's Secondary (missing/invalid) |
007387EB | Art | [AudioVisual]→ShakeScreen= is missing or set to zero. |
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. |
0073B692 | Unknown | "crashed drawing a voxel" |
0073C762 | Art | The artmd.ini entry specified by a Voxel-using VehicleType's Image tag is missing - the game defaults to Voxel=no in this case and attempts to load and draw a non-existant SHP. |
00756B2D | Art | The specified ShadowIndex on an AircraftType or a voxel VehicleType adresses a section that does not exist. |
00772A98 | Weapon | A unit has an ElitePrimary weapon specified which does not exist (see broken-reference causes, below), or the weapon's 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". This needs testing - missing projectile may be an alternative reason to all 'missing weapon' IEs. This EIP also appears when trying to build a custom building using the Korean flag Image after giving it a secondary weapon similar to the GGI MissileLauncher. |
007C9B92 | Malformed input | Multiple reasons, depending on the stack dump in the except:
Another reason: A country has empty nodes in a campaign map. It may happen NodeCount has a value different than the actual amount of nodes. Make sure the amount of base nodes exactly match the value of NodeCount. Alternatively, the action's input goes beyond column 512, where the INI parser cuts off (spread trigger actions on multiple triggers then). |
007CAF66 | Malformed input | Multiple reasons, depending on the stack dump in the except: |
007CFD30 | Misc - memory management | If line 20 of the stack dump includes 61108B, and line 23 includes 610CA0, you are likely trying to use RockPatch's "Place Urban Areas" feature without applying the necessary snowmd.ini fix. Please check the RockPatch Help for more info. |
Varies, stack dump starts with 0051BB7D | Warhead | A unit was being erased by a chrono weapon but the object that started the erase process no longer exists. When a unit is being erased, an instance of the TemporalClass is linked to it. This class references the object that is doing the erasing. If the object breaks the link under 'normal' circumstances (e.g. the firer is destroyed or moved) then the attack order is cancelled and the TemporalClass is removed. In some rare cases the link to the firer's TemporalClass is not removed and therefore points to garbage memory.
Examples of how the IE may occur:
The IE occurs when the unit would have been erased. |
Varies, stack dump starts with 00520FC8 | Warhead | A building was being erased by a chrono weapon after infantry recieved the order to occupy it. When the building is erased before the infantry reaches it, an IE occurs. This is because the TemporalClass removes the building without marking it as dead, thus the occupying infantry is not informed its destination is gone. The IE occurs when the infantry unit updates its position. There is another TemporalClass related bug similar to this one – EIP address 00521BB6, which lies inside the same function, can be seen near the top on a stack of this exception. |
0052976F | Campaign | RA2 1.003 doesn't like it when its battle.ini is overriden by another one outside of local.mix. Whether or not putting it in an expandxx.mix fixes this is unknown.
The game crashes when your start a new campaign during loading. You get a blank screen during loading. A side-effect is the soviet campaign-load palette and SovietLoad color being used for Allied missions when loading them through the load menu and then restarting them. Strangely enough, the reverse doesn't happen. |
00529A14 | Map | Game attempted to read a Campaign map as a skirmish map; [Header]>NumberStartingPoints= is corrupt. For Single-Player missions, manually set it to 0 and it'll load again. |
Varies, stack dump at 18D264 has 00722C9E | Resource | One or more resources have invalid resource spread/growth data which tries to access a map tile it isn't supposed to and corrupting it. |
0128DC54 | Unknown | Ares crash. Circumstances unknown. |
0FC904D0 | Unknown | Ares crash. Circumstances unknown.
Stack dump starts with 006B771E: "spawned object related [...] missiles, carrier intruders" |
1032F871 | Unknown | Ares crash. Circumstances unknown. |
90900004 | Misc | Generic exception, for example, raised when you are missing the snowmd.ini median fix. |
FEEEFEEE | Misc | Multiple reasons, depending on the stack dump in the except:
|
FFFFFFFF | Unknown | Unknown. Depends on stack dump. |
Tiberian Sun 2.03
EIP | Cause |
---|---|
00415698 | You used a TrailerAnim on an animation but forgot to set a TrailerSeperation. |
0042A061 | Wall=yes on a normal building. |
0043541C | Building turret animation has an invalid pointer to an AnimTypeClass when charging up. See Nod Obelisk of Light for example. |
00446E61 00446F68 |
Airburst weapon bullet was null. If you have Airburst=yes or Splits=yes on a projectile, you must also define AirburstWeapon. |
0046C7E2 | Fog of War was enabled and crashed the game. |
004BAEF8 | [AI] BuildRefinery= -> one of your factions is missing an entry here, which will cause a crash when the AI tries to use this faction. Will not trigger a crash for human players. |
004BAF12 | [General] HarvesterUnit -> one of the objects in this list is incorrect OR this list has exceeded 127 characters. Commonly triggered when adding new MCV and harvester object codes here when expanding the playable faction list in the TSC 6.00+ builds. |
004C445E | A unit's Secondary weapon doesn't exist. Check the spelling and cases. |
004C6428 | AI does not have any buildings available for it to build. Check BuildConst=, BuildPower= etc. |
004D2451 | An infantry was about to take damage from a source with no valid Warhead= set. |
004D8BF3 | Infantry with missing image in rules.ini (same as missing sequence in art.ini). |
004F8EDD | The number of VehicleTypes in the BaseUnit section is incomplete. |
005A4814 | Railgun with wrong particle keys. |
005A59B4 | [GasCloudSys] with a limited Lifetime. This system has hardcoded properties and must exist throughout the game, ergo you must set Lifetime=-1 or leave it undefined (it defaults to -1). |
005A5EB6 | ParticleCap=1 on a BehavesLike=Spark particle system. |
005A640F | NextParticle defined on a particle spawned by a BehavesLike=Smoke particle system. |
0062E6F6 | It was attempted to use a normal colored house on a multiplayer map. |
00649563 | A trigger failed to spring. Look for a trigger with invalid parameters, for example a misspelled or undefined house. |
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, although HyperPatch has been confirmed to fix it at least on some systems. Another fix is disabling DirectDraw hardware acceleration via either dxdiag or a custom ddraw.dll, although the fix doesn't work on Windows OS's newer than XP. |
0067159B | WaveClass Sonic exception. Not sure if this is code related, could be end user. |
006717CB | WaveClass laser exception. This can be fixed by setting DetailLevel= to 1 or 0 in SUN.ini. In addition, disabling DirectDraw hardware acceleration via either dxdiag or a custom ddraw.dll fixes it, but this fix only works on Windows operating systems older than Vista. |
0067159B | You have set [AudioVisual]→ShakeScreen= to zero. |
00681363 | Missing weedguy hack. (second stage Cluster weapons need to be assigned to a unit, to work) |
006A877A | LightSize>94 was set on a particlesystem. |
006B6AE6 | Multiple reasons, depending on the stack dump in the except: |
006BB69C | conyard construction as building was canceled in the sidebar. |
90900004 | Generic exception. |
Unverified / lacking information
EIP | Cause |
---|---|
00494BCD | (Ares 3.0) A corrupted SHP image was drawn. Check mix files for any .shp files marked by XCC Mixer as 'unknown' under "type". |
1118A7A5 | Probably caused by trying to destroy a tag, but supplying the tag and not a trigger (FA2 offers Triggers, but I hand-typed a tag (among other things). Occams razor suggests this is the culprit. |
655B4A9C | (Ares 0.E) Setting a [ParticlePart] with 2 BehavesLike= simutaneously (for example , 'both Like=railgun' and 'Like=smoke' exist) may cause an EIP as above . Remove BehavesLike=railgun , and keep Like=smoke here in a [RailgunPart] to avoid this EIP and still gets a railgun with specific SHP-animation rail.
|
? | 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=.
|
? | 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.
|
006F3481 | The (elite) secondary weapon (or its warhead) of the object you just selected could not be found (see broken-reference causes, below).
(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 CarryOverCap=0. Default value is -1, positive values do not cause an IE.
|
? | 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. Validity questionable - if someone can replicate this then please provide an except.txt.
Simply thinking about this, putting warheads on the list should guarantee their position in the internal array, so if there is anywhere that references warheads by internal array position then this is important. However, even if you change an existing weapon's warhead to a non-parsed one in a game mode file, you still won't get an IE because default warhead values will be used. Because of this, I'm starting to wonder if the reports of un-listed warheads causing an IE are erroneous. If someone can replicate this then please provide an except.txt //Marshall
|
? | 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). |
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 Options → Show 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.
|
004A2684 | Starting a game on any map concludes in a "unable to read scenario" error while loading. The cause of this is an empty uimd.ini file or possibly another empty ini file without any content.
//RaVaGe |
007564BD | Internal error when starting a game, possibly caused by attempting to load graphics from a corrupt mix file.
//RaVaGe |
404E0000 | Selectable=no on spawned AircraftTypes.
// Bbglas007 This error also occurs if there are overlapping structures and/or overlapping rubble on the map and units try to pathfind over them or one of the buildings is destroyed. Keep in mind that an existing building with Image=none (like for example a nuclear silo) still remains its Bib as it is read from art.ini. So if you give a [NUKE] Image=none it still remains its 3x3 Bib, which counts as an overlapping building. In general don't have overlapping buildings on your map. // DoctorEvil and ~ RAZER |
006E2449 | This error occurs when you fire a trigger action 42 (Do explosion at...) at an undefined waypoint.
// DoctorEvil |
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 Warhead tag and the tag must not be blank otherwise an IE will occur. However if the specified Warhead 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 as must the Tank Bunker. Further more, 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)