Comparative Analysis of Dynamic Data Race Detection Techniques

by   Danial Entezari, et al.

The consequences of data races can be potentially very problematic [1], and it is important to determine what tools and methods are best at detecting them. The following conditions must be met for a data race to occur: two or more threads in a single process access the same memory location concurrently, at least one of the accesses is for writing, and the threads are not using any exclusive locks to control their accesses to that memory. This paper reveals the techniques and implementations of the two main methods for dynamic data race detection techniques; the happens-before and lockset methods, and produces an analysis for several tools that employ either (4, 5) or of both these methods (7.1) for detecting data races. This paper also reveals the extent to which dynamic data race detection (also called dynamic analysis) can identify harmful data races, how it can be implemented, and how it compares to other forms of data detection in terms of performance and accuracy.


What Happens - After the First Race? Enhancing the Predictive Power of Happens - Before Based Dynamic Race Detection

Dynamic race detection is the problem of determining if an observed prog...

Digital Image Forensics vs. Image Composition: An Indirect Arms Race

The field of image composition is constantly trying to improve the ways ...

C11Tester: A Race Detector for C/C++ Atomics Technical Report

Writing correct concurrent code that uses atomics under the C/C++ memory...

Ready, set, Go! Data-race detection and the Go language

Data races are often discussed in the context of lock acquisition and re...

Online Set-Based Dynamic Analysis for Sound Predictive Race Detection

Predictive data race detectors find data races that exist in executions ...

A Study of Real-World Data Races in Golang

The concurrent programming literature is rich with tools and techniques ...

Dala: A Simple Capability-Based Dynamic Language Design For Data Race-Freedom

Dynamic languages like Erlang, Clojure, JavaScript, and E adopted data-r...