TY - JOUR
T1 - Dynamically tolerating and detecting asymmetric races
AU - Wang, Wenwen
AU - Wu, Chenggang
AU - Ratanaworabhan, Paruj
AU - Yuan, Xiang
AU - Wang, Zhenjiang
AU - Li, Jianjun
AU - Feng, Xiaobing
PY - 2014/8/1
Y1 - 2014/8/1
N2 - Asymmetric races are a common type of data races. They are triggered when a thread accesses a shared variable in a critical section, and another thread accesses the same shared variable not in any critical section, or in a critical section guarded by a different lock. Asymmetric races in multi-threaded programs are usually harmful. To solve the problem introduced by asymmetric races, ARace is proposed. ARace utilizes shared variable protecting and write buffer to dynamically tolerate and detect asymmetric races. Shared variable protecting is used to protect shared variables that are read-only and read-before-write in critical sections, and these shared variables should not be modified out of critical sections; write buffer is used to buffer the writing operations to shared variables in critical sections. ARace can not only tolerate asymmetric races triggered by shared variable accesses in and out of critical sections, but also detect asymmetric races triggered by shared variable accesses in concurrent critical sections. ARace can be directly applied to binary code and requires neither additional compiler support nor hardware support. In addition, an implementation based on dynamic binary instrumentation is also proposed. The experimental results demonstrate that ARace guarantees the tolerance and detection of asymmetric races while incurring acceptable performance and memory overhead.
AB - Asymmetric races are a common type of data races. They are triggered when a thread accesses a shared variable in a critical section, and another thread accesses the same shared variable not in any critical section, or in a critical section guarded by a different lock. Asymmetric races in multi-threaded programs are usually harmful. To solve the problem introduced by asymmetric races, ARace is proposed. ARace utilizes shared variable protecting and write buffer to dynamically tolerate and detect asymmetric races. Shared variable protecting is used to protect shared variables that are read-only and read-before-write in critical sections, and these shared variables should not be modified out of critical sections; write buffer is used to buffer the writing operations to shared variables in critical sections. ARace can not only tolerate asymmetric races triggered by shared variable accesses in and out of critical sections, but also detect asymmetric races triggered by shared variable accesses in concurrent critical sections. ARace can be directly applied to binary code and requires neither additional compiler support nor hardware support. In addition, an implementation based on dynamic binary instrumentation is also proposed. The experimental results demonstrate that ARace guarantees the tolerance and detection of asymmetric races while incurring acceptable performance and memory overhead.
KW - Asymmetric race
KW - Dynamic binary instrumentation
KW - Page protecting
KW - Tolerating and detecting
KW - Write buffer
UR - http://www.scopus.com/inward/record.url?scp=84907804429&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84907804429&partnerID=8YFLogxK
U2 - 10.7544/issn1000-1239.2014.20130123
DO - 10.7544/issn1000-1239.2014.20130123
M3 - Article
AN - SCOPUS:84907804429
SN - 1000-1239
VL - 51
SP - 1748
EP - 1763
JO - Jisuanji Yanjiu yu Fazhan/Computer Research and Development
JF - Jisuanji Yanjiu yu Fazhan/Computer Research and Development
IS - 8
ER -