| Previous | Next |
| STATUS_INVALID_THREAD | STATUS_CALLBACK_RETURNED_LDR_LOCK |
STATUS_CALLBACK_RETURNED_TRANSACTION
The callback leaked transaction context onto a pooled worker
KTM can associate a current transaction with a thread so compatible operations implicitly participate in it. A pooled worker is later reused by unrelated callbacks, so leaving that association active can enroll subsequent file or registry work in the wrong transaction.
The callback must restore the previous transaction context, not merely close its transaction handle. Handle lifetime and thread-current association are separate. Structured cleanup should run for success, failure, exceptions, and callback cancellation.
What to inspect
- Capture the previous and new transaction handles, transaction identifiers, worker thread, and every return path.
- Pair
SetCurrentTransactionwith restoration of the exact prior context. - Do not assume committing or rolling back automatically clears thread-local transaction state.
- Audit helper functions that set an implicit transaction beneath higher-level callback code.
References
- Microsoft Open Specifications: NTSTATUS values
- Microsoft: SetCurrentTransaction
- Microsoft: pooled threads and callback environments
- Microsoft: Thread Pool API
Looking for a different code? Search another status or error code.
