{'fraction_non_alphanumeric': 0.020030816640986132, 'fraction_numerical': 0.0061633281972265025, 'mean_word_length': 5.013888888888889, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Automated data race bugs addition

A challenge faced by concurrency bug detection techniques is the lack of ground-truth corpora, i.e., a lot of true concurrency bugs, making it difficult to evaluate and verify these technologies and tools, e.g., to precisely measure their false negative and false positive rates. In this paper, we present DRInject, a novel dynamic debugging based technique for producing ground-truth corpora by automatically and quickly injecting lots of realistic data race bugs into program source code. Each data race bug is assured by injecting modifying code to a global variable in two concurrency threads. These bugs are realistic in that they are embedded deep with programs and are triggered by real inputs. We have injected over 600 data race bugs into 10 benchmark or real-world programs, including water-nsquared, X264 and libvips. Moreover, we evaluated four data race detectors using the produced buggy programs and found there are much improvement space for these tools. Preliminary experiments show that DRInject can inject data race bugs in large scale programs and evaluate detect tools with fundamental quantities like false negative and false positive rate, which forms the basis to generate large bug corpora for the future research in concurrency software.