What does HRESULT 0xC8000067 (hrOutOfThreads) mean?

 
Previous Next
hrFileClose hrTooManyIO

hrOutOfThreads

State represented by this code

hrOutOfThreads means ESE could not start a worker thread needed by the requested operation.

The stored value is 0xC8000067 (negative JET error -103; -103). Current ESE documentation uses JET_errOutOfThreads for the corresponding published JET condition.

The first useful distinction is that this is not a generic busy indication like hrTooManyIO and not necessarily an ESE memory-cache limit. Start by measuring process thread count, system commit, thread creation failures, stack reservation, and the workload phase requesting the worker.

Data for a reproducible incident

  • Code-specific observation: measure process thread count, system commit, thread creation failures, stack reservation, and the workload phase requesting the worker.

Objects and state involved

Diagnostic layeroperating-system file, thread, and asynchronous-I/O resources used by ESE
Relevant API surfacedatabase/log file I/O, worker creation, backup reads, and background tasks
Code-specific conditionESE could not start a worker thread needed by the requested operation
Narrow corrective directionremove thread leaks or excessive concurrency and retry only after thread capacity is demonstrably available

The first lower-level Win32 error is more useful than later cascading ESE failures. Resource exhaustion should be measured at the moment of failure, before retries alter counts.

Actions that can make diagnosis worse

  • Do not discard a close or flush error during cleanup.
  • Do not create unbounded retries under resource pressure.

Nearby ESE or AD backup states

It specifically means that this is not a generic busy indication like hrTooManyIO and not necessarily an ESE memory-cache limit. Related values below can appear in the same workflow but require a different response:

hrFileCloseESE could not complete the operating-system close of a database, log, temporary, or backup file
hrTooManyIOthe engine reached its outstanding-I/O throttle and refused to queue more storage work
hrBadLogSignaturea transaction log header signature does not match the expected log sequence

Next actions

  1. Record it, 0xC8000067, the API name, the current phase, and all live context or file owners.
  2. Verify the condition by measuring process thread count, system commit, thread creation failures, stack reservation, and the workload phase requesting the worker.
  3. Apply only the targeted fix: remove thread leaks or excessive concurrency and retry only after thread capacity is demonstrably available.

Acceptance criteria for a fix

A useful regression test should force the condition “ESE could not start a worker thread needed by the requested operation”, call one documented API transition, and assert the exact HRESULT.

Technical references


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