Who wrote the text for the Ctrl+Alt+Del dialog in Windows 3.1?


One of the differences between standard-mode Windows and enhanced-mode Windows was what happened when you hit Ctrl+Alt+Del. Since 16-bit Windows applications are co-operatively multi-tasked, it is easy to determine whether the system is responding, and if not, it is also easy to identify the application which is responsible. In that case, Windows gave you options to close the non-responsive application, restart the computer, or cancel.

During this time period, Steve Ballmer was head of the Systems Division, and he paid a visit to the Windows team to see what they were up to, as is the wont of many executives.¹ When they showed him the Ctrl+Alt+Del feature, he nodded thoughtfully and added, “This is nice, but I don’t like the text of the message. It doesn’t sound right to me.”

“Okay, Steve. If you think you can do a better job, then go for it.” Unlike some other executive, Steve took up the challenge, and a few days later, he emailed what he thought the Ctrl+Alt+Del screen should say.

The text he came up with was actually quite good, and it went into the product pretty much word for word.



Contoso Deluxe Music Composer


  This Windows application has stopped responding to the system.

  *  Press ESC to cancel and return to Windows.
  *  Press ENTER to close this application that is not responding.
     You will lose any unsaved information in this application.
  *  Press CTRL+ALT+DEL again to restart your computer. You will
     lose any unsaved information in all applications.


Note to journalists: This is the Ctrl+Alt+Del dialog, not the blue screen of death. Thank you for paying attention.

¹ It occurred to me only as I wrote up this entry that people took the phrase Right on top of my notepad from the earlier story literally: There was a chair, the chair had a notepad on its seat, Bill sat in the chair (on top of the notepad). That interpretation never occurred to me. From the description in the previous paragraph, it was apparent to me that the notepad was on a desk, and Bill’s choice of seat blocked access to the notepad. (I.e., the manager would have to reach around Bill to get the notepad.) The person telling the story is not a native English speaker, so there may have been a preposition translation issue.

Comments (42)
  1. JAHA says:

    Of course, having the original text for comparison would make this more interesting.

  2. Boris says:

    Isn't ENTER too easy to choose by accident, especially since any unsaved information would be lost? I would've expected a more specialized combination.

    [This message is coming from kernel mode, below the level of the keyboard layout. It's hard to find keys that are layout-independent. This is an attempt to shoehorn the message into a dialog function which supports OK (Enter) and Cancel (ESC). -Raymond]
  3. Henke37 says:

    Nah, enter is fine, since reaching this screen in the first place requires very obvious intent. People who press it know what they are doing.

  4. Raphael says:

    Well, that's rather subdued for an original Ballmer.

    [Stories of Steve Ballmer acting subdued don't get as much coverage as those of him acting crazy. Go figure. -Raymond]
  5. Boris says:

    Isn't reboot a kind of global solution to the local problem here, unless the user is reasonably sure that the unstable application has already caused system-wide instability? I'd expect the option to be offered if ENTER is unable to solve the problem, but not immediately.

  6. Tim says:

    >I'd expect the option to be offered if ENTER is unable to solve the problem, but not immediately.

    Crash handling is probably the last place you want a lot of detailed logic. Bugs are more likely the more complicated you get.

  7. SimonRev says:

    If you used Windows 3.1 you would know what once a program went unstable odds were pretty good the entire system was going to go down or stop working reliably.  The fact that all processes shared the same memory space meant that one rogue process could corrupt everything in the system.

  8. Karellen says:

    > Steve Ballmer was head of the Systems Division, and he paid a visit to the Windows team to see what they were up to

    Clearly, the Windows team failed to ensure a sufficiency of decoy ducks[0] in the system for drawing the fire of roving executives in just such a case.

    [0] blog.codinghorror.com/new-programming-jargon (search for "a duck")

  9. Klimax says:

    Re Note 1: Third option for reading: "On top of my notepad" as in "on desk and thus on notepad".

  10. Antonio 'Grijan' says:

    Yes, as SimonRev says, when an application hanged in Windows 3.x, it was a matter of luck. If it hanged because an error of logic (an infinite loop or something like that), most times you could terminate it and continue with your session. But if it crashed because of memory corruption, many times you would close it only to find that the next application was also hung. It happened a lot, specially if you used badly written applications or utilities.

    Windows 95's space address isolation helped a lot. But AFAIK, for compatibility and performance reasons it had to maintain the first 64 KB of memory shared, with the master interruption vector table in it. Because of that sometimes badly-behaving applications bought down the entire system, too. Those were the days of the "Save early, save often" motto! I can't say I miss them.

    [It wasn't compatibility or performance. It was to work around a CPU bug. -Raymond]
  11. Azarien says:

    The main problem was that "it is also easy to identify the application which is responsible" is a lie. It often occured that Windows decided that there wasn't any unresponding application, and there were't anywhere a list of applications so you could choose one and kill it.

    "Press CTRL+ALT+DEL again" was the only viable option.

    [An app which pumps messages and willfully ignores them counts as responsive from the OS perspective, though it is clearly unresponsive from a UI perspective. -Raymond]
  12. yuhong2 says:

    @Antonio 'Grijan': The address space range between 2GB and 3GB was shared in Win9x too.

  13. xpclient says:

    Oh so he took actual interest in the product back then before signing it off? Not like the later years where I read he met the Windows development team just once or twice (for Windows 8).

    [Perhaps you didn't pick up on it, but Steve Ballmer had a different job in 2012 compared to 1992. -Raymond]
  14. xpclient says:

    Ah found where I had read it: http://www.fastcodesign.com/…/microsoft-new-design-strategy "According to insiders, Ballmer offered no direction to the Windows 8 team on the features of the new user interface. Windows president Steven Sinofsky kept him abreast of the team’s progress, but Ballmer met with Larson-Green only twice during the development process, and he never got together with the team to green-light the design."

  15. J. Peterson says:

    I guess this is sort of an anti-endorsement for "Contoso Deluxe Music Composer"

  16. Antonio 'Grijan' says:

    @Raymond: thanks for clarifying that! I remember reading about it in an article from PC World that analyzed Windows 3.11, Windows 95, Windows NT and OS/2, explained their architectural differences and compared their performance, stability and security. If I remember correctly, it claimed that the 64 KB window was there because many Windows 3.x tools directly patched the interrupt table, and simulating the patches in software would have slowed the whole system. But your explanation makes a lot more sense for a design decision.

    @Yuhong Bao: Yes, that's right. But the base 64 KB hole is very dangerous: write to an object's property through a NULL pointer and bang! You overwrote the RTC interruption vector and took down the scheduler, freezing the entire system. On the other hand, the 2-3GB area was a lot more difficult to be hit by a bug. It contained the 16-bit tasks, so most of the memory corruption in that area would be cause from segment overruns in 16-bit Windows applications, and you could basically ignore it if you only ran 32-bit software.

    [16-bit and 32-bit Windows applications would take an access violation if they tried to deference a NULL pointer. In order to whack the interrupt table, they would have to do something like allocate a selector and set its base to zero. Not something you can do by accident. -Raymond]
  17. Evan says:

    @J. Peterson: "I guess this is sort of an anti-endorsement for "Contoso Deluxe Music Composer""

    I've been reading this blog for quite some time now, and I feel I can say for certainty that you should probably avoid Contoso's entire (and remarkably diverse!) catalogue of software. ;-)

  18. Staatsgeheim says:

    If I remember correctly Windows 3.1 source was released over a year ago, since most Microsoft source code is very well documented chances are the text's author is somewhere in the commentary

  19. slipstream says:

    About Windows 3.1, did it have a codename? According to wikipedia and other places, it was "Janus", but this may have been a combined DOS5 and Windows 3.1 installer.

  20. Joshua says:

    I managed it by accident. (NULL)->4096 = value overwrote something important. Yes that was a big struct.

    [Was this real-mode Windows or protected-mode (standard/enhanced) Windows? Real mode had no memory manager, but none of the other operating systems ran in real mode, so that would have been an unfair comparison. -Raymond]
  21. yuhong2 says:

    [Was this real-mode Windows or protected-mode (standard/enhanced) Windows? Real mode had no memory manager, but none of the other operating systems ran in real mode, so that would have been an unfair comparison. -Raymond]

    I think OP was talking about Win9x where the first page was unmapped but everything else until 0x400000 was shared.

    [Not sure what you mean by "the first page was unmapped" – as noted, the first page must be mapped phys=lin due to a CPU erratum. But memory below 0x400000 was inaccessible to Win32 applications. The question is whether the program was a 16-bit protected-mode application, a 16-bit real-mode application, or a 32-bit application. -Raymond]
  22. Joshua says:

    Too long ago to be sure but probably 16 bit in Win95 protected mode as it was started from GUI and the struct size limit was 64k.

  23. yuhong2 says:

    @Joshua: Under x86 the null selector is always invalid regardless of offset.

  24. Joshua says:

    To suppress another question, most of my 16 bits were complied with LARGE memory model, so pointers really were 32 bits long even in 16 bit mode. malloc() could allocate more than 64k RAM (not all at once obviously).

  25. xpclient says:

    [Perhaps you didn't pick up on it, but Steve Ballmer had a different job in 2012 compared to 1992. -Raymond]

    Yes I read that but the CEO's responsibility does include being a visionary leader and guide the various product teams so they don't screw up.

  26. Gordy says:

    [Press ENTER to close this application that is not responding.]

    This should've been "the application that is not responding" or "this application, which is not responding". It always irks me when people screw up that vs. which

  27. Boris says:

    @Gordy: see here on the subject of "which-hunting":

    chronicle.com/…/a-rule-which-will-live-in-infamy

  28. On and off says:

    This article left me with saying: so what?

  29. Engywuck says:

    @On and off: your comment left me saying: if you don't care don't write comments.

    I really like the "history" posts. This one adds the bonus to show that "big bosses" occasionally do hands-on work which is visible not only in the general sense but even (nearly) word-for-word, and that in a part of the OS that's not the polished front door.

  30. JJJ says:

    This story reminds me of a valuable lesson I learned as a fresh graduate.  I had received an awfully written block of text from my manager who needed me to put it into the product.  He must have gotten the text from marketing, apparently from someone barely literate, so I was like, "Ugh no I have never read anything more poorly written and I'd be embarrassed to put this in.  This makes no sense and I can't believe we were actually given this text in a serious professional environment."  My manager was a totally cool guy and said, "OK, fix it up and send it to me for approval and we'll use your text."

    I did so, and the text in the product ended up being quite good if I do say so myself.  Clear, concise, and easy on the eyes.

    It was years later that it hit me, though.  He didn't get the text from marketing.  He almost certainly wrote it himself when told to do so by some higher up.  I still feel bad about how nasty I was about it.

    Now the only time I bash someone's work is when I'm looking at some code that I know for sure it was me who wrote it.  Or if it was written by the guy who was fired.  Because you know, everything is the fault of the guy who was fired.

    [If I still gave out stars, I'd give this one a star. -Raymond]
  31. Marc K says:

    @Yuhong Bao, @Antonio 'Grijan': And to get Windows 95 running in 4 MB of RAM, the system DLLs, like USER32.DLL and KERNEL32.DLL, were loaded above 2GB.  This made it really easy for an application to take down the entire system by overwriting a critical system DLL.  I can't imagine how many system crashes could have been avoided if this decision had went the other way.

    [As you noted, this was a compromise in order to fit into 4MB of RAM. But you don't have to guess how things would have been had the decision been made to raise the minimum memory requirement in exchange for greater robustness. There was a product that made that decision. It was called Windows NT. -Raymond]
  32. Not the same Steve says:

    Ah xpclient, I see you're loyal as ever to the same old broken record. Didn't I read some big proclamation from you about ditching the disaster called Windows for Macs?

    Seriously Ray, why do you waste your time and bother replying to him of all people?

  33. JT says:

    > Steve took up the challenge, and a few days later, he emailed what he thought the Ctrl+Alt+Del screen should say.

    He *emailed* that?

    [This is a story, not a court transcript. But I strongly suspect he really did email it. We use email a lot at Microsoft. -Raymond]
  34. Boris says:

    I believe JT is amazed that a Microsoft executive would send an email in 1992, though in theory, why not? It has existed much longer than the World Wide Web.

    [You kids are so cute, thinking you invented email. -Raymond]
  35. Brian_EE says:

    Raymond, This blog entry got you /.'ed and Gizmodo'ed

    [And so far, pretty much everybody (except HN) changed the facts. The dialog in question is the Ctrl+Alt+Del dialog, not the blue screen of death. -Raymond]
  36. mk says:

    "I believe JT is amazed that a Microsoft executive would send an email in 1992, though in theory, why not?"

    "in theory"? I sent my first email through the ARPANET (I worked on the UCLA node) before Tomlinson had even invented '@'.

  37. mk says:

    "This article left me with saying: so what?"

    So what?

  38. mk says:

    "Press ESC to cancel and return to Windows"

    To cancel *what*? It should say

     Press ESC to just return to Windows and continue.

  39. Boris says:

    @mk: I didn't say that email could've existed by then in theory, but rather that Microsoft, being a major software development company, could've used it internally by 1992, although it certainly wasn't widespread. I do use Wikipedia.

  40. Moritz Beutel says:

    You made it into a German newspaper:

    http://www.sueddeutsche.de/…/1.2117304

    Of course they also confuse the screen with a BSoD. And of course they can't do without recounting the COMDEX bluescreen story and reiterating some well-known stereotypes.

  41. Edward Hall says:

    This is my attempt to clarify the story about Bill Gates and the notepad.

    Before Bill came, I spent some time figuring out the agenda and wrote a list of bullet points on a notepad. I "cleaned" my desk, and placed the notepad in the chair to my right so that I could easily take a quick peek if necessary. I ran the demos a couple of times to make sure they were still working. Everything was ready.

    A few hours later, it was demo time. Bill came into my office, and after some introductions he decided to sit down.

    On my side of the desk.

    To my right.

    Right on top of my notepad.

    I screamed inside my head. This is the sort of thing that only happens in the movies.

  42. Tim says:

    "being a major software development company, could've used it internally by 1992, although it certainly wasn't widespread"

    cc:Mail was around since the mid 80s (later bought by Lotus).  IBM PROFS (now OfficeVision) since the early 80s.  Lotus Notes in 1989.  Microsofts first Mail product (originally called Microsoft Mail) was introduced in 1991 (Exchange a couple of years later).  From a corporate point of view – e-mail WAS definitely widespread by 1992.  The only people I can recall who didn't use e-mail at this time were executives of non-technology companies who relied on their secretaries to print their e-mail (which was true in the company I was working for at the time).

Comments are closed.