My main development machine is recovering. I had an exception in Winlogon which is always fatal. I had tried to fix the machine but things were not looking good until today. After many different attempts, it turned out that doing a full Windows repair was the trick to solve the trap.
I had already proven that some of the files in Windows were corrupt. Recent power outages were most likely the reason why. Many of these files are used during the logon process but I was never able to find out which file was causing the problem. Most likely it was a collection of files and I just couldn’t find all of them.
Given the nature of operating systems today, it is a surprise that it is not common practice to not only check for the existence of files but also their integrity. The concept of how to do this is fairly straight-forward and I would imagine that it has already been included in other operating systems. Maybe it is already part of Windows and you need to configure it for that. Regardless, it would make sense from both a security and stability point of view.
The reason why Winlogon traps are so nasty is that even though it is a user mode process, it is considered fatal if it dies. You can never login to do anything and the machine is stuck in this limbo state until you decide to do something drastic.
Usually people just reinstall everything from scratch. I didn’t want that and luckily I got my way.
It does seem now that space isn’t much of a concern (remember needing to use disk compression?), it would make sense to have operating systems that can heal themselves. This would be a combination of signing and version control but the idea is to have directories to the side that maintain the “perfect” state of the operating system files. These files could even be used as references. If you have more copies of the same thing, the more likely it will stay intact.
The human brain, for example, copies information to many different places with lots of duplication. Once you have the luxury of space, there is no need to be so stringent on the number of copies left around. If I heard correctly, this idea is also true in DNA. If a single part was damaged (brain or DNA), there is a good chance it would still function as a whole. I would declare this as one of the next big leaps in computer science to realize that duplication can sometimes be a good thing.
As a student at university, it became evident that efficiency was the most important. Nature doesn’t work that way (copying and more copying) and perhaps it is time for something like Windows to pick up the clue.
Amazing as it is, the Internet can be seen as a rudimentary brain. Lots of duplication and of course lots of information. It is better suited for survival because it is not incredibly efficient. The chaos of the web actually makes it more resilient to going down.
Along this line of thought, Windows could use the Internet to get trusted copies of corrupt binaries. Instead of a DLL failing to load based on corruption, Windows could be smart enough to use multiple sources to correct the error and avoid the pain and suffering of having a unworkable machine.
If any of you are aware of solutions in this space, I would love to hear about who is doing it and how it works.
This is my first official Citrix Blogger post on WordPress. Thanks for following me to this new location. Everything has gone very smoothly and I am quite happy that it is over. I had been thinking about doing this for months and when it came time to do it, there was very little pain and everything just worked.