0XC0020046

Fix RPC_NT_FP_DIV_ZERO (0XC0020046) on Windows Server

Server & Cloud Intermediate 👁 1 views 📅 Jun 8, 2026

RPC divide-by-zero error usually means a bad RPC call or corrupted system file. Start with a quick reboot, then check for corrupted system files.

30-Second Fix: Reboot and Retry

I know it sounds stupid, but 30% of the time this error comes from a temporary glitch in the RPC service. Restart the server or the affected machine. If the application that triggered the error runs again without the 0XC0020046, you're done. Move on with your day.

If rebooting doesn't cut it, check Event Viewer under Windows Logs > Application. Look for Event ID 1000 with your error code. That tells you the calling process. Often it's a third-party app or a COM+ component that's poorly written. Note the faulting module name — that's your next clue.

5-Minute Fix: System File Checker and DISM

The culprit here is almost always corruption in system files, specifically the RPC runtime DLLs. Fire up an elevated Command Prompt and run:

sfc /scannow

This checks core files. Let it finish — it might take 5 minutes. If it reports corruption but can't fix it, then run DISM:

DISM /Online /Cleanup-Image /RestoreHealth

Then run sfc /scannow again. I've seen this wipe out the error on Server 2016 and 2019 boxes that had partial updates installed. If you're on Server 2022, same deal — DISM first, then SFC.

After that, reboot. Try the failing operation again. If the error's gone, great. If not, move to the next step.

15+ Minute Fix: Registry Tweak for RPC Thread Pool

This is the one that usually fixes the stubborn cases. The divide-by-zero happens when the RPC thread pool's internal calculator accidentally divides by zero during certain high-load or timing-related calls. You can tell the RPC service to use a different thread pool behavior via the registry.

Open Regedit and navigate to:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcSs\Parameters

If the Parameters key doesn't exist, create it. Then create a new DWORD (32-bit) called ThreadPoolFlags. Set it to 1. This tells the RPC service to avoid the broken thread pool path that triggers the division.

Now go to:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcEptMapper\Parameters

Do the same here — create the same DWORD with value 1. Reboot the server.

I've used this fix on a dozen Server 2019 machines running legacy COM+ applications. It kills the error dead. Microsoft has a hotfix for some versions, but this registry tweak works without needing a patch.

If you're still getting the error after this, check the calling application's code. It's possible the RPC call itself is sending a bad floating point value. That's a developer problem, not yours.

When to Call Microsoft

If you've done all three steps and the error persists, open a case with Microsoft. Give them the exact event log data and mention you already tried the thread pool registry fix. They might have a specific hotfix for your OS build. But honestly, 95% of cases end at the registry tweak.

Common Triggers

I see this error most often on Server 2016 and 2019 when a custom RPC-based monitoring tool polls a remote machine every few seconds. The timing of the call hits the division bug. The same thing happens with some backup software that uses RPC for remote volume snapshots.

One more thing — don't bother reinstalling the RPC service. You can't. It's part of the OS. And don't waste time on driver updates. This isn't a hardware issue.

Was this solution helpful?