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.

Keywords for this software

Anything in here will be replaced on browsers that support the canvas element