*Result*: RACER : effective race detection using AspectJ

Title:
RACER : effective race detection using AspectJ
Publisher Information:
Jet Propulsion Laboratory, National Aeronautics and Space Administration, 2008.
Publication Year:
2011
Collection:
BEACON eSpace at Jet Propulsion Laboratory (California Institute of Technology / NASA JPL)
Document Type:
*Report* report
File Description:
application/pdf
Language:
English
Relation:
International Symposium on Software Testing and Analysis (ISSTA), Seattle, Washington, July 20, 2008.; 08-1434; http://hdl.handle.net/2014/41742
Accession Number:
edsbas.19C6C250
Database:
BASE

*Further Information*

*The limits of coding with joint constraints on detected and undetected error rates Programming errors occur frequently in large software systems, and even more so if these systems are concurrent. In the past, researchers have developed specialized programs to aid programmers detecting concurrent programming errors such as deadlocks, livelocks, starvation and data races. In this work we propose a language extension to the aspectoriented programming language AspectJ, in the form of three new built-in pointcuts, lock(), unlock() and maybeShared(), which allow programmers to monitor program events where locks are granted or handed back, and where values are accessed that may be shared amongst multiple Java threads. We decide thread-locality using a static thread-local objects analysis developed by others. Using the three new primitive pointcuts, researchers can directly implement efficient monitoring algorithms to detect concurrent programming errors online. As an example, we expose a new algorithm which we call RACER, an adoption of the well-known ERASER algorithm to the memory model of Java. We implemented the new pointcuts as an extension to the AspectBench Compiler, implemented the RACER algorithm using this language extension and then applied the algorithm to the NASA K9 Rover Executive. Our experiments proved our implementation very effective. In the Rover Executive RACER finds 70 data races. Only one of these races was previously known.We further applied the algorithm to two other multi-threaded programs written by Computer Science researchers, in which we found races as well. ; NASA/JPL*