Thesis Topic Details

Topic ID:
3544
Title:
Static and dynamic data races detection for C/C++ programs
Supervisor:
Yulei Sui
Research Area:
Program Analysis, Programming Languages, Compiler
Associated Staff
Assessor:
Jingling Xue
Topic Details
Status:
Active
Type:
R & D
Programs:
CS CE BIOM BINF SE
Group Suitable:
No
Industrial:
No
Pre-requisites:
Some understanding about data races, dynamic analysis and good software development skills with large systems
Description:
In the multicore era, concurrent programming, an effective way of utilising
computation resources, is more important than ever.
However, concurrency bugs such as data races are one of most severe defects that hamper concurrent programming.
A data race occurs when two or more threads access the same memory
location and at least one of them is a write. Data races,
as one of the major sources of concurrency bugs, are hard to find
during software testing since multi-threaded programs usually
exhibit an excessively large number of thread interleavings.

Existing dynamic race detectors (such as Google's ThreadSanitizer
and Intel's Parallel Inspector) detect data races by repeatedly running
such tools on different program inputs. In contrast, static analysis tools
can detect data races without actually running the program,
but may report a large number of false positives.

This project aims to develop a practical data-race detection tool
by combining static and dynamic analysis techniques to reduce
false positives and detect more data races that dynamic
analysis tools cannot find alone.


Finding and fixing concurrency bugs is one of the most difficult but attractive research problems.
Designing and implementing accurate and efficient analysis techniques for data races detection is highly demanded for modern software development. This work will contribute to a new solution by combining static and dynamic analysis for hunting data races in C/C++ + pthread programs in order to reduce false positives and discover more concurrency bugs.

This project will produce a tool to automatically detect data races in concurrent C/C++ + pthread programs.
It offers a good opportunity for you to learn about program analysis techniques for large-scale software systems and also to develop your knowledge and skills in concurrent programming.
Comments:
You will be working with a world-renowned research team which has published high-quality papers and has developed a series of program analysis techniques/tools.

The project will be conducted based on existing tools developed by our research group and the work will be in close cooperation with one or more researchers and PhD students working in this area.

The necessary guidance will be provided, and you will be given the chances to make practical impact to solve a challenging real-world problem.

ThreadSanitizer
https://code.google.com/p/thread-sanitizer/

Helgrind: a thread error detector
http://valgrind.org/docs/manual/hg-manual.html

LLVM Compiler
http://llvm.org/

Locksmith: Context-Sensitive Correlation Analysis for Race Detection
http://www.cs.umd.edu/~jfoster/papers/pldi06.html

If you want to discuss the topic, send me an email and we can make an appointment.
Past Student Reports
 
No Reports Available. Contact the supervisor for more information.

Check out all available reports in the CSE Thesis Report Library.

NOTE: only current CSE students can login to view and select reports to download.