基于回放分析的并发错误重现与检测

来源 :上海交通大学 | 被引量 : 0次 | 上传用户:jxgalcj
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着多线程等并发技术的发展,多线程编程技术被越来越广泛地应用于实际中。多线程技术通过提高CPU的利用率,减少资源的浪费,从而大大提高了程序执行的效率。各种编程语言,如Java, C++等,也提出了各自的并发编程模型。这些并发编程模型,也被越来越多地应用于实际的开发之中,并且被证明可以极大地提高程序运行速度。但是与此同时,并发程序也由于其执行行为的不确定性,在发生错误后很难被开发人员定位;而错误发生后也往往需要花费开发人员大量的时间来重现错误发生的场景。典型的如数据竞争(Data Race),死锁(Deadlock)以及操作原子性的违反(Atomicity Violation),这些并发程序独有的错误大大增加了测试及修正并发程序的难度。基于以上几点,很大一部分传统的程序测试方法在并发程序中并不适用。而线程间调度的不可确定性,也对并发程序的测试提出了新的要求。为了更加方便地调试并发程序,记录及回放(Record & Replay)的方法被引入到了并发程序的测试之中。对于并发程序的记录及回放,目前存在两种方法:基于内容(Content-based)的以及基于顺序(Order-based)的方法。基于内容的方法可以准确地重现对于内存的读写内容,而基于顺序的方法则关注于线程间(inter-thread)事件的执行顺序。这两种方法有各自的优点及局限性:基于内容的方法由于内存读写数量的巨大,往往会生成过大的记录文件;而基于顺序的记录回放方法则需要线程执行过程中准确地重现线程间所有事件的执行顺序。对于并发程序中的程序错误(Software Bugs),目前已有的方法主要是通过长时间的压力测试(Stress Testing)重现错误。但是这样的方法除了需要耗费大量的时间以外,也无法保证能重现特定的并发错误。基于以上的需求,本文特别关注于并发程序中对于程序错误的记录及确定性的回放。使用Soot对Java字节码进行插装,将在原始程序的基础上生成两个版本的程序:记录及回放版本。运行记录版本的程序,将在程序运行同时记录下线程间事件的执行逻辑顺序。通过研究及扩展单线程程序错误重现架构,本文提出了工具ConCrash以在并发程序崩溃后自动生成多线程的测试用例以及程序运行的逻辑时钟顺序记录文件。通过运行这些测试用例并调用回放版本的程序,并发程序的崩溃场景可以被确定性地重现。本文的主要贡献在于以下几点:提出了一个轻量级及可扩展的对于多线程程序错误的捕捉重现技术,并可以同时与其他静态分析的前端技术相结合。实现了基于Java语言的原型,ConCrash,并且可以在程序崩溃后自动生成模拟多线程场景的JUnit测试用例。通过对基准程序及实际应用的测试使用,全面评估了ConCrash的有效性及性能额外开销,提出了未来工作的方向。
其他文献
在现代服务业的多数服务业态中,为了完成一个业务目标,往往需要集成多个单项服务,提供组合服务。北京邮电大学作为牵头单位与五家单位共同承担了国家科技支撑计划重大项目《
我国正在全面建设和谐社会,要求社会和谐稳定健康发展,因此对各类公众场所的安全系数和安全保障越来越高。为了让公众享受一个安全和谐的环境,并让公共场所有一个和谐的安防
虚拟化技术,自1959年由Christopher Strachey于巴黎举行的国际信息处理大会上所做的《Time sharing in large, fast computers》报告中首次提出,到现在已经取得了突飞猛进的
随着Internet的迅速发展,网络信息不断膨胀。为了提供高效、准确的信息服务,我们需要对网络中繁杂的信息进行合理的组织与分类。而文本分类作为信息过滤、搜索引擎、文本数据
学位
AdHoc网络是指由一组带有无线通信收发装置的移动节点组成的一个多跳、自组织、无中心网络,它作为一种新型多跳自组网络逐渐成为研究的热点。由于AdHoc网络中的节点能任意快速
决策树是一种有效的数据挖掘方法,进一步改进决策树,提高决策树的性能,使其更加适合数据挖掘技术的发展要求,具有重要的理论和实践意义。本文对决策树算法中涉及的样本筛选方
本文研究了基于优化算法的蛋白质质谱数据的特征选择问题。蛋白质质谱技术对于早期癌症的诊断和识别生物标记物是一种革命性的研究工具。但是数据的高维性和小样本问题对于模
数字认证是信息安全的一个重要领域,相对传统的认证方式安全性更高。在线认证是网络安全的基础,离线认证使离线实体也能进行数字认证,一些传统的认证方式也引入数字认证。移动互
随着网络及其技术的迅速发展,WEB应用被广泛应用于国计民生的各个领域。与此同时,随着需求量与应用领域的不断扩大,对WEB应用的正确性、有效性和安全性等方面都提出了越来越高的