  Fixing software bugs has always been an essential and time-consuming process
in software development. Fixing concurrency bugs has become especially critical
in the multicore era. However, fixing concurrency bugs is challenging due to
non-deterministic failures and tricky parallel reasoning. Beyond correctly
fixing the original problem in the software, a good patch should also avoid
introducing new bugs, degrading performance unnecessarily, or damaging software
readability. Existing tools cannot automate the whole fixing process and
provide good-quality patches. We present RaceFixer, a tool that automates the
process of fixing one common type of concurrency bug: single-variable atomicity
violations. RaceFixer starts from the bug reports of an existing bug-detection
tool ThreadSanitizer. It augments these with static analysis to construct a
suitable patch for each bug report. It tries to combine the patches of multiple
bugs for better performance and code readability. Finally, we test RaceFixer on
benchmarks from TheadSanitizer.
