TY - GEN
T1 - Dynamically detecting and tolerating IF-Condition Data Races
AU - Qi, Shanxiang
AU - Muzahid, Abdullah A.
AU - Ahn, Wonsun
AU - Torrellas, Josep
PY - 2014
Y1 - 2014
N2 - An IF-Condition Invariance Violation (ICIV) occurs when, after a thread has computed the control expression of an IF statement and while it is executing the THEN or ELSE clauses, another thread updates variables in the IF's control expression. An ICIV can be easily detected, and is likely to be a sign of a concurrency bug in the code. Typically, the ICIV is caused by a data race, which we call IF-Condition Data Race (ICR). In this paper, we analyze the data races reported in the bug databases of popular software systems and show that ICRs occur relatively often. Then, we present two techniques to handle ICRs dynamically. They rely on simple code transformations and, in one case, additional hardware help. One of them (SW-IF) detects the races, while the other (HW-IF) detects and prevents them. We evaluate SW-IF and HW-IF using a variety of applica- tions. We show that these new techniques are effective at finding new data race bugs and run with low overhead. Specifically, HW-IF finds 5 new (unreported) race bugs and SW-IF finds 3 of them. In addition, 8-threaded executions of SPLASH-2 codes show that, on average, SW-IF adds 2% execution overhead, while HW-IF adds less than 1%.
AB - An IF-Condition Invariance Violation (ICIV) occurs when, after a thread has computed the control expression of an IF statement and while it is executing the THEN or ELSE clauses, another thread updates variables in the IF's control expression. An ICIV can be easily detected, and is likely to be a sign of a concurrency bug in the code. Typically, the ICIV is caused by a data race, which we call IF-Condition Data Race (ICR). In this paper, we analyze the data races reported in the bug databases of popular software systems and show that ICRs occur relatively often. Then, we present two techniques to handle ICRs dynamically. They rely on simple code transformations and, in one case, additional hardware help. One of them (SW-IF) detects the races, while the other (HW-IF) detects and prevents them. We evaluate SW-IF and HW-IF using a variety of applica- tions. We show that these new techniques are effective at finding new data race bugs and run with low overhead. Specifically, HW-IF finds 5 new (unreported) race bugs and SW-IF finds 3 of them. In addition, 8-threaded executions of SPLASH-2 codes show that, on average, SW-IF adds 2% execution overhead, while HW-IF adds less than 1%.
UR - http://www.scopus.com/inward/record.url?scp=84903978277&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84903978277&partnerID=8YFLogxK
U2 - 10.1109/HPCA.2014.6835923
DO - 10.1109/HPCA.2014.6835923
M3 - Conference contribution
AN - SCOPUS:84903978277
SN - 9781479930975
T3 - Proceedings - International Symposium on High-Performance Computer Architecture
SP - 120
EP - 131
BT - 20th IEEE International Symposium on High Performance Computer Architecture, HPCA 2014
PB - IEEE Computer Society
T2 - 20th IEEE International Symposium on High Performance Computer Architecture, HPCA 2014
Y2 - 15 February 2014 through 19 February 2014
ER -