1
Analysis on Interactive Data Race Checker: IDRC
Md A. Obaida
1
, Israt Jahan
2
, Sayeed Z. Sajal
3
1. Dept. of Electrical and Computer Engineering
Texas A&M University
College Station, TX, USA
tareqobaida@tamu.edu
2. Dept. of Computer Science and Operations Research
North Dakota State University
Fargo, ND, USA
i.jahan@ndsu.edu
3. Dept. of Math and Computer Scinece
Minot State University
Minot, ND, USA
sayeed.sajal@minotstateu.edu
Abstract—Parallel programming is becoming more and more
prevalent in this era of concurrent programming. Because of
the nondeterministic nature of parallel programming, it is noto-
riously difficult to debug concurrency bugs, moreover attempt
to fix one bug may result in deadlock or other concurrency
bugs.Though many static and dynamic data race detection tool is
proposed in recent years, none of them is interactive in nature.
In this context, a tool for early detection of data races while
programmer is coding can be extremely valuable. This paper
presents “Interactive Data Race Checker” (IDRC) an interactive
tool in the form of Eclipse plugin to provide early warning to
Java programmer and give opportunity to fix data races before
it become too complicated. IDRC runs static analysis whenever
it detects any change in Eclipse Java project, creates customized
data race marker and provides information about the data race.
I. I NTRODUCTION
Eclipse is the most popular IDE for Java and has extensive
support to extend features via plugin development. Though
Java has built in support for parallel programming in the form
of lock allocation [1] , it’s always susceptible to human error
to allocate lock properly. As program grows more complex,
so does the difficulty in finding data race bugs. Even using
best data race detection tool to fix data race bugs can be
quite cumbersome because fixing data race is still manual
work and there is no reliable tool for automatic fixing up to
now. Moreover it may take long time and sometimes fixing
one bug results in another bug. Detecting data race at the
development time can make the programmer’s life easier.
However, interactive data race detection requires static analysis
which should be precise enough and fast as well. Several
researches have been conducted in past few years to detect
data races by static analysis. Very few of them provided a
user friendly interface for developers to give early warning
while programming. In case of Eclipse, the most popular IDE
for Java developers, there is no such interface or plugin for
data race detection which is incremental in nature.A number of
tools have been developed to detect data race, both statically
and dynamically. TACLE Project [2] developed a plugin for
performing type analysis and for constructing the call graph
for a Java project inside the JDT environment. J. Lhotak and
O. Lhotak [3] developed program analysis visualization tools
called Soot-Eclipse plugin. TACLE provides support for only
RTA analysis, on the other hand, Soot based plugin supports
points-to analysis.Those plugins are not incremental in the
sense that the user has to run the tool after completing his
code and there is no way to give indication of potential
data races when programmer is editing the code. Flanagan
et al. present Type-Based Race Detection for Java which is
based on a formal type system. [4] It supports many common
synchronization patterns but not the complete set of patterns.
M. Naik et al. [5] present a technique of static analysis for data
race detection. Their technique is comprised of several static
analyses to successively reduce the pairs of memory accesses
potentially involved in a race. L. Halpert et al. present an
approach of automatically allocating lock to group of critical
sections, connected with interference edge and leaving single
critical section (CS) unlocked. They incorporated thread local
object analysis and may happen in parallel analysis in their
approach which is effective in reducing analysis cost and false
positives. Eraser [6]is a dynamic race detection tool based on
lockset algorithm which checks if all shared-memory accesses
follow a consistent locking discipline. FastTrack [7] is another
dynamic analysis tool which introduced the concept of Epoch.
Hybrid Dynamic Data Race Detection [8] is a combination of
lockset based detection and happens-before based detection.
Eectice race detection using aspectj [9] , analysis of framework
[10] have been studied. Recently, data race detection were
studied using Transactional Memory [11], [12]
IDRC responds to every change made in Java project related
to data race. It runs analysis on Abstract Syntax Tree (AST)
provided by Eclipse. The AST is a detailed tree representation
of the Java source code. Each specific AST node provides
978-1-5090-4767-3/17/$31.00 ©2017 IEEE
265