| Previous | Next |
| ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER | ERROR_TRANSACTION_NOT_FOUND |
ERROR_CURRENT_TRANSACTION_NOT_VALID
The thread transaction context no longer identifies a usable transaction
ERROR_CURRENT_TRANSACTION_NOT_VALID belongs to the Windows Kernel Transaction Manager transaction-processing model. Windows transaction-aware code can carry a current transaction context for operations that consult the calling thread. KTM documentation still treats the underlying transaction as a handle-based kernel object whose state can change or be rolled back at any time. This error means the context associated with the thread cannot be used as a valid transaction object for the current operation.
Inspect where the transaction context is installed, restored, and cleared, especially across thread pools, callbacks, exceptions, and asynchronous work. A transaction context is not application-global state: work resumed on another thread may not inherit the intended context, and reused worker threads can retain stale state if cleanup is incomplete. Log both the explicit transaction handle and the current-thread context around transaction-aware APIs. Prefer explicit handle passing in infrastructure code when context flow is ambiguous.
What to inspect
- Trace transaction-context set and clear operations on the failing thread.
- Check thread-pool reuse, callbacks, and asynchronous continuations for stale context.
- Compare the current transaction ID with the transaction the application intended to use.
References
- Microsoft: KTM programming model and transaction handles
- Microsoft: KTM transaction, TM, RM, and enlistment functions
- Microsoft: KTM object model
Looking for a different code? Search another status or error code.