WOW Assertion Error 0XC0009898 Fix – WOW64 Crash
STATUS_WOW_ASSERTION means a 32-bit app crashed inside WOW64 on 64-bit Windows. Usually caused by corrupt system files or broken compatibility layers.
Quick Answer
Run sfc /scannow in an elevated Command Prompt, then DISM /Online /Cleanup-Image /RestoreHealth. If that doesn't fix it, reinstall all Visual C++ Redistributables (x86 and x64). If it still crashes, the app itself is broken — grab a fresh copy from the official source.
What the Heck Is STATUS_WOW_ASSERTION?
This error code (0xC0009898) shows up when a 32-bit program crashes inside the Windows-on-Windows 64-bit (WOW64) compatibility layer. You're on a 64-bit version of Windows, and a legacy 32-bit app (like an old business tool or a game from 2010) tried to do something WOW64 couldn't handle — usually a corrupted system file, a broken DLL, or a bad installation of the Visual C++ runtime.
I've seen this most often with: old accounting software, POS systems, and utility tools that hardcode paths to system32 (instead of SysWOW64). One client last month had a label printer app that literally threw this error every time it tried to access the printer spooler. The fix was just repairing the WOW64 system files.
Fix Steps
Step 1: System File Checker (SFC)
Open Command Prompt as Administrator (not PowerShell — I've seen weird behavior with SFC under PowerShell). Type:
sfc /scannowLet it finish. It'll probably find corrupt files and replace them from the local cache. Reboot.
Step 2: DISM to Repair Component Store
If SFC found files it couldn't fix, run this:
DISM /Online /Cleanup-Image /RestoreHealthThis pulls fresh system files from Windows Update. Takes 5-15 minutes. Then run sfc /scannow again. I've had cases where this single command fixed the error on three different machines in one week.
Step 3: Fix the Visual C++ Runtime
Most 32-bit apps depend on Visual C++ redistributables. If those are corrupted, WOW64 will choke. Go to Microsoft's download page and install the latest supported Visual C++ Redistributables (x86 and x64). Don't skip the x64 version — some 32-bit apps still load 64-bit system DLLs.
If you already have them installed, run the uninstall tool (MicrosoftProgram_Install_and_Uninstall.meta.diagcab), then reinstall fresh. Yes, it's tedious. Yes, it works.
Step 4: Reinstall the Failing App
Uninstall the app completely, reboot, then reinstall from the original installer. If the installer is older than Windows 10, try running it in compatibility mode for Windows 7 or even Windows XP (Service Pack 3). I've had one ancient inventory tool that needed XP SP3 compatibility to stop throwing 0xC0009898.
Alternative Fixes (If the Main Steps Fail)
- Check for disk corruption: Run
chkdsk /f /ron your system drive. Bad sectors can corrupt WOW64 system files. Had a server that threw this error every boot — turned out the drive was failing. - Disable third-party antivirus temporarily: Some AV (looking at you, McAfee) hooks into the WOW64 layer and causes assertion failures. Pause it, test the app. If it works, add an exception.
- Repair the .NET Framework: Some old apps rely on .NET 3.5. Enable it in Windows Features, then run the .NET Framework Repair Tool from Microsoft.
- Check Event Viewer: Open Event Viewer, go to Windows Logs > Application. Look for errors from the crashing app. The details (Fault Module Name, Exception Code) can point you to the exact DLL that's failing.
Prevention Tips
Keep Windows updated. Seriously — every cumulative update from Microsoft includes fixes for the WOW64 subsystem. Don't defer updates for more than a month.
Also, always install both x86 and x64 versions of runtime libraries. Even if your app is 32-bit, it can still load 64-bit system DLLs under WOW64. Missing one can cause this assertion.
And for the love of all that is holy, stop using 15-year-old installers from random download sites. They often have corrupted or tampered files. Get them from the vendor's official page.
Last tip: if you're a developer and you see this in your own app, check your build settings. You might have accidentally linked against 64-bit libraries instead of 32-bit ones. I've debugged that exact mistake — it took me two hours to realize I'd set the platform to x64 instead of Win32.
Was this solution helpful?