What does NTSTATUS 0xC00002C9 (STATUS_REG_NAT_CONSUMPTION) mean?

 
Previous Next
STATUS_COMMITMENT_MINIMUM STATUS_TRANSPORT_FULL

STATUS_REG_NAT_CONSUMPTION

NaT consumption is an Itanium deferred-exception fault

STATUS_REG_NAT_CONSUMPTION belongs to the IA-64/Itanium execution model. Intel documents that speculative loads can defer certain exceptions by producing a NaT-marked register value. A later non-speculative instruction that consumes such a register can raise a Register NaT Consumption fault. The failure is therefore tied to speculative/deferred-exception state, not to an arbitrary “invalid register.”

Intel's Itanium Software Developer's Manual states that a non-speculative instruction reading a register containing a deferred-exception token raises this fault. The System Abstraction Layer specification similarly says NaT consumption can be generated when a non-speculative operation uses a source register containing NaT or references the NaTPage, and notes that correctly constructed code should not normally generate the fault. These architecture rules are the useful context behind the NTSTATUS name.

For a dump from Itanium-era Windows, preserve the faulting instruction pointer, register state including NaT information, unwind state, compiler-generated speculative-load/check sequence, and the original exception path that could have produced the deferred token. Treating the fault as a conventional access violation loses the instruction-dependency chain. On non-IA-64 systems, first verify that the decoded code and architecture are correct rather than attempting Itanium-specific remediation.

What to inspect

  • Verify the dump architecture is IA-64 before interpreting NaT semantics.
  • Disassemble the speculative load, check instruction, and consuming instruction sequence.
  • Preserve register/NaT and unwind context instead of reducing the event to an access violation.

References


Looking for a different code? Search another status or error code.