| Previous | Next |
| ERROR_CANT_ENABLE_DENY_ONLY | ERROR_FLOAT_MULTIPLE_TRAPS |
ERROR_FLOAT_MULTIPLE_FAULTS
What this result means
ERROR_FLOAT_MULTIPLE_FAULTS is a Windows system result. More than one floating-point exception condition became pending or was detected together. The code is primarily useful during exception dispatch, debugging, or compatibility processing; it is not a precise diagnosis of which arithmetic operation was wrong.
Likely causes
- floating-point exception masks were changed and several pending conditions accumulated
- corrupted processor context or stack state produced inconsistent exception information
- legacy or generated code mishandled floating-point status flags
- instrumentation resumed execution without clearing or handling the original fault
How to diagnose it
Capture the instruction pointer, floating-point control and status words, MXCSR, exception record, operand values when safe, architecture, and generated-code metadata. Preserve the first fault rather than only the later aggregate status.
Correct handling
Terminate or unwind to a known-safe boundary unless the runtime explicitly supports recovery. Correct numeric-domain checks and exception-mask handling; do not repeatedly continue from the same instruction.
Where this code is usually encountered
- Several floating-point fault conditions are present in one saved execution context.
- A handler resumes without clearing status, causing later arithmetic to accumulate faults.
- JIT, native, and library code disagree about x87 or SIMD control state.
Evidence worth collecting
- exception record and first-chance event sequence
- x87 status/control words and MXCSR
- faulting instruction, operands, and module symbols
- state before and after callbacks, fibers, or context switches
Practical diagnostic sequence
- Capture the first floating-point exception; the aggregate code may hide the original operation.
- Decode x87 and MXCSR flags to identify invalid, divide-by-zero, overflow, underflow, or precision conditions.
- Check every handler that modifies exception masks or resumes execution.
- Use deterministic test inputs and compare scalar, SIMD, debug, and optimized builds.
Guidance for developers
Set floating-point policy at clear boundaries and restore prior state after third-party callbacks. Validate numeric domains and avoid continuing from a faulting instruction unless the handler explicitly repairs operands and status.
Guidance for administrators
This is an application or runtime defect, not a reason to change global processor settings. Preserve a dump and update the failing component.
How to interpret it correctly
The plural status reports multiple recorded fault conditions; it should not be treated as a single generic arithmetic overflow.
Example failure pattern
A numerical plugin may leave invalid-operation and overflow flags set while exceptions are masked. Later code changes the mask, and the saved context reports multiple faults at once. Capturing control state at plugin boundaries identifies the component that contaminated the thread’s floating-point environment.
Retry and recovery policy
Do not retry with the same operands and status flags. Reset state only at an owned boundary after recording it, validate the input, and restart the calculation from a defined checkpoint.
Suggested telemetry
For ERROR_FLOAT_MULTIPLE_FAULTS, record the operation name, component version, process and thread identity, the original numeric result, the immediately preceding state transition, and a correlation identifier. Keep the ERROR_FLOAT_MULTIPLE_FAULTS event separate from later fallback failures so its first actionable cause remains searchable across machines.
References
Looking for a different code? Search another status or error code.
