A lock inversion detector as part of the build is good
As I mentioned, I’ve been adjusting my build system and have finally got to the point where my lock inversion detector is suitable to run on all of my example servers during their test phase on the build machines. I’m working my way through the various example server’s test scripts and adjusting them so that they use the lock inversion detector, can be easily configured to run the full blown deadlock detector and also can run the servers under the memory profiling test runner that I put together earlier in the week.
Note: the deadlock detector mentioned in this blog post is now available for download from www.lockexplorer.com.
So far I’ve found 3 lock inversions that have never caused deadlocks in practice but which could, given the right circumstances and server design, cause problems. The 3 that I’ve found (and fixed) so far are in the async connectors used by the OpenSSL, SChannel and SSPI Negotiate stream filters.
So there will be a 6.3.2 next week but I’ll delay it until the new build process is being used by all the example servers.