Korvar
Posts: 813
Joined: 9/3/2014 Status: offline
|
We're making progress. I'll refer to Evander in the 3rd person for the benefit of anyone else following along... Evander was kind enough to share a process dump, and I have identified the point at which the crash is occurring. The Windows Media Playback module (wmvcore.dll) attempts to read the DirectShow ASF Support module (qasf.dll) in order to call a function, but the qasf.dll module has already been unloaded from memory - causing a read error that results in an unhandled exception (crashing WitPAE). That covers the WHAT of the problem, but as to the WHY...? When I looked at the process behavior of my own copy of WitPAE, it appears to me that qasf.dll completely precedes wmvcore.dll and if the qasf module ever unloads, wmvcore isn't calling on it. The general behavior of WitPAE appears to be that all critical assets are loaded into memory upon starting the program, and they more or less sit in memory to be used as needed. Beyond the initial loading of the applicable modules, I didn't see a lot of activity back and forth between the qasf and wmvcore modules. This mirrors the behavior of the game's graphics system, for instance. If you make a change to an art asset - whether it is part of the map, plane art, ship art, part of the interface, whatever - the change won't be reflected until you completely exit the game and restart it. It's not enough to go back to the main menu and reload a saved game; as I said, the assets are loaded once when the game first starts. At this point I do not know 100% why the qasf module is being unloaded. I built a virtual Windows 7 machine in order to have a basis of comparison to Evander's files. The qasf.dll modules are an exact match - but Evander's wmvcore.dll example posted earlier is from the System32 folder, so I'm not sure that they are an exact match. Here is my copy for comparison: So, I have attached my source wmvcore.dll and qasf.dll files. Copying these into the SysWOW64 folder will take care of the off chance that one of Evander's copies has become corrupted somehow. The issue could also be caused by not having all or the newest C++ Runtime Libraries installed. These help determine how the various modules interact with one another and are typically obtained via Windows Update; however, I have another method to 'double check' the libraries currently installed on Evander's install of Windows 7. First, download WSUS Offline Update. Extract it and run the 'UpdateGenerator.exe' file. It will look like this - check the options as shown below and click the 'Start' button. That will start a script where it will build a local repository of Windows Updates from the Microsoft servers. Once it finishes, go into the wsusoffline folder, open the 'client' folder, and start 'UpdateInstaller'. You'll want to check the following boxes (if they are available): 1) Update C++ Runtime Libraries *the most important 2) Install .NET Framework (whichever ones are offered) 3) Verify installation packages 4) Automatic reboot and recall Then click 'Start'. Note that it will proceed to scan your copy of Windows and update as necessary. It will automatically restart your computer when needed to continue the updates - so don't be typing an important document, for instance, while it updates. Just let it do its thing and be aware that it may require several restarts, and even restarting the UpdateInstaller executable, before it gets to a point where it says you have everything. Evander, I'd recommend to take the slow & methodical approach here - we'll try the file replacement first and proceed from there (since you mentioned in PM that you hadn't actually copied over the files before). In the .zip attachment there will be the two modules: wmvcore.dll and qasf.dll. Make backup copies of the copies currently in the C:\Windows\SysWOW64\ folder, and then extract the attached files into SysWOW64. It will prompt you for permission to do so. Grant it, and give WitPAE a go. If it crashes like usual, follow the WSUS Offline update procedure - when it's finally done updating, try WitPAE again. Beyond that I have some registry entries to check, but I'll wait on the results before writing more procedures. ***** EDIT: Forgot two steps ***** Add these steps to the copying of the files for the SysWOW64 folder: Once you download the .zip file containing the wmvcore.dll and qasf.dll files, make sure you 'unblock' the .zip file in its 'Properties' page (right-click the .zip file), as shown here: Once the files have been copied over, make sure to register the qasf.dll file to make sure Windows knows how to locate it. You can do it for wmvcore.dll as well.
Attachment (1)
< Message edited by Korvar -- 9/10/2016 9:25:51 PM >
|