6

Unlike Windows XP, which seldom gave me a blue screen, I remember that, when I was using Windows 98, it often turned out in blue screen.

Is there something wrong with Windows 98 that makes it particularly unstable?

8

5 Answers 5

8

The main cause for a BSOD is a exception that was unhandeled in a driver that the system can not recover from. The main reason things have changed is the new driver system (WDM) is much more stable than the old system (VxD) at handling edge cases. Now you will now just get a error in the event log instead of a BSOD on a error in a driver that is not bad enough to bring down the system.

Another factor is Microsoft has put out a lot more resources for developers to use to make better code.

A third factor (that billc.cn reminded me of, and this may be more common than the driver issue) Starting with Windows XP it is much harder to access the RAM of another running program. Quite often just normal poorly written programs could just go off and overwrite whatever they wanted inside some other program's memory space, and if that other program was a key part of windows... BSOD.

Between these three things that is why BSOD's are a lot less common.

of course if you really miss BSODs set CrashOnCtrlScroll to 1, hold down the right Ctrl key and press Scroll Lock twice. (save all open programs before trying)

5
  • Sometimes it's just a particular style of reporting non-fatal errors. You can actually recover from these kind of blue screen by pressing Enter.
  • Windows 98 has no useful memory protection and access control whatsoever, so a process can easily corrupt other processes' memory. There's no easy way to recover kernel or system process corruption, so it can only show you a BSoD and reboot. Since Windows NT, strict memory protection has been implemented so it bluescreens less often (only possible due to kernel space bugs).
  • Windows kept DOS compatibility, so you can have all kinds of weird stuff like 16-bit drivers. They may have so many hacks in them that they're just BSoDs waiting to happen.
  • Windows 98 contains a lot of buggy code in general.
2
  • I wouldn't say Windows 98 contained buggy code, all code has bugs, its just that Windows 98 was created in a different age. So the bugs that would be fixed today through a patch was harder to patch with Windows 98. Did Windows 98 even have Windows Update?
    – Ramhound
    Jan 27, 2012 at 13:07
  • @Ramhound: It did, although not automatic. Feb 1, 2012 at 20:29
2

One another thing that causes BSoDs is the scheduling algorithm. If you don't know about what a scheduler is, the scheduler is the kernel piece that decides what application will be run next in a multi-tasking system. The main purpose of the scheduler is to be able to run every application those are in "process" state and prevent those processes to hold system resources forever. Every process needs system resources like memory, cpu or I/O, and they have to release those resources after using them. If a process waits for a resource which is being held by another process, that waiting process cannot continue to run and starves to that resource. Suppose we have two running processes, p1 and p2, and two system resources, r1 and r2, and p1 holds r1, p2 holds r2. If process p2 enters a waiting state for resource r1 and process p1 enters a waiting state for resource r2 then that system locks itself and those p1 and p2 processes cannot exit the waiting state and cannot continue to run. This state is named as "Deadlock". A fully deadlocked system can be recovered only by reboot.

Win98's scheduling algorithm can't avoid the deadlocks as desired. So, BSoDs are more frequent in win98 than winXP which has more advanced, more powerful scheduler and resource manager.

1
  • -1 No scheduler can prevent deadlocks, and it's only deadlocks in drivers (extremely rare) that cause a BSoD. So the only difference would be in the driver-deadlock detection between XP and 98, but I doubt they're all that different. Jan 27, 2012 at 7:47
2

Windows XP (which technically is Windows NT 5.1) is/was based on a completely different architecture compared to Windows 98 (technically Windows 4.1). I don't remember getting many BSODs at all on Windows NT 4.0 either. The NT kernel and architecture are designed and written in such ways that software errors bringing down the entire operating system (manifesting itself as a BSOD) are much more rare than in the old/"regular" Windows series. Remember that the product upgrade path went from DOS + Windows 3.11 to Windows 95 to Windows 98, or Windows NT 3.x to Windows NT 4.0 to Windows 2000 (NT 5.0) to Windows XP (NT 5.1).

I remember when I installed NT 4.0 Workstation that one thing that was specifically pointed out was that you cannot install it on top of any version of plain Windows (as opposed to Windows NT). It probably could have been made possible if Microsoft had put a lot of effort into it, but the two are so very different that (1) it would likely not really be meaningful, and (2) there would be no way to guarantee a stable result, OS- and/or application-wise. Thus, they probably choose to not even try and instead to spend that time working on other features that were more meaningful in its target market (which was completely different from the Windows 9x series). Same with Windows 2000, I believe, but since at that point I was upgrading from NT 4.0 it was a non-issue for me.

As a side note, one major change made between NT 3.51 and NT 4.0 was bringing graphics drivers into ring 0 (kernel mode) from ring 3 (user mode). This was supposedly done for performance reasons, but had a huge drawback: suddenly, a poorly written graphics driver could much more easily bring the system down with a BSOD. I think, but am not certain, that one thing they changed in Vista (NT 6.0) was putting those drivers back into ring 3 - this time for stability reasons.

2

The main points have already been mentioned: that Windows XP has a new driver subsystem, and Windows XP has much stricter memory-protection.

A third important point that hasn't been mentioned: beginning with Windows XP, Microsoft required all hardware + drivers to undergo a certain level of compatibility testing (WHQL) in order to bear a "Compatible with Windows" sticker. This enforces a certain level of quality-assurance that didn't used to exist.

Not the answer you're looking for? Browse other questions tagged .