This fix is currently solving the issue for me, which I hadn't started experiencing until after the latest rebuild of my gaming machine. Based on the root cause of the crash that was identified, I expect other players can be randomly having the same issue.
INSTALLATION:
To install, download the attached .ZIP file and extract the contained "Battlefield 1942 FaultTolerantHeap shim.sdb" file to a temporary directory, such as on your Windows desktop.
Next, start a Command Prompt using "Run as Administrator", and then run the following command line, adding the full path to where the .SDB file was extracted, if necessary:
Code: Select all
sdbinst.exe "Battlefield 1942 FaultTolerantHeap shim.sdb"
Note: The sdbinst.exe program is a standard tool already included with Windows, and Is not something delivered with this package.
If successful, you will see a confirmation message of "Installation of Battlefield 1942 FaultTolerantHeap shim complete." If you forgot to use "Run as Administrator", you will not see this confirmation.
The settings usually come into effect immediately, but if there is any question of whether they are in effect, you can restart Windows before launching BF1942.EXE again to ensure the new settings will be used.
USAGE:
Simply start and play Battlefield 1942 normally. With the "Battlefield 1942 FaultTolerantHeap shim" installed, Windows is watching for any time you run BF1942.EXE and will automatically apply the fix settings when executing that program.
REMOVAL:
You can remove this fix at any time by going to the Add/Remove Programs control panel application, select the entry you now see in there for "Battlefield 1942 FaultTolerantHeap shim", and select "Change/Uninstall" to initiate removal.
BORING BACKGROUND STUFF:
This Microsoft Windows Application Compatibility Toolkit (ACT) shim intends to mitigate issues which have been observed in both the Origin-delivered BF1942.EXE program for Battlefield 1942, and also in the original CD-based BF1942.EXE for Battlefield 1942, as well as in the third-party modified BF1942.EXE files which have been created for both of these Battlefield 1942 releases.
An application compatibility shim database (.SDB) is a feature of Microsoft Windows for creating fixed behaviors for an application, in cases where the application is no longer compatible with current versions of Windows and cannot be fixed or supported by the application's original publisher.
The BF1942.EXE application has been observed to continue referencing memory which the application had already explicitly freed. To mitigate this issue, the application compatibility shim provided here will cause Windows' internal "Fault Tolerant Heap" facility to be used, which will help mitigate many if not all of the random crashes which can occur due to the faulty BF1942.EXE application behavior.
Note this shim also forces the "Run with compatibility for: Windows XP (Service Pack 3)" and also "Run as Administrator" behavior, if you had not already enabled those compatibility tab options in your Battlefield 1942 shortcut.
-Trench