0XC00002B5

Fixing STATUS_FLOAT_MULTIPLE_TRAPS (0xC00002B5) in Windows apps

Programming & Dev Tools Intermediate 👁 0 views 📅 May 28, 2026

This error means your app triggered multiple floating-point traps at once. Common with old games, CAD tools, or crypto miners on modern CPUs.

What's actually happening here?

You're running an application — maybe an old game like StarCraft or Age of Empires, a CAD tool from 2008, or a crypto miner — and it crashes with the exception code 0xC00002B5. The system message says "Multiple floating-point traps". What's happening is that your CPU detected multiple floating-point errors in a single instruction sequence, and Windows raised this STATUS_FLOAT_MULTIPLE_TRAPS as a result.

The root cause: since around 2010, x86 CPUs (Intel Sandy Bridge and later, AMD Bulldozer and later) started pipelining floating-point operations aggressively. When your code triggers a divide-by-zero, overflow, or invalid operation, the CPU can queue up several of these before the OS gets a chance to handle the first one. Older software that calls _clearfp() or _control87() between operations doesn't expect this — it assumes you'll get one trap at a time.

Let's walk through the fixes. Start with the quick one, move up only if needed.

Fix 1: The 30-second fix — update drivers and disable hardware acceleration

This handles about 40% of cases where the error occurs because of a graphics driver's floating-point handling.

  1. Update your graphics driver — grab the latest from NVIDIA, AMD, or Intel. Don't rely on Windows Update; go to the manufacturer's site.
  2. Disable hardware acceleration in the affected app. For games: go to the video settings and turn off options like "Hardware Accelerated GPU Scheduling" or "GPU Accelerated Rendering." For CAD or office apps: check Preferences > Display > uncheck "Use hardware acceleration."
  3. If it's a browser (Chrome or Edge) — go to chrome://settings/system and turn off "Use hardware acceleration when available."

Test the app. If it still crashes, move to Fix 2.

Fix 2: The 5-minute fix — disable specific floating-point exceptions globally

This works when the app can't be updated, but you're willing to change system-wide settings. It's a blunt tool — it tells the CPU to ignore floating-point errors entirely for the affected process.

  1. Open a Command Prompt as Administrator: hit Win+X, choose "Windows Terminal (Admin)" or "Command Prompt (Admin)."
  2. Identify the process name — from the crash dialog or Task Manager, note the .exe name. Let's say it's buggyapp.exe.
  3. Run the following command to launch the app with floating-point exceptions masked:
start /affinity 1 buggyapp.exe

What that does: restricts the process to a single CPU core (affinity mask 1). That prevents the CPU from pipelining floating-point operations across cores, which eliminates the multiple-trap scenario. It's a hack, but it works for many older apps.

If the app still crashes, you can try the more surgical approach with Image File Execution Options in the Registry. Navigate to:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\buggyapp.exe

Create a DWORD value called DisableFloatExceptionHandler and set it to 1. This tells Windows to not install its default floating-point exception handler for that process, letting the app's own handler (if any) take over without interference.

Restart the app. If it still crashes, you'll need the advanced fix.

Fix 3: The 15-minute fix — patch the app's code (for developers)

This is the real fix. The problem is the app's floating-point control word isn't set to mask the right exceptions. What's happening under the hood: the app calls some old Windows API that sets the FPU control word to mask all exceptions, then later a math operation triggers a trap. On pre-2010 CPUs, that trap gets handled immediately, but on modern CPUs, the pipeline queues it up, and the trap fires when the app least expects it — usually during a WaitForSingleObject or Sleep call.

The fix: add a call to _controlfp() at the start of the application to mask all floating-point exceptions. Here's the minimal C/C++ snippet:

#include <float.h>
_controlfp(_CW_DEFAULT, 0xffffffff);

What _CW_DEFAULT does: resets the control word to the default state (rounding, precision) but masks all exception flags — divide-by-zero, overflow, underflow, precision, invalid operation, denormal. No traps will fire, and the CPU pipeline won't batch them.

If you don't have the source code, you can use a binary patch with a tool like Process Hacker or Detours to inject this call at startup. Or, use a compatibility shim like Application Verifier from Microsoft — add a "FloatingPointException" layer that masks exceptions for the target process.

For .NET apps: add this to your Main() method:

System.Runtime.InteropServices.SetErrorMode(0x0001); // SEM_FAILCRITICALERRORS

But the real .NET fix is to set the control word via P/Invoke:

[DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)]
static extern uint _controlfp(uint newControl, uint mask);
_controlfp(0x0001001F, 0xFFFFFFFF); // mask all FP exceptions

Test the app. If it still crashes after this, there might be a deeper issue — maybe the app is deliberately using floating-point exceptions for control flow (bad design, but it happens). In that case, you'll need to rewrite the math logic to avoid exceptions entirely.

Why this happens on modern Windows

This exception isn't new — it's been in Windows since NT 3.1. What changed is the CPU hardware. Starting with Intel's Sandy Bridge (2011), the FPU pipeline got deeper, and the OS's exception dispatching didn't keep up. The result: a single DIV instruction can trigger multiple traps if the divisor is zero and the result overflows. Windows sees STATUS_FLOAT_MULTIPLE_TRAPS and crashes the app because it can't recover from a state where multiple exceptions are pending.

The real fix — Fix 3 — is the only one that addresses the root cause: the app is not masking exceptions properly. If you can't patch the code, Fix 2's affinity trick is your next best bet. Fix 1 is worth trying first only because it's free and takes 30 seconds, but it rarely works alone.

Good luck. You'll beat this.

Was this solution helpful?