|
Radar
Dataflow Analysis for Concurrent Programs using Datarace Detection
Funded by NSF Award CCF-0811512
|
|
Overview
Advances in static algorithms for program optimization and error
detection have shown that compiler technology can dramatically improve
the reliability and performance of computer systems. However, most of
these algorithmic advances are limited to sequential programs
and ignore the challenges introduced by concurrency, where the
need for static checking and potential for optimization are the greatest.
The broad goal of Radar is to develop scalable and precise
analysis techniques for concurrent programs. Achieving scalability and
precision at the same time, however, is difficult because there is a
widely acknowledged tension between these two goals. To address this
challenge, our general methodology will be to design analyses that are
sound and scalable first (likely at the expense of precision), and
then to iteratively refine these analyses by empirically identifying
the common concurrent programming idioms where our analyses lose
precision, and developing analysis techniques targeted at these
idioms.
Our research will lead to the following contributions:
-
Radar framework. First, we will design, implement and
evaluate a framework called Radar for automatically generating
precise concurrent analyses from their sequential counterparts. This
will make concurrent analyses much easier to write, allowing compiler
writers and analysis writers to easily adapt current analyses to
account for concurrency.
- Improved software reliability.
Second, because our research plan involves testing and evaluating
Radar on a variety of analyses that are used in static checkers,
our research will result in sound and scalable checkers that are
precise in the face of concurrency. This in turn will lead to improved
software reliability.
- Empirical Understanding of Concurrency Patterns.
Third, by examining where our initially imprecise
(but sound and scalable) Radar framework loses
precision, we will identify and categorize common concurrency patterns
observed in real systems. This concurrency catalog of common
idioms will be useful beyond the confines of our research project, for
example in guiding the design of new languages or programming models
for concurrency, and in helping researchers and practitioners focus
their efforts on building software engineering tools for concurrency.
Publications
Code
- RELAY + RADAR v.0.10.03: gzip or
xz
- version 0.9.09: here
- version 0.8.08: here
- version 0.7.07: here