I do a lot of virtual machines Save, and hardly reboot my VMs. So for the past weeks, my Windows 8.1 host did a lot of Windows Updates. Then yesterday I had to reboot one of my VMs named SP1 and I got Blue Screen of Death at the boot screen. I became curious and restarted SQL1, DC1, then ROUTER1. They all had the same Blue Screen of Death: SYSTEM_THREAD_EXCEPTION_NOT_HANDLED (WppRecorder.sys). Ok, now I’m panicking…I could rebuild the virtual machines using PowerShell that I described in previous post, but it would take hours to re-install SQL Server 2014, SharePoint 2013, etc. I find bits and pieces from the Internet, but not a comprehensive solution, so here is my solution to fixing all my virtual machines without rebuilding the virtual machines. Hopefully this will help someone in similar situation.
1. First of all, according to MSDN Blue Screen Code Reference, SYSTEM_THREAD_EXCEPTION_NOT_HANDLED is usually caused by not enough disk space + drivers problem. So the first thing you need to do is Delete all VM CheckPoints to enable you to Edit the VHDX Disk.
2. Now start your virtual machine. It will show the BSOD 2-3 times, but eventually it will go to the Recovery Menu. From here you can select Command Prompt, choose Local Administrator and type the password for it. Now we need to use the command-line DiskPart to extend the volume and claim the extra space. The commands are:
select volume 0
3. While we’re trying to fix the disk issue, might as well run chkdsk to fix some filesystem links that could be broken, type this command:
chkdsk /r c:
4. So we took care of the “not enough free space” problem, now we need to solve the WppRecorder.sys or other .sys driver problem. Type this command:
c:\windows\system32\compact.exe /U c:\windows\system32\drivers\*.sys
This command will uncompress those *.sys drivers that were compressed due to space-saving. In my case there were 84 .sys drivers that were compressed, so maybe during the boot-up, Windows was trying to uncompress some drivers but then there was not enough hard disk space? Could be.
5. Finally, we need to run System File Checker to fix any corrupted windows .DLL, run this command
6. Next we need to go to Safe Mode with Command Prompt to type one last command that will disable .SYS compression for space-saving sake feature
And type this last command in Safe Mode with Command Prompt:
fsutil behavior set DisableCompression 1
7. Finally Reboot to Normal mode and voila! Your virtual machine is back from the dreaded Blue Screen of Death 🙂