Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[RTL] Update CountOfOwnedCriticalSections in the TEB
Useful for debugging. Motivation: With SMP on x64 I found a number of instances where critical sections would be left abandoned, causing lockups. From what I can tell it was exceptions inside rpcrt4, which leave the process in a blocked state. Might or might not be related to x64 / SMP. For real value, you still need to put checks at certain places manually, but this is not super straight forward, because there can be false positives, e.g. when a process is terminated due to an exception, where the abandoned lock is acceptable, and we have this during testing. It's difficult to 100% distinguish this from silent and very bad lock leaks. Problematic code: __try { SomeFunction(); // throws an exception with a CS held, e.g. heap code } __except(1) { DPRINT1("Oops. let's just pretend it's all ok!\n"); }
- Loading branch information