Jump to content

Windows 95 challenge : first start hangs during vmm32.vxd load


Recommended Posts


My issue is in the title. First time I did a Win95 installation on a old hardware which is a 386SX 25 MHz with the upgrade Cyrix 386 to 486 50 MHz, 16 MB RAM (this config accepts fine Windows NT4 so hardware seems to be healthy). After a fresh install of win95 (tried A, B, C versions), the first start led to a freezing. No error message was displayed; never.

This is the Bootlog.txt produced by the win95 first start process:

[000D024E] Loading Device = C:\WINDOWS\COMMAND\DISPLAY.SYS
[000D024F] LoadSuccess    = C:\WINDOWS\COMMAND\DISPLAY.SYS
[000D0250] Loading Device = C:\WINDOWS\HIMEM.SYS
[000D0252] LoadSuccess    = C:\WINDOWS\HIMEM.SYS
[000D0252] Loading Device = C:\WINDOWS\IFSHLP.SYS
[000D0252] LoadSuccess    = C:\WINDOWS\IFSHLP.SYS
[000D0253] Loading Device = C:\WINDOWS\SETVER.EXE
[000D0253] LoadSuccess    = C:\WINDOWS\SETVER.EXE
[000D0296] C:\WINDOWS\COMMAND\MODE.COM(Logo disabled)
[000D0296]  starting
[000D029A] C:\WINDOWS\COMMAND\MODE.COM[000D029A]  starting
[000D02DC] Loading Vxd = VMM
[000D02EB] LoadSuccess = VMM
[000D02EB] Loading Vxd = C:\WINDOWS\SMARTDRV.EXE
[000D02EC] LoadSuccess = C:\WINDOWS\SMARTDRV.EXE
[000D02ED] Loading Vxd = nwlink.vxd
[000D02EF] LoadSuccess = nwlink.vxd
[000D02F0] Loading Vxd = vnetsup.vxd
[000D02F1] LoadSuccess = vnetsup.vxd
[000D02F3] Loading Vxd = JAVASUP.VXD
[000D02F3] LoadSuccess = JAVASUP.VXD
[000D02F4] Loading Vxd = CONFIGMG
[000D02FA] LoadSuccess = CONFIGMG
[000D02FA] Loading Vxd = VSHARE
[000D02FC] LoadSuccess = VSHARE
[000D02FC] Loading Vxd = VWIN32
[000D02FE] LoadSuccess = VWIN32
[000D02FE] Loading Vxd = VFBACKUP
[000D02FF] LoadSuccess = VFBACKUP
[000D0300] Loading Vxd = VCOMM
[000D0301] LoadSuccess = VCOMM
[000D0301] Loading Vxd = COMBUFF
[000D0302] LoadSuccess = COMBUFF
[000D0302] Loading Vxd = C:\WINDOWS\system\VMM32\IFSMGR.VXD
[000D0308] LoadSuccess = C:\WINDOWS\system\VMM32\IFSMGR.VXD
[000D0309] Loading Vxd = C:\WINDOWS\system\VMM32\IOS.VXD
[000D030C] LoadSuccess = C:\WINDOWS\system\VMM32\IOS.VXD
[000D030C] Loading Vxd = SPOOLER
[000D030E] LoadSuccess = SPOOLER
[000D030E] Loading Vxd = VFAT
[000D0313] LoadSuccess = VFAT
[000D0313] Loading Vxd = VCACHE
[000D0315] LoadSuccess = VCACHE
[000D0315] Loading Vxd = VCOND
[000D0317] LoadSuccess = VCOND
[000D0317] Loading Vxd = VCDFSD
[000D0318] LoadSuccess = VCDFSD
[000D0318] Loading Vxd = VXDLDR
[000D031A] LoadSuccess = VXDLDR
[000D031A] Loading Vxd = VDEF
[000D031B] LoadSuccess = VDEF
[000D031B] Loading Vxd = VPICD
[000D0325] LoadSuccess = VPICD
[000D0326] Loading Vxd = VTD
[000D0327] LoadSuccess = VTD
[000D0327] Loading Vxd = REBOOT
[000D0328] LoadSuccess = REBOOT
[000D0328] Loading Vxd = VDMAD
[000D0329] LoadSuccess = VDMAD
[000D032A] Loading Vxd = VSD
[000D032A] LoadSuccess = VSD
[000D032A] Loading Vxd = V86MMGR
[000D032E] LoadSuccess = V86MMGR
[000D032E] Loading Vxd = PAGESWAP
[000D032F] LoadSuccess = PAGESWAP
[000D032F] Loading Vxd = DOSMGR
[000D0333] LoadSuccess = DOSMGR
[000D0333] Loading Vxd = VMPOLL
[000D0334] LoadSuccess = VMPOLL
[000D0334] Loading Vxd = SHELL
[000D0337] LoadSuccess = SHELL
[000D0337] Loading Vxd = PARITY
[000D0337] LoadSuccess = PARITY
[000D0338] Loading Vxd = BIOSXLAT
[000D0338] LoadSuccess = BIOSXLAT
[000D0338] Loading Vxd = VMCPD
[000D0339] LoadSuccess = VMCPD
[000D033A] Loading Vxd = VTDAPI
[000D033A] LoadSuccess = VTDAPI
[000D033A] Loading Vxd = PERF
[000D033C] LoadSuccess = PERF
[000D033E] Loading Vxd = vserver.vxd
[000D033F] LoadFailed  = vserver.vxd
[000D0340] Loading Vxd = vredir.vxd
[000D0345] LoadSuccess = vredir.vxd
[000D0346] Loading Vxd = ndis.vxd
[000D034D] LoadSuccess = ndis.vxd
[000D034E] Loading Vxd = ndis2sup.vxd
[000D034F] LoadFailed  = ndis2sup.vxd
[000D0351] Loading Vxd = vnetbios.vxd
[000D0352] LoadSuccess = vnetbios.vxd
[000D0358] Loading Vxd = DYNAPAGE
[000D0359] LoadSuccess = DYNAPAGE
[000D035A] Loading Vxd = VDD
[000D035E] LoadSuccess = VDD
[000D035E] Loading Vxd = VKD
[000D0360] LoadSuccess = VKD
[000D0360] Loading Vxd = EBIOS
[000D0360] LoadFailed  = EBIOS
[000D0361] Loading Vxd = INT13
[000D0362] LoadSuccess = INT13
[000D0362] Loading Vxd = VCD
[000D0363] LoadSuccess = VCD
[000D0363] Loading Vxd = VPD
[000D0364] LoadSuccess = VPD

Not that the last line finished with a load success. Now the vxd listed in the registry (regedit /l:c:\windows\system.dat /e lvxd.txt hkey_local_machine\system\currentcontrolset\control\vmm32files)


Only these vxd were not loaded :

vflatd.vxd, vmouse.vxd and vmd.vxd

Is windows\system\vmm32.vxd missing? NO

Is vmm32.vxd corrupted ? I checked with a 386 SX 20 5MB RAM laptop with a functional win95C. There, I read Bootlog.txt and vmm32files lists and I saw that vflatd.vxd and vmd.vxd were not loaded or even tried to load even if they are present in the vmm32files list. Now I copied the vmm32.vxd file from my 386SX25 with Cyrix 50 to my laptop replacing its original vmm32.vxd. I restarted the laptop and its Win95C loads fine !! I know vmm32.vxd file is not really exchangeable but here the computer hardware are quite older than the win95 OS and they are primitive and quite same. So, the vmm32.vxd file is not corrupted.

Now the hypothesis about the circumstances around the win95 first start hang.

Is wmm32.vxd finished to process then win95 load frost ? The next step is normally the SYS CRIT INIT process ... and I can't see its track in Bootlog.txt.

Is vmm32.vxd broke before the end ? The last Bootlog.txt line finished by a load success and at least vmouse.vxd is not loaded but no error is displayed anywhere ... what to think here ?

What else could stop the vmm32.vxd loading without warning ?

I have no solid clue to try to solve this problem. I did not find any similar problem in the web.

Any help will be greatly appreciated.

Edited by Tryphon
Typo correction
Link to comment
Share on other sites


I know how to add a vxd to vmm32.vxd but I do not know if it is possible to delete a vxd from a basic vmm32.vxd file. However, I did the following. EBIOS.vxd is a driver not required by my system and it does not block the boot process when the load fails. I extracted it from a CAB and renamed it VPD.vxd. I put it in \windows\system\vmm32 folder where the drivers are loaded with priority against the same one in the vmm32.vxd file. Hence this dummy VPD.vxd will be loaded and not the one in the vmm32.vxd file. After rebooting, the bootlog.txt file is:

[000D0362] Loading Vxd = VCD
[000D0363] LoadSuccess = VCD
[000D0363] Loading Vxd = VPD
[000D0364] LoadFailed = VPD

after this win95 froze without warning.


All drivers in the [386enh] section were commented and win95 froze at the same point (after LoadSuccess of VPD)


I do not know if vmm32.vxd did not finished to load. When something goes wrong I expect the last bootlog.txt line to be "Loading Vxd = SOMETHING", then we understand this vxd stops the start process. Win95 first start could be exactly between the vmm32.vxd end and the beginning of SYS CRITICAL INIT where I do not know what's happening. But how to check this hypothesis ?

Edited by Tryphon
Link to comment
Share on other sites

Then I did this next try.

Only these vxd were not loaded according to the vmm32files list :

vflatd.vxd, vmouse.vxd and vmd.vxd

One of them is the next Vxd. I created 3 vxd files renaming EBIOS.vxd to vflatd.vxd, vmouse.vxd and vmd.vxd. I put these dummy files in \windows\system\vmm32 (as it did for the dummy VPD.vxd I tested before). Hence Win95 boot process will ignore these vxd in vmm32.vxd and should attempt to load these ones in vmm32 folder instead. After a reboot, bootlog.txt said:

[000D0362] Loading Vxd = VCD
[000D0363] LoadSuccess = VCD
[000D0363] Loading Vxd = VPD
[000D0364] LoadSuccess = VPD

The boot process did not even try to load the dummy vflatd.vxd, vmouse.vxd or vmd.vxd files.

I checked the bootlog.txt file in my other 386SX laptop where win95 boots fine. vflatd.vxd and vmd.vxd are in the wmm32files list in the registry BUT there are not notified in the bootlog.txt file. Hence, it seems the boot process simply ignores them for a reason I do not know. Then I could conclude it is normal some vxd are ignored.

Back to my 386SX Cyrix 50, vflatd.vxd, vmouse.vxd and vmd.vxd files seems to be ignored. Perhaps vmouse.vxd (not ignored in my laptop) could be the issue ... but replacing it by a dummy vmouse.vxd file did not cure anything. The mystery remains.

Edited by Tryphon
Link to comment
Share on other sites

23 hours ago, Jody Thornton said:

Just one question:  with the external bus only being 16-bit, will a 32-bit hybrid environment run on a 386 SX CPU?

As far as I know, it is possible (my friend did it), but it requires original Windows 95 only - no OSR! However the result was very slow and unstable...

Link to comment
Share on other sites

I have Win95 4.00.1111 in both 386SX computer (useful to understand what is not functional).

This version seems to be OSR2. I never saw stability issue on my 386 SX laptop but this true, Win95 is quite slow. I can let it hours connected to my network where another computer can read/write its shared folders.

Ok, on both 386 SX I have math coprocessor.

Remember I tried floppy set of win95 (4.00.950) on my 386 SX Cyrix 50 with exactly the same freeze at the first start. I tried this a long time ago. But if required ... I can do another try.


Link to comment
Share on other sites

Wait a minute,

The LoneCrusader/rloew patch linked to by dencorso:

is intended to be run (among other options) from a bootable floppy, if getting the hard disk out of the laptop is complicated, why doing it that way? :dubbio:

It would probably be possible to run it now or - even if it doesn't work - restart the install from fresh and install the patch during this new install.:unsure:




Edited by jaclaz
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    • No registered users viewing this page.

  • Create New...