A runtime analysis technique is presented, which can predict concurrency errors in multithreaded systems by observing potentially non-erroneous executions. It builds upon a novel causal partial order, sliced causality, that weakens the classic but strict “happensbefore” by using both static information about the program, such as controland data-flow dependence, and dynamic synchronization information, such as lock-sets. A vector clock algorithm is introduced to automatically extract a sliced causality from any execution. A memory-efficient procedure then checks all causally consistent potential runs against properties given as monitors. If any of these runs violates a property, it is returned as a “predicted” counter-example. This runtime analysis technique is sound (no false alarms) but not complete (says nothing about code that was not covered). A prototype called jPredictor has been implemented and evaluated on several Java applications with promising results.
更多
查看译文
关键词
Log Analysis,Performance Prediction,Model-driven Performance Prediction,Sensitivity Analysis,Fault Detection and Correction