TY - GEN
T1 - JPREDICTOR
T2 - 30th International Conference on Software Engineering 2008, ICSE'08
AU - Chen, Feng
AU - Şerbǎnutǎ, Traian Florin
AU - Roşu, Grigore
PY - 2008
Y1 - 2008
N2 - JPREDICTOR is a tool for detecting concurrency errors in JAVA programs. The JAVA program is instrumented to emit property-relevant events at runtime and then executed. The resulting execution trace is collected and analyzed by JPREDICTOR, which extracts a causality relation sliced using static analysis and refined with lock-atomicity information. The resulting abstract model, a hybrid of a partial order and atomic blocks, is then exhaustively analyzed against the property and errors with counter-examples are reported to the user. Thus, JPREDICTOR can "predict" errors that did not happen in the observed execution, but which could have happened under a different thread scheduling. The analysis technique employed in JPREDICTOR is fully automatic, generic (works for any trace property), sound (produces no false alarms) but it is incomplete (may miss errors). Two common types of errors are investigated in this paper: dataraces and atomicity violations. Experiments show that JPREDICTOR is precise (in its predictions), effective and efficient. After the code producing them was executed only once, JPREDICTOR found all the errors reported by other tools. It also found errors missed by other tools, including static race detectors, as well as unknown errors in popular systems like Tomcat and the Apache FTP server.
AB - JPREDICTOR is a tool for detecting concurrency errors in JAVA programs. The JAVA program is instrumented to emit property-relevant events at runtime and then executed. The resulting execution trace is collected and analyzed by JPREDICTOR, which extracts a causality relation sliced using static analysis and refined with lock-atomicity information. The resulting abstract model, a hybrid of a partial order and atomic blocks, is then exhaustively analyzed against the property and errors with counter-examples are reported to the user. Thus, JPREDICTOR can "predict" errors that did not happen in the observed execution, but which could have happened under a different thread scheduling. The analysis technique employed in JPREDICTOR is fully automatic, generic (works for any trace property), sound (produces no false alarms) but it is incomplete (may miss errors). Two common types of errors are investigated in this paper: dataraces and atomicity violations. Experiments show that JPREDICTOR is precise (in its predictions), effective and efficient. After the code producing them was executed only once, JPREDICTOR found all the errors reported by other tools. It also found errors missed by other tools, including static race detectors, as well as unknown errors in popular systems like Tomcat and the Apache FTP server.
KW - Predictive runtime analysis
KW - Runtime verification
KW - Sliced causality
UR - http://www.scopus.com/inward/record.url?scp=57349161233&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=57349161233&partnerID=8YFLogxK
U2 - 10.1145/1368088.1368119
DO - 10.1145/1368088.1368119
M3 - Conference contribution
AN - SCOPUS:57349161233
SN - 9781605580791
T3 - Proceedings - International Conference on Software Engineering
SP - 221
EP - 230
BT - ICSE'08
Y2 - 10 May 2008 through 18 May 2008
ER -