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