Question

I was wondering if there is any framework or application(app)/program out there that can analyze the concurrency of any java code?

If the tool knows all the implementations of the jre shipped classes and methods then it comes down to a simple analyzing of synchronized blocks and method and their call hierarchies. From here it can create a petri net and tell you for sure if you could ever experience a deadlock.

Am I missing out on something or is this really so easy? Then there must be some cool tool doing that kind of stuff? Or would such a tool report too many possible deadlocks that are completely save because of some underlying program/business logic? Petri nets should be powerful enough to handle these situations?

This would save so many man hours of searching for bugs that might or might not be related to dead locking issues.

Was it helpful?

Solution

Although (many) concurrency related bugs can be found using static code analysis, it doesn't apply to every type of bug. Some bugs only appear at runtime under certain conditions.

IBM has a tool called ConTest that "schedules the execution of program threads such that program scenarios that are likely to contain race conditions, deadlocks, and other intermittent bugs (collectively called synchronization problems) are forced to appear with high frequency".

This requires running (unit)tests against an instrumented version of your app. More background info in this developerWorks article.

OTHER TIPS

This paper describes a tool that performs static analysis of a library and determines if deadlock is possible.

Some more :

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top