|
Post by jkfrench on Sept 20, 2013 8:37:32 GMT -5
OS: Windows 8 Pro 64-bit RAM: 20GB Hard Drive Space Free: 729GB Video Card: NVIDIA GeForce GTX 550 Ti I've found that every once in a while FSX will give me an error like this: And if I press Yes, well, FSX just closes down. But ... I have found that if I remove a Registry entry from HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\LayersWhere (one of the entries):Name = C:\Program Files (x86)\Microsoft Games\Microsoft Flight Simulator X\fsx.exeType = REG_SZData = $ IgnoreFreeLibrary<FSCaptain.dll>Then I restart FSX ... I get the Error Message, but I can press Yes and FSX starts (and FSCaptain is working). From that point everything works fine for a couple of flights (typically no more than 2 or 3), then it happens again. Can you give me some insight as to why this is happening? Anything I can do to keep it from happening again? It seems like Windows 8 is trying to fix a compatibility issue ... I have tried running FSX in a couple different Compatibility Modes (Windows XP SP3, Vista SP2, etc) ... doesn't seem to matter ... I do also run FSX.exe as administrator (always). Thanks, Jeff
|
|
|
Post by Travis on Sept 20, 2013 16:19:34 GMT -5
This is totally odd. I could try some research, but I'm almost at a loss as to the best way to begin.
I'll keep a flag on this, but wow.
Okay, one question... does this error message appear roughly at the same point each time (that is, does it occur pre- splash screen, during scenery load, etc.?)
|
|
|
Post by jkfrench on Sept 20, 2013 17:04:38 GMT -5
To be honest I'm not exactly sure at what point it's loading ... I can see the splash screen behind the error, but it never gets to the main setup window where I can select a mission or free flight, etc (and I never get to the main setup window before it closes when the offending entry is in the registry). Don't think I mentioned this ... I am using FSX Gold with the Acceleration Pack installed ... don't know if that will help any ... but I figure the more I provide, the better the chances at resolving the problem.
|
|
|
Post by jkfrench on Sept 20, 2013 17:30:18 GMT -5
Something else of interest is that I set my Run As Administrator settings for "All Users" so the Compatibility Flags for FSX are actually setup here: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\LayersAnd look like this: Name = C:\Program Files (x86)\Microsoft Games\Microsoft Flight Simulator X\fsx.exe Type = REG_SZ Data = ~ RUNASADMIN VISTASP2
Yet the $ IgnoreFreeLibrary is in the HKEY_CURRENT_USER section.
Again ... the more you know ...
Jeff
|
|
|
Post by jkfrench on Sept 21, 2013 11:08:28 GMT -5
Ok, some additional information... last night when I shut down fsx it crashed during the shutdown phase...it's happened before...never gave it a thought...'til this morning when I started fsx and the error window popped up again...and the ignorefreelibrary registry entry was back.
Don't know if that helps...unfortunately I didn't save any crash dumps...if I can, I will next time.
On another note...I was wondering...since there are two different fscaptain.dll files...maybe fsx or windows is getting confused with the ignorefreelibrary <fscaptain.dll> ... and having different names might help?
|
|
|
Post by Dutch Owen on Sept 21, 2013 11:24:39 GMT -5
The reason for the two FSCaptain.dll files is one is for FS9 and the other for FSX. The FS9 one lives in the Modules folder because that's where FS9 loads all its internal DLLs, the other in FSCaptain\bin where FSX looks for it as directed by the dll.xml file in the FSX configuration folder. The two are internally a little bit different too to accommodate for the changes FSX made.
Under FSX you can safely delete (or rename) the one in the Modules folder as its not used in FSX. You could try that as an experiment.
Dutch
|
|
|
Post by jkfrench on Sept 21, 2013 19:28:23 GMT -5
Ok ... good to know ... deleted it ... no sense in having it around if it's not needed. We'll see how that works out (can't imagine it being a problem if it wasn't being used ... but stranger things have happened, I guess). Made sure the dll.xml file was referencing the correct FSCaptain.dll too ... from FSCaptain\bin ... it was).
If my understanding is correct, putting the IgnoreFreeLibrary App Compatibility Flag for the FSCaptain.dll basically says to ignore free() function calls (and the like) for the FSCaptain.dll ... which I can't imagine I'd ever want to happen (been a DOS/Windows C/C++ programmer for almost 30 years) and to ignore free() calls after a malloc() ... well ... just seems wrong ... unless this is something specific to .NET-based garbage collection and it's basically just saying ... ignore any forced memory de-allocations (which may eventually end up being free() calls) and let .NET garbage collection handle it. But, I can't imagine ever wanting that as an App Compatibility Flag if it's not specific to .NET Framework ... and even so, seems dangerous at best.
|
|
jkfrench (as guest)
Guest
|
Post by jkfrench (as guest) on Sept 22, 2013 2:14:49 GMT -5
Well ... I misunderstood it's not free() calls it's FreeLibrary() calls that are ignored ... which only happens when a .dll is released from memory ... the crash is caused by a library that has been released and then the application continues to try to call functions in the .dll that are no longer available ... the IgnoreFreeLibrary basically says don't release the library ... how in the world that affects startup of FSX is beyond me ... UNLESS the library is never released, still active and prevents the loading of another instance of the library ... only thing I can figure ... next time it happens, I'm going to reboot before clearing out the registry entry and try to start FSX ... just to see if it makes any difference. But I'd guess that even if it did run the first time after a reboot, it would fail on subsequent attempts because the FreeLibrary would never get called as long as that App Compatibility Flag was in the registry.
I've also read that other FSX .dlls have the same problem (i.e. FSUIPC, etc) ... this seems to be an FSX issue ... although it does seem to be a Windows 8 problem only (haven't read that it affects previous Windows versions).
So, now I do have a another question ... is there anyway that on the startup of FSCaptain.dll that if the registry entry exists that it could be removed automatically ... or would FSX get in the way and prevent that from happening when the entry is in the registry.
Heck I guess it could be a totally separate .dll in the dll.xml that get's called and removes all entries that has the IgnoreFreeLibrary flag when FSX.exe is the calling application ... but that may a little dangerous ... maybe some way to specify which .dlls to look for in the <> and only remove them (or if there are other App Compatibility flags only removing the IgnoreFreeLibrary flag from the Data Value) ... just throwing out ideas at this point ... if .dlls are loaded in order based on the the order listed in the dll.xml files ... it's seems that should be possible by making it the first .dll called when starting FSX ... then the following .dlls would load properly ... even though you may get the dialog asking if you want to continue to load them ... at least when you answer yes things would be back to normal. Anyhow, just kind of thinking of a way to fix it so I wouldn't have to manually delete entries from the registry sometimes. Of course, then there's the annoyance of if the .dll fixing the registry entries actually got the IngoreFreeLibrary flag applied ... so then, maybe it would be better if it were a stand-alone .exe and now the question would be do the entries in the exe.xml file get called before the entrees in the dll.xml ... and if so ... that might be the way to go ... hmmmm ... probably could write that myself. Anyhow ... just kind of thinking of options to resolve this (or at least make it less annoying).
|
|