JPredictor
From FSL
jPredictor is a runtime predictive analysis tool for Java. Based on sliced causality among property-relevant events, it is able to detect potential violations of desired properties by observing exectuions of the program, even when the violations are not encountered in the observed runs.
Causality, i.e. causal partial order on events, has been used in runtime analysis of concurrent programs in several works. Most of them are based on the traditional "happen-before" relationship, which takes all computational dependence on shared variables into account. Therefore, such causality can be too restrictive, allowing too many false postives, when the inter-thread communication involves many independent shared variables. Our approach combines the dynamic dependence with the static structural information of the program in order to achieve more relaxed causal partial order on events that are relevant to the desired property. This way, one can predicet more possible executions of the program, which preserve the same ocurrences of relevant events. In other words, our approach can lead to a better coverage of the prediction, while still keeps the correctness of the results. Essentially, if the tranditional causality is viewed as "complete" in the sense that all inter-thread communications are taken under consideration, then the causality used in our approach slices the complete causality using control-flow/data-flow dependence among events. More specifically, only a part of the causality that may affect relevant events is considered. This is similar, to some extend, to the program slicing, and the reason of its name: sliced causality. More in-depth disucssion can be found in our papers.
Related project: Runtime Predictive Analysis
[edit] News and Change Logs
- 2009-7-28: The implementation of jPredictor is no longer publicly available.
- 2008-9-16: Experiment results were move to the experiments page.
- 2007-10-2: jPredictor version 0.2 was released
- New features are supported: the pipeline mode of processing, getting all potential errors from the trace, and removing redundant reported errors
- 2007-9-10: jPredictor version 0.1 was released
[edit] Experiments Results
Note: jPredictor is still under development and more experiments will be done on it. So it would not be surprising to see constant changes of the results.
[edit] Related Publications
- Maximal Causal Models for Multithreaded Systems
- Traian Florin Serbanuta, Feng Chen and Grigore Rosu
Technical report UIUCDCS-R-2008-3017, December 2008
PDF, TR@UIUC, BIB - jPredictor: A Predictive Runtime Analysis Tool for Java
- Feng Chen and Traian Florin Serbanuta and Grigore Rosu
ICSE'08, ACM, pp. 221-230. 2008
PDF, ICSE'08 slides, DOI, ICSE'08, BIB - Effective Predictive Runtime Analysis Using Sliced Causality and Atomicity
- Feng Chen, Traian Florin Serbanuta and Grigore Rosu
Technical report UIUCDCS-R-2007-2905, October 2007
PDF, TR@UIUC, BIB - Parametric and Sliced Causality
- Feng Chen and Grigore Rosu
CAV'07, LNCS 4590, pp 240 - 253, 2007
PDF, CAV'07 slides, CAV'07, TR@UIUC, BIB - Parametric and Termination-Sensitive Control Dependence - Extended Abstract
- Feng Chen and Grigore Rosu
SAS'06, LNCS 4134, pp 387-404. 2006.
PDF, LNCS, SAS'06, BIB - Parametric and Termination-Sensitive Control Dependence
- Feng Chen and Grigore Rosu
Technical report UIUCDCS-R-2006-2712, April 2006
PDF, TR@UIUC, BIB - Predicting Concurrency Errors at Runtime using Sliced Causality
- Feng Chen and Grigore Rosu
Technical report UIUCDCS-R-2006-2965, 2006.
PDF, TR@UIUC, BIB - Predicting Concurrency Errors at Runtime using Sliced Causality
- Feng Chen and Grigore Rosu
Technical report UIUCDCS-R-2005-2660, 2005.
PDF, TR@UIUC, BIB


