Friday, August 08, 2008

Was this for our own good? (Part DEUX)

- Well Manuel, it seems like Deja Vu all over again!
- Que?

Excuse the attempt at some dry humor, but having spent two straight days investigating a weird Flight Simulator X crash to desktop, that was apparently completely unrelated to anything remotely related to FS, I have to find some avenue of escape for the unrealized amount of frustration. Thankfully, the solution itself, while not apparent to the untrained eye, provides some level of fulfillment to those who keep blaming the %^%%#@ operating system for everything that goes wrong with their simulator. And guess what: This time, they're right.

To explain:

At the labs (yes, that is the new affectionate term for our new company, Flight Sim Labs), we've been getting some customer support emails from friends who've tried repeatedly to purchase our hardware interface products that have been released as Try-Before-You-Buy, only to hit a hard Crash-To-Desktop (CTD) as soon as they click on the "Purchase" button on their driver dialog window.

Long story short, Yada Yada Yada, some days later, (insert your favorite bit here), and with the very appreciated help of our web sales vendor, eSellerate.net, it became apparent that the common element (if you can call it common) in the CTD has been that the operating system was NOT Windows XP. We were able to reproduce it on machines running Windows Server 2008 (my machine here - experiences with which I'll blog about at some point soon) and/or Vista (regardless of flavor - 32bit and 64bit, Home, Premium, Business, Ultimate - it happened sporadically to those).

It turns out that the common denominator in those systems was the security facility called "Data Execution Prevention" (DEP for short), which does not play nice with Flight Simulator X. While goog- I mean searching through the net for a solution, I found several posts that described weird FSX crashes that seemingly had nothing to do with what the user was doing at the time. In our case, something in the concurrent threads that the eSellerate webClient DLL uses to run online comms with the credit card verification scheme is considered to be "bad bad bad" with FSX, even though we were assured that there's absolutely no attempt at wrong doing by our very respected vendor.

Solution? Simple. If you are running Vista and you haven't done so already, disable DEP if you want your sanity maintained with Flight Simulator X. It won't hurt you either, as I am sure you already have a good firewall and antivirus system going, and you're not relying on DEP to protect you anyway. - And no, it won't be enough to "OptOut" - you'll need to set it off permanently on the PC, or else you'll think you've done it but FSX will still complain and crash. The way is simple:

Run a command prompt (DOS) with elevated permissions ("Run As Administrator") and issue the following command:

bcdedit.exe /set {current} nx AlwaysOff

Then reboot your machine and you're good to go. Simple, eh? For more information and a detailed explanation on what DEP does, how to turn it on and off etc, visit this link.

I cannot profess to know exactly why FSX crashes with DEP turned on, I will leave that to Phil and our good friends at ACES - perhaps it's something we're doing wrong, but if so, I'd definitely welcome a technical explanation and a hint or two on how to fix it, if possible ;-).

No comments: