Skip to content

CUDA uncorrectable ECC error on an NVIDIA GPU

An uncorrectable GPU memory error means ECC could not repair the affected data. On modern NVIDIA data-center GPUs, the next action depends on whether the error was contained, the recovery-action flag, row-remapping state, and field diagnostics. A single message does not automatically prove the board needs RMA.

Quick answer

Stop using the affected allocation, preserve Xid and nvidia-smi -q evidence, determine whether the error was contained, and follow the reported recovery action. Drain or quarantine the GPU until the required reset and validation complete. Use NVIDIA field diagnostics and row-remapping failure state for an RMA decision.

Symptom
NVRM: Xid (PCI:0000:01:00): 95, Uncontained
Root cause
ECC detected a memory result that could not be corrected. The physical owner and required action depend on the reported location, containment state, recovery-action flag, and persistent row-remapping or SRAM threshold state. The event becomes an RMA case only when NVIDIA's policy condition is met and validated by the field diagnostic process.
Recommended fix
Preserve kernel Xid lines, nvidia-smi -q, GPU UUID, PCI bus ID, job and rank mapping, and scheduler timestamps before reset or reboot.
How Denpex helps
Denpex investigates CUDA uncorrectable ECC error on an NVIDIA GPU using the evidence you provide or your connected workload collects. Earlier rank, host or application evidence is needed to distinguish an initiating failure from a downstream report.
Hardware#cuda#ecc#uncorrectable-ecc#xid-48#xid-94#xid-95

What this failure is

An uncorrectable ECC error is a memory error that the GPU's ECC mechanism cannot correct. NVIDIA reports related state through Xid events, NVML or nvidia-smi, row-remapping fields, and recovery-action flags. Xid 48 reports an uncorrectable ECC event, while Xids 94 and 95 distinguish contained and uncontained outcomes on supported products.

Live diagnosis, no signup

Is this what broke your run? Paste your log.

You're reading about CUDA uncorrectable ECC error on an NVIDIA GPU. Paste your own traceback and relevant evidence for an investigation of your workload, with a next action or a specific missing fact. A reference entry does not establish your cause. No account or card for the free diagnosis. Review data handling before submitting sensitive logs.

Before uploading, review cloud data handling and local options.

training_logs.txt
No log to hand? Try one:

3 free diagnoses/day

Why it happens (the mechanism)

A memory or cache location returned data outside ECC's correction capability. The event can be isolated by containment, can require a GPU reset so pending row remapping takes effect, or can expose a persistent condition that meets NVIDIA's RMA policy after field validation. The user-visible CUDA exception is the workload impact, not the complete hardware disposition.

What you'll observe

  • The affected application can terminate or report corrupted execution state.
  • An uncontained event can affect more than the process that encountered the faulty location.
  • Resetting before evidence capture can erase the incident context needed for support and RMA review.
  • Automatically replacing every GPU after one uncorrectable event can create false RMAs.

Common symptoms and what they mean

SymptomWhy it happens
RuntimeError: CUDA error: uncorrectable ECC error encounteredECC detected a memory result that could not be corrected.
Kernel logs contain Xid 48 and may also contain Xid 94 or Xid 95.The physical owner and required action depend on the reported location, containment state, recovery-action flag, and persistent row-remapping or SRAM threshold state.
nvidia-smi -q reports volatile or aggregate uncorrectable ECC state, row-remapping state, or a recovery action.The event becomes an RMA case only when NVIDIA's policy condition is met and validated by the field diagnostic process.
The affected CUDA context or application stops making valid progress.ECC detected a memory result that could not be corrected.

Which systems are affected

  • NVIDIA data-center GPUs with ECC-enabled memory
  • Multi-tenant or MIG systems where containment determines blast radius
  • Schedulers that need a drain, reset, validation, and return-to-service workflow

How to confirm this is the problem

Use this checklist to test the hypothesis against a small reproduction. No single line proves the root cause, so preserve the preceding events and compare one variable at a time.

  • ✓Find the first Xid and CUDA error for the affected GPU and map its PCI bus ID or UUID to the job and rank.
  • ✓Determine whether Xid 94 or Xid 95, or the corresponding recovery-action state, reports a contained or uncontained error.
  • ✓Capture full nvidia-smi -q output before reset, including ECC and row-remapping fields exposed by the device.
  • ✓Follow the required reset or recovery action, then run the platform-approved GPU diagnostic.
  • ✓Return the GPU to service only after the same production-shaped control passes and no new uncorrectable event appears.

Root cause

  • ECC detected a memory result that could not be corrected.
  • The physical owner and required action depend on the reported location, containment state, recovery-action flag, and persistent row-remapping or SRAM threshold state.
  • The event becomes an RMA case only when NVIDIA's policy condition is met and validated by the field diagnostic process.

The fix and how to prevent it

Searchable error signature

search key
NVRM: Xid (PCI:0000:01:00): 95, Uncontained

Use this text as a lookup key in logs and upstream issue trackers. It is not presented as a captured customer log. Confirm the cause from your own preceding events, versions, configuration and the cited references.

The fix and the prevention pattern

The root cause is on this page and stays free. A free account adds the exact remediation steps, saved history, and the fix on every entry in the encyclopedia.

Sign up free. Unlock the full analysis

No credit card. Daily allowance follows verified trust tier. Instant access.

Why the recommended fix works

Containment, recovery, and RMA are different decisions. Preserving the Xid and device state identifies the blast radius. Following the recovery-action and row-remapping state restores the hardware at the required boundary. Field diagnostics prevent an unsupported replacement decision based only on a wrapper exception.

Code examples

snippet
# Preserve evidence before a reset
dmesg -T | grep -iE 'NVRM|Xid|ECC'
nvidia-smi -q
nvidia-smi --query-gpu=timestamp,uuid,pci.bus_id,ecc.errors.uncorrected.volatile.total,ecc.errors.uncorrected.aggregate.total --format=csv

# Scheduler containment example
scontrol update NodeName=<node> State=DRAIN Reason='uncorrectable ECC investigation'

Adapt the snippet to your framework. The same pattern holds for PyTorch Lightning, Hugging Face Trainer, DeepSpeed, Megatron-LM, and vLLM training wrappers. Where the wrapper exposes a config flag (for examplelr_scheduler_type in Trainer), prefer the flag over the imperative API to keep the schedule declarative and reproducible.

Best practices by model family

Model / StackRecommendationNotes
Immediate containmentStop the affected allocation and preserve evidenceDo this before a reset changes volatile state.
RecoveryFollow the reported recovery actionA contained event and an uncontained event do not have the same blast radius.
RMAUse policy state plus field diagnosticsOne generic CUDA exception is not an RMA verdict.

With the fix vs without the fix

DimensionWith the fixWithout the fix
Contained errorThe error-containment process limited propagationUnaffected workloads can remain valid on supported architectures
Uncontained errorErroneous data may not have been containedUse the reported recovery action and a broader incident boundary
RMA evidenceRow-remapping failure or SRAM threshold state validated by field diagnosticsA replacement decision based only on uncorrectable ECC text

Diagnostic note

“The costly mistake is collapsing incident containment, hardware recovery, and RMA into one automatic action. Drain first, preserve evidence, follow the device's recovery state, and let the validated hardware policy decide replacement.”

Visual fingerprint

Uncorrectable ECC response path
uncorrectable ECC event
        |
        v
preserve Xid and device state
        |
        v
contained or uncontained?
        |
        v
follow recovery action
        |
        +-- diagnostic passes --> controlled re-admission
        +-- RMA policy met ----> vendor replacement workflow
The workflow separates workload containment, GPU recovery, and evidence-based RMA.

Xid 48 in context

Xid 48 is one of a small set of codes the NVIDIA driver uses to report GPU faults, and the number is most of the diagnosis: it tells you whether you are looking at your own code, the driver, or a board that needs replacing.

Compare every Xid code side by side

Diagnose this failure in VS Code

Select the traceback or open the failed terminal, then run Denpex locally to see the initiating rank, collateral failures, exact fix, and verification command without uploading the log.

Install the free VS Code extension

Frequently asked questions

Questions engineers and on-call staff commonly ask about this failure.

Does one uncorrectable ECC error always require GPU replacement?
No. The required response depends on containment, recovery action, row-remapping or SRAM threshold state, and field diagnostics. NVIDIA's RMA policy is more specific than the generic CUDA exception.
Should I reset the GPU immediately?
Contain the workload first and preserve volatile evidence. Then follow the reported recovery action and the approved service procedure.
What should I capture for support?
Capture Xid lines, full nvidia-smi -q, GPU UUID and PCI bus ID, scheduler ownership, containment and recovery state, and the field diagnostic result.
When can the GPU return to service?
Only after the required recovery completes, the supported diagnostic passes, and a production-shaped validation shows no recurrence.
How does this prevent false RMA?
It requires the documented device state and diagnostic result instead of treating one application-level error string as proof of permanent board failure.

Don't just read the fix, diagnose your run

The encyclopedia tells you what went wrong. Denpex tells you what went wrong in YOUR training run. With your logs, your config, and your stack.