Practical initialization race detection for JavaScript web applications

Practical initialization race detection for JavaScript web applications
复制标题

DOI:
10.1145/3133890
复制
发表时间:
2017-10
影响因子:
--
通讯作者:
Christoffer Quist Adamsen;Anders Møller;F. Tip
Christoffer Quist Adamsen;Anders Møller;F. Tip
中科院分区:
--
文献类型:
--
作者:
Christoffer Quist Adamsen;Anders Møller;F. Tip

文献摘要

相似文献

事件种族是JavaScript Web应用程序中微妙错误的常见来源。已经开发了几种用于检测事件种族的自动化工具,但是实验表明它们的准确性通常很低。我们提出了一种新方法,该方法重点介绍了三类事件竞赛错误,这些错误通常在Web应用程序的初始化阶段出现:表单输入 - 撰写错误,晚期事件施加者注册错误和访问 - 定义错误。该方法基于一种动态分析,该分析结合了不利执行和近似执行。该方法的优势之一是它不需要浏览器修改,昂贵的模型检查或静态分析。在对100个广泛使用网站的评估中,我们的工具启动者报告了1085个初始化竞赛,同时提供了有关其原因和效果的信息解释。对其中218项报告的手动研究表明,其中111个导致未被发现的例外,至少47个表明影响网站功能的错误。
Event races are a common source of subtle errors in JavaScript web applications. Several automated tools for detecting event races have been developed, but experiments show that their accuracy is generally quite low. We present a new approach that focuses on three categories of event race errors that often appear during the initialization phase of web applications: form-input-overwritten errors, late-event-handler-registration errors, and access-before-definition errors. The approach is based on a dynamic analysis that uses a combination of adverse and approximate execution. Among the strengths of the approach are that it does not require browser modifications, expensive model checking, or static analysis. In an evaluation on 100 widely used websites, our tool InitRacer reports 1085 initialization races, while providing informative explanations of their causes and effects. A manual study of 218 of these reports shows that 111 of them lead to uncaught exceptions and at least 47 indicate errors that affect the functionality of the websites.