Anuj has posted 1 posts at DZone. View Full User Profile

Coverity Thread Analyzer for Java 1.0

  • submit to reddit

Developers of multithreaded applications have to concern themselves with introducing concurrency defects into their code. A QA software maker has developed a solution to help put the kibosh on concurrency coding errors in Java applications before they cause deleterious effects on production code.

Today, Coverity released Coverity Thread Analyzer for Java, a dynamic analysis tool for multithreaded applications. It analyzes code as it is executed to identify and predict deadlocks and race conditions.

Deadlocks occur when two or more threads are waiting for each other to finish, while race conditions are found when the output of a process is governed by the sequence or timing of process events.

“It is hard to reproduce concurrency errors,” said Andy Chou, Coverity's chief scientist. “Deadlocks depend on exact timing, and tracing bad behavior for race conditions is difficult.”

He noted that engineers had to sift through roughly 3 million lines of code before they identified the root cause of the Northeast Blackout of 2003: a race condition that occurred in General Electric Energy's Unix-based XA/21 energy management system. The power outage affected millions of customers in parts of the United States and Canada.

In creating Thread Analyzer, Coverity created separate algorithms to identify each condition. The deadlock algorithm tracks the sequence of locking orders to create a complete locking reference, and race conditions are identified by checking whether or not shared variables are protected by locks, Chou explained.

Thread Analyzer


Thread Analyzer has integration hooks with Coverity’s Prevent static analysis tool to allow combined dynamic and static analysis. Thread Analyzer uses Prevent’s results to speed up its code analysis.

cta.png12.03 KB
thread_analyzer.gif77.53 KB
thread_analyzer.png162.88 KB
Average: 3 (1 vote)
Published at DZone with permission of its author, Anuj Goyal.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Eugene Kuleshov replied on Wed, 2008/07/30 - 2:00pm

Is anyone even using Java 1.0?

Vadim Pesochinskiy replied on Wed, 2008/07/30 - 4:41pm

It is "Thread Analyzer" version 1.0 for java.

Engineers do not think about marketing. Amq people will tell you that one should always start with version 4.

Michael Schnell replied on Sat, 2008/08/02 - 10:32am

Sounds interesting but I hate companies that don't have a pricelist on their website. Most times the products are far to expensive for a normal developer.

By the way: This is #10 of Jakob Nielsen's Top ten mistakes of webdesign ("...The worst example of not answering users' questions is to avoid listing the price"...)

Slava Imeshev replied on Fri, 2008/08/08 - 5:32pm

What's so new about it?

I am asking because profilers such as JProfiler (used it for 5 years) provide detailed thread view and dead lock detection. JProfiler is costs only $500.

Free static analysis tools such as FindBugs and PMD do the job by catching threading issues at build time.



Slava Imeshev

Cacheonix: Clustered Java Cache with Zero PMD Errors

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.