Abstract

Data race occurs in a multi-threaded program when several threads simultaneously access the same memory location and at least one of them is a write access. Data races can damage global data structures and it's hard to detect them manually, so research in the area of automatic race detection methods has been carried out for more than 20 years. This article covers aspects of performance and precision of dynamic race detection in Java programs and proposes the idea of lowering the overheads of dynamic analysis using synchronization contracts. Synchronization contracts are mainly based on specifying pairs of methods, that being called from different threads provide synchronization between these threads. Contracts serve for exclusion of application's code parts that are not interesting from race detection perspective, for example - external libraries. In this paper we describe contracts specification language and some implementation details and discuss advantages and restrictions of our approach.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call