Contemplate ThreadSafe Introduces Deadlock Detection
Contemplate's ThreadSafe version 1.3.1 featuring a new deadlock detection rule for finding code that can deadlock because of the order that locks are acquired is now available. When deadlocks are detected, ThreadSafe reports which locks are held for each lock acquisition. On the right is an example of this detection using their Eclipse plugin.
InfoQ reported on ThreadSafe's first public release in August 2013, pointing out at that time that ThreadSafe did not catch everything:
InfoQ purposely introduced a potential "deadly-embrace" deadlock into the codebase, and ThreadSafe did not locate it.
With the 1.3.1 release, this is now fixed and ThreadSafe now finds deadlocks arising from circularity in lock dependencies.
The release includes rule-accuracy improvements, many minor improvements to the Eclipse plug-in and Command Line Interface, and six new rules:
- Deadlock due to circularity in lock dependencies.
- Lock not released when method throws an exception
- Synchronizing on a collection view
- No lock held while iterating on a synchronized collection view.
- Iterating over a synchronized collection while holding a lock on the view.
- Iterating over a collection view whilst not locking on the backing collection.
To learn more about ThreadSafe, InfoQ sat down with Contemplate Founder and CEO, Don Sannella.
InfoQ: You first released ThreadSafe in August of 2013. How has adoption been?
Adoption really started to take off once we started making free 2-week trials available in November. Since then, we've seen adoption both by individual developers and by teams who are concerned about maintaining high-quality code, in a wide range of industries.
InfoQ: You added Deadlock Detection in 1.3.1, what's coming in the next release?
ThreadSafe 1.3.2 is faster, uses memory more efficiently for use with very large projects, and improves support for legacy Java versions.
InfoQ: Which usage pattern are you seeing most: Eclipse, Sonar or command line?
Eclipse and Sonar are currently most popular. The command line version is new in 1.3 and we expect interest to increase because it can be used either on a desktop or on a build server.
InfoQ: Are you planning on releasing a plugin for IntelliJ? What about NetBeans?
We would love to do a plugin for IntelliJ, but for now we are focusing on our Eclipse, Sonar and command line products. For users of other IDEs, the command line version provides similar functionality.
InfoQ: Are there any plans to offer a free license of ThreadSafe to open source projects?
We have already provided free licenses on request to a couple of open source projects and for use in teaching. We welcome further requests.
InfoQ: Are you working on any additional products, or do you plan to remain focused on ThreadSafe?
For now we are focusing on ThreadSafe and further improvements to its coverage and accuracy, including building in more knowledge of Android.
For more information about ThreadSafe, see Contemplate senior software engineer Robert Atkey's article, Discover and Diagnose Java Concurrency Problems Using Contemplate's ThreadSafe, and our coverage last year of ThreadSafe's first public release.
There's also a brief Introducing Contemplate ThreadSafe YouTube video that provides a quick overview of the product.
ThreadSafe 1.3.2 is expected to be released within the next week. You can request a trial of the latest version of ThreadSafe on their website.
why focus on eclipse??
Re: why focus on eclipse??
Re: why focus on eclipse??
While I'm here: google "Detecting Deadlocks without Drudgery" for much more about finding deadlocks with and without ThreadSafe.
Mike Amundsen May 29, 2015
Ben Linders May 28, 2015