Detecting Java']JavaScript Races That Matter

被引:22
|
作者
Mutlu, Erdal [1 ]
Tasiran, Serdar [1 ]
Livshits, Benjamin [2 ]
机构
[1] Koc Univ, Istanbul, Turkey
[2] Microsoft Res, Redmond, WA USA
关键词
!text type='Java']Java[!/text]Script; asynchrony; race detection; non-determinism;
D O I
10.1145/2786805.2786820
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
As JavaScript has become virtually omnipresent as the language for programming large and complex web applications in the last several years, we have seen an increase in interest in finding data races in client-side JavaScript. While JavaScript execution is single-threaded, there is still enough potential for data races, created largely by the non determinism of the scheduler. Recently, several academic efforts have explored both static and runtime analysis approaches in an effort to find data races. However, despite this, we have not seen these analysis techniques deployed in practice and we have only seen scarce evidence that developers find and fix bugs related to data races in JavaScript. In this paper we argue for a different formulation of what it means to have a data race in a JavaScript application and distinguish between benign and harmful races, affecting persistent browser or server state. We further argue that while benign races the subject of the majority of prior work do exist, harmful races are exceedingly rare in practice (19 harmful vs. 621 benign). Our results shed a new light on the issues of data race prevalence and importance. To find races, we also propose a novel lightweight runtime symbolic exploration algorithm for finding races in traces of runtime execution. Our algorithm eschews schedule exploration in favor of smaller runtime overheads and thus can be used by beta testers or in crowd-sourced testing. In our experiments on 26 sites, we demonstrate that benign races are considerably more common than harmful ones.
引用
收藏
页码:381 / 392
页数:12
相关论文
共 50 条
  • [31] Java']Javanni: A Verifier for Java']JavaScript
    Nordio, Martin
    Calcagno, Cristiano
    Furia, Carlo Alberto
    FUNDAMENTAL APPROACHES TO SOFTWARE ENGINEERING, FASE 2013, 2013, 7793 : 231 - 234
  • [32] Java与Javascript
    张光业
    微电脑世界, 1996, (11) : 62 - 65
  • [33] Java']JavaScript adventures
    Baldazo, R
    BYTE, 1996, 21 (08): : 117 - &
  • [34] Java']JavaScript fix
    Burge, MH
    DR DOBBS JOURNAL, 1996, 21 (08): : 12 - 12
  • [35] Java']JavaScript cookies
    Tichenor, CB
    DR DOBBS JOURNAL, 1997, 22 (05): : 42 - 45
  • [36] Java']Javascript complete
    DeLoach, S
    TECHNICAL COMMUNICATION, 1999, 46 (03) : 400 - 403
  • [37] Java']JavaScript fix
    McKenzie, N
    DR DOBBS JOURNAL, 2001, 26 (10): : 10 - 10
  • [38] Java']JavaScript revisited
    Udell, J
    BYTE, 1997, 22 (05): : 99 - &
  • [39] Java']JavaScript ROOT
    Bellenot, Bertrand
    Linev, Sergey
    21ST INTERNATIONAL CONFERENCE ON COMPUTING IN HIGH ENERGY AND NUCLEAR PHYSICS (CHEP2015), PARTS 1-9, 2015, 664
  • [40] Adventures in Java']JavaScript
    Moncur, M
    BYTE, 1996, 21 (12): : 20 - 20