  Data races are a real problem for parallel software, yet hard to detect.
Sound predictive analysis observes a program execution and detects data races
that exist in some other, unobserved execution. However, existing predictive
analyses miss races because they do not scale to full program executions or do
not precisely incorporate data and control dependence.
  This paper introduces two novel, sound predictive approaches that incorporate
data and control dependence and handle full program executions. An evaluation
using real, large Java programs shows that these approaches detect more data
races than the closest related approaches, thus advancing the state of the art
in sound predictive race detection.
