Run-time race conditions detection

Background: Significant amount of software errors in multithreaded applications are connected to incorrect data sharing between several threads. These errors are very easy to make and extreemly difficult to diagnose, due to probabilistic nature of occurance. In the same time, for embedded applications it is essential to find most of the problems before device distribution – because of difficulties with in-field firmware updates and complexities of problem reports handling. One of the promising Open Source tools for run-time application analysis is Valgrind. Valgrind is an award-winning suite of tools for debugging and profiling Linux programs. With the tools that come with Valgrind, you can automatically detect many memory management and threading bugs, avoiding hours of frustrating bug-hunting, making your programs more stable. You can also perform detailed profiling, to speed up and reduce memory use of your programs. The Valgrind distribution currently includes four tools: a memory error detector, a cache (time) profiler, a call-graph profiler, and a heap (space) profiler. It runs on the following platforms: X86/Linux, AMD64/Linux, PPC32/Linux, PPC64/Linux.

Problem statement: Despite the fact, that some work on Race Condition Detector for Valgrind was done in the past (Helgrind, DRD), up to now there is no industrial quality tool, which allows users to find this critical type of problems. Proposed project aims to develop an effective tool for Data Race Detection in a form of Valgrind plugin. The following items shall be provided: 1. Data race detection plugin for Valgrind, in a source code form, capable to work with complex threaded applications and detect all or almost all race conditions 2. Extension for KCachegrind framework (preferably) or standalone utility to display results of races detection in graphical form 3. Documentation in form of final report 4. Plugin source code shall be tested and working for all hardware platforms, supported by Valgrind

Next steps: Possible extensions of this project could be further improvements of Valgrind tools and utilities aimed to support different hardware platforms or to improve performance/effectiveness.