[发明专利]一种验证并发程序中违反原子性错误是否被正确修复的方法在审
| 申请号: | 201410709983.6 | 申请日: | 2014-11-28 |
| 公开(公告)号: | CN104536878A | 公开(公告)日: | 2015-04-22 |
| 发明(设计)人: | 徐宝文;周骏贵;时清凯;陈振宇;张驰;濮力;程秀才;谢佩章;王婧宇 | 申请(专利权)人: | 南京大学;江苏苏测软件检测技术有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 南京天翼专利代理有限责任公司 32112 | 代理人: | 奚铭 |
| 地址: | 210093 江*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | 一种验证并发程序中违反原子性错误是否被正确修复的方法,利用原始程序执行错误时的执行日志,结合原子性错误的各种模式构造新的、适合于修复后程序的执行日志,并通过观察修复后的程序是否能够按照新的日志正确执行来判断原子性错误是否被修复。用户在并发程序出错后,使用同步化方法修复原子性错误,本发明方法能够帮助用户在重复执行修复程序若干次后自动判断bug是否被正确修复。本发明方法不要求用户知道Bug的准确位置,符合用户检验错误是否被修复的习惯性方法。 | ||
| 搜索关键词: | 一种 验证 并发 程序 违反 原子 错误 是否 正确 修复 方法 | ||
【主权项】:
一种验证并发程序中违反原子性错误是否被正确修复的方法,其特征是利用原始程序执行错误时的执行日志,结合原子性错误的各种模式构造新的、适合于修复后程序的执行日志,并通过观察修复后的程序是否能够按照新的日志正确执行来判断原子性错误是否被修复,包括以下步骤:1)利用原始程序的错误执行日志以及修复后的程序,构造与错误执行日志对应同时又包含修复信息的执行轨迹,所述修复指同步化,所述修复信息指如何使用同步化来修复的信息,一个执行轨迹是一个事件序列,表示为δ=<ei>,其中每个事件ei包含下列属性:ti:事件ei所属的线程;mi:事件ei所存取的内存位置;li:当事件ei执行时,其所拥有的锁;ai:事件ei的存取类型,包括读,写,获取锁,释放锁,等待,通知,创建线程和等待线程结束8种类型;2)利用所得执行轨迹,以及原子性错误的不同模式,构造适合于修复后程序的新执行轨迹:21)使用步骤1)所构造的执行轨迹,首先根据一个并发程序必须满足的约束,即Happens‑Before关系和锁约束构造一个有向无环图,该图中包含执行轨迹中的所有事件,事件用图的结点表示,且仅包含Happens‑Before关系和锁约束所要求的事件间顺序关系,顺序关系用图的有向边表示;22)根据原子性错误的各种模式,在步骤1)所构造的执行轨迹中搜索相应的事件序列;23)不断的向有向无环图中添加符合原子性错误模式的边,直到其不能满足Happens‑Before关系和锁约束,输出一个新构造的有向无环图,判断新构造的有向无环图是否覆盖所有满足原子性错误的模式的边,如不能覆盖,则构造新的有向无环图来覆盖他们,直到构造得到的所有有向无环图覆盖所有满足原子性错误模式的边;24)对于步骤23)中的每一个有向无环图,继续向其中加入有向无环图不包含但原始执行轨迹包含的边,直到不能满足Happens‑Before关系和锁约束,最终输出该图的一个拓扑排序,即一个新执行轨迹;3)按照构造的新执行轨迹,执行修复后的程序,观察程序是否正常执行来判断原子性错误是否被修复。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学;江苏苏测软件检测技术有限公司;,未经南京大学;江苏苏测软件检测技术有限公司;许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410709983.6/,转载请声明来源钻瓜专利网。
- 上一篇:系统测试方法及装置
- 下一篇:一种新型任务进度条、任务进度控制、预警的方法





