[发明专利]一种验证并发程序中违反原子性错误是否被正确修复的方法在审
| 申请号: | 201410709983.6 | 申请日: | 2014-11-28 |
| 公开(公告)号: | CN104536878A | 公开(公告)日: | 2015-04-22 |
| 发明(设计)人: | 徐宝文;周骏贵;时清凯;陈振宇;张驰;濮力;程秀才;谢佩章;王婧宇 | 申请(专利权)人: | 南京大学;江苏苏测软件检测技术有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 南京天翼专利代理有限责任公司 32112 | 代理人: | 奚铭 |
| 地址: | 210093 江*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 验证 并发 程序 违反 原子 错误 是否 正确 修复 方法 | ||
技术领域
本发明属于软件工程中程序分析与验证技术领域,尤其是并发软件的分析与验证领域;同时本发明亦属于软件工程中Bug修复验证领域。这些领域主要依托程序静态、动态亦或动静态结合的程序分析技术,对软件的正确性、修复的正确性进行验证。
背景技术
随着多核处理器的发展,并发程序,由于其高效性,广受青睐。但是,并发程序由于其通过不同线程间的通信,尤其是共享内存通信来保证程序中不同线程间的一致性,很难在编码过程中不产生Bug,原子性错误就是其中最主要的一类,约占所有并发错误的2/3。
原子性错误有如下几个模式,如表1,其中ei为事件,ti,mi,ai分别为其所对应的线程、所存取的内存位置及其存取类型,这些模式的完整性已得到了理论性的证明。
表1:原子性错误的各种模式
应用于并发程序的另一个技术为确定性回放技术(Deterministic Replay Technique)。该技术通过在程序运行时直接或者间接地记录程序中共享内存的执行顺序,在程序运行结束时产生执行日志(Log)。回放时,可以按照日志进行确定性的回放。实际上,执行日志(Log)是程序执行轨迹(Trace)的压缩版本,执行轨迹是执行时的事件序列,每个事件包含各种指令信息,如存取内存位置等。
一个执行轨迹(Trace)至少满足两个约束,方为合法。一是Happens-Before关系,包含以下三方面:
●若事件ei,ej属于同一个线程,且ei在ej前发生,那么在任何情况下ei在ej前发生;
●若事件ei开启了ej所在的线程,那么ei必须在ej前发生;
●若事件ej等待来在ei发送的信息,那么ei在ej前发生;
另一个约束为锁约束(Lock Constraint),即任何时刻,任何一个锁只能被一个线程所拥有,从而达到互斥的作用。
发明内容
本发明所要解决的技术问题是:帮助程序修复用户自动化验证其是否通过同步化技术正确修复了并发程序中原子性错误的问题。
本发明的技术方案为:一种验证并发程序中违反原子性错误是否被正确修复的方法,利用原始程序执行错误时的执行日志,结合原子性错误的各种模式构造新的、适合于修复后程序的执行日志,并通过观察修复后的程序是否能够按照新的日志正确执行来判断原子性错误是否被修复,包括以下步骤:
1)利用原始程序的错误执行日志以及修复后的程序,构造与错误执行日志对应同时又包含修复信息的执行轨迹,所述修复指同步化,所述修复信息指如何使用同步化来修复的信息,一个执行轨迹是一个事件序列,表示为δ=<ei>,其中每个事件ei包含下列属性:
ti:事件ei所属的线程;
mi:事件ei所存取的内存位置;
li:当事件ei执行时,其所拥有的锁;
ai:事件ei的存取类型,包括读,写,获取锁,释放锁,等待,通知,创建线程和等待线程结束8种类型;
2)利用所得执行轨迹,以及原子性错误的不同模式,构造适合于修复后程序的新执行轨迹:
21)使用步骤1)所构造的执行轨迹,首先根据一个并发程序必须满足的约束,即Happens-Before关系和锁约束构造一个有向无环图,该图中包含执行轨迹中的所有事件,事件用图的结点表示,且仅包含Happens-Before关系和锁约束所要求的事件间顺序关系,顺序关系用图的有向边表示;
22)根据原子性错误的各种模式,在步骤1)所构造的执行轨迹中搜索相应的事件序列;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学;江苏苏测软件检测技术有限公司;,未经南京大学;江苏苏测软件检测技术有限公司;许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410709983.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:系统测试方法及装置
- 下一篇:一种新型任务进度条、任务进度控制、预警的方法





