[发明专利]基于程序约束构建的多线程程序输出唯一性检测与证据生成方法有效
申请号: | 201410320129.0 | 申请日: | 2014-07-07 |
公开(公告)号: | CN104077226A | 公开(公告)日: | 2014-10-01 |
发明(设计)人: | 刘烃;张晓东;刘沛;俞乐晨;郑庆华 | 申请(专利权)人: | 西安交通大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 西安智大知识产权代理事务所 61215 | 代理人: | 段俊涛 |
地址: | 710049*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 程序 约束 构建 多线程 输出 唯一 检测 证据 生成 方法 | ||
1.一种基于程序约束构建的多线程程序输出唯一性检测与证据生成方法,其特征在于,包括如下步骤:
S1)将监控代码植入待测程序,以记录程序的执行过程;
S2)在给定输入下,执行已插桩程序,生成路径记录文件;
S3)预处理执行路径以便于约束构建;
S4)在程序运行结尾处自动添加属性条件,针对多线程程序的运行输出,将输出唯一性条件ρ以assert的格式插入程序;
S5)根据程序执行语义将执行路径中状态转移、线程交织关系转化为无量词一阶逻辑表达式,构建蕴含了所有可能的交织序列的多线程程序执行路径约束模型F;
S6)针对唯一性条件ρ,利用约束求解器验证是否有解。
S7)如果有解,则表示存在多种不同的输出,并生成证据序列;如果无解,则表示此输出在此输入下唯一。
2.根据权利要求1所述基于程序约束构建的多线程程序输出唯一性检测与证据生成方法,其特征在于,所述步骤S1)中插桩工作并非在源码或者二进制的层面上进行,而是在字节码的层面上完成,具体实施方法为:首先将待测多线程程序源码转化为中间字节码格式,即LLVM字节码;然后将具有监控功能的语句植入待测程序;最后将植入监控代码的字节码链接成可执行程序。
3.根据权利要求1所述基于程序约束构建的多线程程序输出唯一性检测与证据生成方法,其特征在于,所述步骤S3)中预处理包括提取共享变量以识别出执行路径中公有变量的访问点以及切片以去除与验证属性无关的执行语句。
4.根据权利要求1所述基于程序约束构建的多线程程序输出唯一性检测与证据生成方法,其特征在于,所述步骤S4)中自动识别出输出变量且对其构建输出唯一性验证条件ρ。
5.根据权利要求1所述基于程序约束构建的多线程程序输出唯一性检测与证据生成方法,其特征在于,所述步骤S5)中多线程程序执行路径约束模型F蕴含了执行路径所有可能的交织序列,包括五种约束:路径表达式、内存模型约束、读写关系约束、偏序约束以及同步语义约束,定义分别如下:
1)路径表达式:描述线程内部的定义-使用链,以及控制线程内部状态转换;
2)内存模型约束:表示程序中语句、变量之间的关系,采用顺序一致性的语义,顺序一致性规定CPU按照代码中语句的顺序来执行程序;
3)读写关系约束:定义线程间的定义-使用链,规定共享变量所读取到的值,必须来自初始值以及最近的写值;
4)偏序约束:定义线程之间创建线程与终止线程操作语句于被操作线程语句之间的时序关系;
5)同步语义约束:定义线程之间同步控制操作语句之间的时序关系;
其中,定义-使用链为:将每一个线程序列转化为SSA格式,对于每一个SSA格式的执行序列,除去共享访问点都是一个完整的定义-使用链。
6.根据权利要求5所述基于程序约束构建的多线程程序输出唯一性检测与证据生成方法,其特征在于,所述步骤S5)中多线程程序执行路径约束模型F的构建方法包括以下操作:
1)计算路径表达式,以控制线程内部状态转移;
2)计算内存模型约束,以线程内限制语句之间的关系;
3)计算读写关系约束,以建立线程间的定义-使用链;
4)计算同步语义约束,以定义线程间同步关系;
5)计算偏序约束,以描述线程创建与终止的语义;
最后,结合以上五种约束,构成约束模型F。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410320129.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种香兰素的制备方法
- 下一篇:超抗扭多台肩的全密封锥管螺纹连接装置