Author here: I should clarify the satellite is not running Windows. Instead, it’s running its own custom OS written in C called Flight Software (FSW) specifically designed for the satellite onboard computer.<p>Re-reading the post, I see how the title, my analogies, and poor attempts at humor would give the incorrect description of what’s happening with the satellite when it enters safemode. I’ll amend the post soon.<p>Thanks for the feedback, I’ll be better next time.
Thee are a bunch of comments here asking why one would run Windows on a spacecraft.<p>I am a spacecraft engineer. I don’t see anything in the linked article indicating that they are actually running Windows - the BSOD claim is tongue-in-cheek, or at least that’s how I read it. I also don’t know of anyone anywhere that runs Windows on a spacecraft, with the exception of laptops used by astronauts. Typically one runs vxWorks, or maybe QNX. Some experimental (high risk, low cost) systems run Linux. Older spacecraft don't run any OS at all, everything is running on bare metal, and that may be true for a handful of current spacecraft as well.<p>Windows is used in some places by ground controllers, but these days they tend to be running Linux a lot more often.
Very simple: just <i>Write the Right Stuff</i>!<p><a href="https://www.eng.auburn.edu/~kchang/comp6710/readings/They%20Write%20the%20Right%20Stuff.pdf" rel="nofollow">https://www.eng.auburn.edu/~kchang/comp6710/readings/They%20...</a>
> <i>I think what surprised me the most was how nonchalant the response was. We had documented all of our actions, so other people had read what happened and knew something had gone on. I wasn’t expecting any fanfare but we weren’t even debriefed on what happened.</i><p>That's... Concerning. No root cause analysis? Not even an internal one?
I would bet the schedule didn't allow much time to doing subsystem level test with on-board computer, so everyone went to the big test praying for the best.<p>That or inexperienced programmers were involved, assuming they were not scared of modifying memory addresses directly.<p>As for the safe-mode, if it happened maybe you could say you were randomly injecting errors in the memory during runtime and spacecraft entered safe mode as expected, would not be far off from the truth, just do not mention it was unintended :)
As much as I hate writing "getter" functions for referencing global variables, I would when I knew I didn't have the right address yet. Write them first to error out loudly, then when you have the actual addresses replace the error out code.