Back in the day, I had a Windows 98 machine (don't recall the hardware right now) and sometimes it would crash with the "Windows protection error. You need to restart your computer" error.

So, what actually did this error message mean? What "protection" was being violated? As I understand it, it would be triggered it an error (e.g. a divide-by-zero) happened within a device driver.

I installed an old version of MSDN (October '99) and searched it, but it only returns KB articles ("Windows protection error" after doing something) without much technical explanation.


"Protection error" is primarily a memory management violation. A process executes with its own address space. Particular pages (range of virtual addresses) may or may not be assigned to the address space. The hardware triggers a fault on an attempt to reference an address not assigned to the address space. The OS then aborts the process, if this was a user-mode fault. If the bad access was in kernel mode code, then typically that is "not supposed to happen", and the only thing that can be aborted is the kernel -- i.e., the system crashes.

Simplistic example: if your process has a virtual address range of 0 to 1000000, and it tries to read address 1005000, then that will result in an exception, and the OS will kill the process.

(This is overly simplified, since it ignores the mechanics of paged virtual memory, and how in some cases invalid addresses can be supplied, for example stack expansion).

There are other exceptions, such as the divide-by-zero case, that are also detected in hardware. Similarly, they might cause process termination or kernel crash, depending on where they happen.

Windows 9x, by virtue of its DOS-based heritage, did not have total separation between user and kernel, and it's possible that some user-mode errors could render the system unstable enough to warrant a reboot.

Having said that, this is not exactly retro material: it's how processor memory management still works. The OS sets up descriptions of the virtual address space for a process; the hardware detects accesses outside that assigned space; and the OS then responds to detected violations.

| improve this answer | |

The message "Windows protection error. You need to restart your computer." is the default message Windows 9x/ME displays when a fatal error occurs. As such it can be result of a lot of different errors Windows might encounter, even ones not involving any sort hardware protection being violated. It can happen, for example, when Windows can't allocate a critical data structure. It's not usually displayed when a program tries to access memory it shouldn't, as this normally isn't a fatal error and only results in the process being killed.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.