Date Posted: March 11, 2008
Update: March 3, 2009
New version is more stable due to bug fixes, and supports Linux/X86_64 and AIX/PPC64 platforms.
What is Multi-Thread Run-time Analysis Tool for Java?
How does it work?
In order to access the run-time information of multi-threaded program without Java code modifications, byte code rewriting techniques are used. The tool, with the help of the ASM byte code rewriting toolkit, instruments certain points of interest in the user's program during class loading by the Java virtual machine. When the program is executed, a stream of events is generated from the various instrumentation points; this information is propagated to the analysis engine (running in another process) through sockets.
In the analysis engine, sophisticated algorithms are used for data race detection and deadlock detection for multi-threaded programs. The data race detection algorithm is a hybrid version of the two well-known race detection algorithms called lockset and happens-before. This hybrid approach makes the tool more efficient and precise (see "Hybrid Dynamic Data Race Detection"). The "weaker-than" relation (see "Efficient and Precise Datarace Detection for Multi-threaded Object-Oriented Programs") and the "Eraser" state machine (see "Eraser: A Dynamic Data Race Detector for Multi-threaded Programs") are used to filter program events in order to improve the performance of this tool. The deadlock detection algorithm is based on lock graphs. When the user's program is running, the information of lock and synchronization is recorded and a lock graph is created. When the program exits, the deadlock detector checks for cycles in the lock graph. After all non-deadlocked cycles (false positives) are removed, the rest are reported to the user as potential deadlocks.About the technology author(s)
Raja Das is a software architect in IBM's Software Group. Currently, he is developing libraries and frameworks for multicore/manycore systems. Previously, he was the WebSphere® Partner Gateway product architect. Mr. Das's interests include programming languages, parallel software, and systems.

Zhi Gan, a software engineer at IBM's China Development Lab, joined IBM after receiving a Ph.D. in computer security from Shanghai JiaoTong University. Mr. Gan has extensive experience in SOA (service-oriented architecture), AOP (aspect-oriented programming), and Eclipse. His current focus is mainly on model-driven development with patterns.

Yao Qi is a software engineer at IBM's China Emerging Technology Institute, China Development Lab. He joined IBM in 2006. Mr. Qi has experience in compiler, debugger, and open-source development and is currently working on a run-time analysis tool. Mr. Qi holds a master's degree in computer science from Beijing Institute of Technology, Beijing, China.

Zhi Da Luo is a software engineer at IBM Emerging Technology Institute, China Development Lab. Mr. Luo joined IBM in 2008. He has experience in embedded software development and is currently working on a run-time analysis tool. Mr. Luo holds a master degree in software engineering from Peking University in Beijing, China.
