Every so often I'd pull out this tool, use it to locate a deadlock, improve it slightly and then get back to my 'real work' of building complex server systems. The tool evolved and each time that I used it to locate a deadlock, in minutes rather than days, I thought to myself that I should package it up as a product and sell it. There were always other things on the list of things to do and so it has taken until 2011 for me to launch LockExplorer.com and make the tools that I've been working on over the years available to others.
One thing that I've found amazingly useful is the ability to run my deadlock detection tools as part of my pre-release test cycle. The original deadlock detection tool took a long time to process all of the data that it was gathering about the target application's lock usage, but various performance improvements that I've made over the years now mean that I can run these tools to test high performance client/server systems without affecting the performance of the system under test that much. I then split the tool into three, a Lock Inversion Detector which runs very fast but simply tells you if there are any lock inversions detected, and a Lock Inversion Analyser which tells you exactly which lines of code are the cause of your lock inversions and the full featured Lock Explorer which allows you to navigate all of the data that the tools gather and drill down to explore how your code uses its locks.
The Lock Inversion Detector is available for free, if you run it regularly enough you may never get to the point where you need to purchase the Lock Inversion Analyser to locate your potential deadlocks. Lock Explorer is still in development!