[发明专利]基于多线程程序约束构建的数据竞争检测与证据生成方法有效
申请号: | 201410320943.2 | 申请日: | 2014-07-07 |
公开(公告)号: | CN104077144A | 公开(公告)日: | 2014-10-01 |
发明(设计)人: | 刘烃;张晓东;俞乐晨;刘沛;郑庆华 | 申请(专利权)人: | 西安交通大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 西安智大知识产权代理事务所 61215 | 代理人: | 段俊涛 |
地址: | 710049*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种基于多线程程序约束构建的数据竞争检测与证据生成方法,根据多线程程序语义构建约束表达式,将数据竞争检测问题转化为约束求解问题,采用约束求解器检测可能存在的数据竞争,并生成触发数据竞争的程序执行路径,首先插桩被检测程序,执行此程序并得到执行路径;其次根据多线程程序执行语义将执行路径转化为无量词一阶逻辑表达式,此约束表达式涵盖所有可行的线程交织;然后根据发生数据竞争时语句间时序关系构建数据竞争候选集合,生成候选发生竞争的条件;最后遍历候选集合判定是否存在数据竞争,如有则生成对应的证据序列,本方法可找出一次执行中所有的数据竞争且不存在误报情况,对每一个数据竞争都生成一个展示了数据竞争触发过程的证据序列。 | ||
搜索关键词: | 基于 多线程 程序 约束 构建 数据 竞争 检测 证据 生成 方法 | ||
【主权项】:
一种基于多线程程序约束构建的数据竞争检测与证据生成方法,其特征在于,包括如下步骤:S1)在给定输入下,通过执行已插桩的待测程序以生成路径记录文件,且识别出执行路径中公有变量的访问点以便于约束构建;S2)根据程序执行语义将执行路径中状态转移、线程交织关系转化为无量词一阶逻辑表达式,构建蕴含了所有可能的交织序列的多线程程序执行路径约束模型F;S3)将路径中所有线程上可能发生数据竞争的两点视为数据竞争候选,收集所有候选并构建数据竞争候选集合DRCS,同时根据数据竞争的定义构建每个候选的竞争发生条件ρ;S4)针对每一个候选竞争发生条件ρ,利用约束求解器验证F∧ρ是否有解;S5)如果有解,则表示此竞争条件会触发真实的数据竞争;如果无解,则表示此候选不会触发数据竞争;S6)当存在数据竞争时,输出该数据竞争的证据序列;S7)对于数据竞争候选集合DRCS,如果遍历结束,则输出所有结果;否则,继续遍历下一个竞争候选;S8)验证结束后,输出检测到的所有数据竞争以及对应的证据序列。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410320943.2/,转载请声明来源钻瓜专利网。