Windows 95 build 224

Build 224 was the first known Beta 2 build of Windows 95 (Chicago). It can be found in both free and check/debug versions.

However, the Check/Debug version of the build is not usable and denies to boot into Windows GUI. And the reason might be figured by looking into files that comes in /SDK/DEBUG directory of the build's SDK. Yes, it's missing its USER32.DLL, which was the reason of the build being unusable and non-bootable.

Some people tried troubleshooting it, and discovered that it's doing something wrong in its memory management (VMM). But some tester has worked further with the build by kernel-debugging it for full control toward the build's behaviour, and discovered it's something to do with communication between USER32.DLL and USER.EXE, which we're going to discuss it.

What was the problem?
Before getting into the reason of the problem, let's first get some more information about both free USER.EXE and Check/Debug USER.EXE, since the Blue Screen Of Death (BSOD)'s error was occuring in USER.EXE's memory range.

It's worth saying that the debug files can operate and the system can boot without overwriting the free USER.EXE with Check/Debug one. But we're not going to get any statement mentioning that the build is (Debug), nor we'll see watermark which says "Debug Windows 4.00.224" at right-bottom side of the screen, since these strings are located in USER.EXE itself.

So, by measuring alot of activity happening in the system during booting using the checked/debug USER.EXE by attaching terminal to WDEB386, and tracing where it might be faulting in, we ended into the following code in USER32.DLL: