EventHealer: Bypassing data races in event-driven programs

•We propose a data race healing approach for event-driven programs.•The technique efficiently combines static binary analysis and dynamic analysis.•Data races are healed by dynamically injecting new disabling and enabling instructions.•A prototype implementation showed the effectiveness of the techn...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:The Journal of systems and software 2016-08, Vol.118, p.208-220
Hauptverfasser: Tchamgoue, Guy Martin, Kim, Kyong Hoon, Jun, Yong-Kee
Format: Artikel
Sprache:eng
Schlagworte:
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Beschreibung
Zusammenfassung:•We propose a data race healing approach for event-driven programs.•The technique efficiently combines static binary analysis and dynamic analysis.•Data races are healed by dynamically injecting new disabling and enabling instructions.•A prototype implementation showed the effectiveness of the technique. Data races represent a serious threat to the reliability of shared-memory concurrent programs including event-driven programs which handle asynchronous events. Despite the important number of existing testing and detection tools, data races often remain undetectable until the exploitation phase leading the application into unpredictable executions sometimes with disastrous consequences. To heal data races, current approaches which focus only on multithreaded programs are not directly applicable to event-driven programs since they are still incomplete or incur a high runtime overhead which makes them also inappropriate for the exploitation phase. Thus, this paper proposes a hybrid technique that statically disassembles a program binary to collect information about critical sections and event handlers accessing each shared variable, to dynamically prevent data races from occurring by injecting a disabling and an enabling instruction respectively before and after every critical section, in order to enforce the synchronization property of the potentially harmful events. We implemented a prototype of this technique for sequential programs with signal handlers on top of the Pin instrumentation framework. An evaluation of this prototype proved its effectiveness and showed that our technique incurs only a negligible overhead to the monitored program.
ISSN:0164-1212
1873-1228
DOI:10.1016/j.jss.2016.02.051