RPC_NT_FP_UNDERFLOW (0XC0020047) – Quick Fixes from a Real IT Guy
A floating point underflow in RPC calls. Usually a corrupt driver or bad math in a service. Here's how I've fixed it for clients.
The 30-Second Fix: Restart the RPC Service (and Check the Event Log)
I know, I know — restarting a service sounds too simple. But RPC_NT_FP_UNDERFLOW (0XC0020047) is a transient error that sometimes clears after a service restart. Had a client last week whose print queue died because a bad third-party printer driver caused this exact error. The RPC server threw the underflow, crashed, and took the Spooler with it.
- Open
services.mscon the affected server. - Find Remote Procedure Call (RPC) — right-click and select Restart.
- Also restart Print Spooler if you're seeing printer-related crashes.
Why this works sometimes: The RPC service hosts lots of subcomponents. A floating point underflow can be a one-off math glitch in a transient request. Restarting clears the in-memory state. If the error doesn't come back in the next hour, you're done. If it does, move on.
The 5-Minute Fix: Find and Remove the Culprit Driver or Service
This error almost always comes from a corrupt or poorly written driver that passes floating point garbage to the RPC server. In my experience, it's often a printer driver or a legacy hardware driver that hasn't been updated since Windows 7 days.
- Open Event Viewer → Windows Logs → System.
- Filter by Event ID 7031 or 1000 (Application Error) around the timestamp of the crash.
- Look for the faulting module name (e.g.,
hpz3lw5u.dllorlmssvc.dll). - Open Devices and Printers → right-click each printer → Printer Properties → Advanced tab → check the driver name against the faulting module.
- If you find a match, remove that printer, then go to Print Management (or
printmanagement.msc) → Print Servers → Drivers → right-click and remove the bad driver.
Real scenario: I had a Windows Server 2019 box at a dental clinic. Every 20 minutes, the print server threw RPC_NT_FP_UNDERFLOW and killed the spooler. Turned out it was an old Xerox PCL6 driver from 2015. Replaced it with a manufacturer's universal driver — never crashed again.
The Advanced Fix (15+ Minutes): Check Math Coprocessor Emulation and Patch RPC
If the driver cleanup didn't work, the problem might be at the system level — either a corrupt math coprocessor emulation in the RPC runtime or a missing security patch. I've only seen this twice in 10 years, but here's the drill.
Step 1: Check for Floating Point Emulation Issues
The RPC server on older Windows versions (pre-2020) had a known bug where certain floating point values underflowed when processed by specific RPC endpoints. Microsoft released a hotfix for this in KB5003637 (June 2021 cumulative update) and later patches. Run winver to check your OS build. If you're below 10.0.17763.2061 (Server 2019) or 10.0.14393.4467 (Server 2016), install the latest cumulative update.
# Check build number via command line
winver
# Or use PowerShell
(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").CurrentBuild
After updating, restart and see if the error reappears.
Step 2: Disable RPC Over HTTP (Temporary Diagnostics)
If you're still getting the error, try temporarily disabling RPC over HTTP (port 593, used in some legacy apps). This isn't a permanent fix, but it tells you whether the underflow is happening via HTTP transport.
# Stop and disable RPC over HTTP service (test only)
net stop "RPC over HTTP Proxy"
sc config "RPC over HTTP Proxy" start= disabled
If the error stops, you've isolated it to that transport. Re-enable the service and check your proxy configuration or update the RPC proxy driver.
Step 3: Re-register RPC Components and Repair System Files
This is a last resort. Run an SFC scan and DISM restore, then re-register all RPC-related DLLs.
# Run as Administrator
sfc /scannow
dism /online /cleanup-image /restorehealth
# Re-register RPC DLLs
regsvr32 /s rpcrt4.dll
regsvr32 /s rpcns4.dll
regsvr32 /s rpcss.dll
Note: This rarely fixes the underflow directly, but it clears up any corrupted RPC libraries that might be misinterpreting floating point data.
When to Call Microsoft Support (Or Rebuild the Server)
If you've done all three steps and the error is still popping up every few hours, you've got a deeper problem — maybe a custom app that's sending malformed RPC calls, or a hardware issue (bad RAM can cause floating point errors too). Run mdsched.exe to test your RAM. If that passes, it's likely a software bug that requires a vendor patch. In that case, I'd spin up a new server, migrate the roles, and move on. Some fights aren't worth your time.
Was this solution helpful?