[发明专利]一种并发程序数据竞争指令级定位方法有效
申请号: | 201910347395.5 | 申请日: | 2019-04-28 |
公开(公告)号: | CN110059014B | 公开(公告)日: | 2022-09-27 |
发明(设计)人: | 孙家泽;阳伽伟;王曙燕 | 申请(专利权)人: | 西安邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 710121 陕西*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 并发 程序 数据 竞争 指令 定位 方法 | ||
针对并发程序数据竞争定位问题,公开了一种并发程序数据竞争指令级定位方法,属于软件测试技术领域。本方法首先利用数据竞争定义对并发程序动态二进制插桩过程中所得的指令信息进行数据竞争初步检测,同时为每条线程设置向量时钟来跟踪并记录线程访问共享内存的时间;然后通过happens‑before规则判断各条指令所在线程的向量时钟是否存在偏序关系来判断是否发生数据竞争,形成最终数据竞争定位报告。本发明提供了一种并发程序数据竞争指令级定位方法,并有效降低了检测误报率及漏报率,用于提高并发程序测试的精度及效率。
技术领域
本发明属于软件测试技术领域,具体涉及到并发程序测试中数据竞争精确定位问题,提供了一种动态跟踪程序每条指令并遍历所有指令对来定位数据竞争的方法,主要解决在并发程序测试中如何检测发生数据竞争的指令所在位置的问题,提高软件测试精度及测试效率。
背景技术
在大数据时代,软件规模与数据量日益增长,计算机多核硬件也飞速发展,多线程并发程序带来的缺陷也很快蔓延开来,由于多线程程序内在的并发性和不确定性,这些缺陷难以检测、调试和修复,这些问题给并发程序的分析带来了巨大的挑战,软件的开发与维护人员需要耗费大量的时间和精力来检测、定位和修复这些问题。
数据竞争是多线程程序中常见的并发错误,它们中的许多可能会导致程序结果发生错误,更为严重地并发错误会直接导致程序和服务器崩溃,数据竞争不一定导致程序错误,因为有些程序员故意让程序有数据竞争以提高运行的效率,但是调查表明5%-24%的数据竞争会对程序产生坏影响。
目前,国内外已经提出了很多数据竞争检测和验证的方法,主要分为3类:静态数据竞争检测方法,动态数据竞争检测方法以及动静结合的数据竞争检测方法。1997年,Savage等人提出基于lockset的动态数据竞争检测方法Eraser,该方法在程序执行过程中维护每个线程当前的锁集信息,同时更新共享变量持有的锁集信息,当共享变量不再受到锁保护的时候,报告出数据竞争。Dinning、Mellor-Crummey和Perkovic等人于1990-1996年先后基于Lamport的happens-before关系提出了使用逻辑时钟来动态地检测数据竞争。Pozniansky(Djit+)、Flanagan(FastTrack)、Cai(Loft)以及Ok-Kyoon等人于2003年至2015年先后提出了改进后的基于happens-before关系的动态数据竞争检测方法。2016年,ZhenYang、Zhen Yu等人采用了动静结合的分析方法来检测数据竞争。2017年,Yu Guo、Yan Cai、Zijiang Yang等人提出基于抽样算法的数据竞争检测方法。
以上方法虽然能降低一定的误检及漏检并且能降低测试开销,但都只是在语句层次进行检测,无法实现对数据竞争指令对进行定位,为此,本发明以数据竞争定义和happens-before规则为基础,提出了一种指令级动态插桩并分析指令对的并发程序数据竞争定位方法,有助于并发程序数据竞争的精准定位。
发明内容
本发明主要解决的问题:现有的检测方法无法实现对并发程序数据竞争指令对进行定位,本发明将被测并发程序进行动态指令级插桩,以数据竞争定义和happens-before规则为基础,遍历所有指令对来分析是否发生数据竞争,为该问题提供一种精确并有效的数据竞争指令级定位方法。
本发明的技术方案:一种并发程序数据竞争指令级定位方法,其特征包括以下步骤:(1)设被测并发程序P的指令数为inscount,线程数为n,利用英特尔公司推出的二进制插桩工具PIN3.4对被测并发程序P中每条访问内存地址的指令进行动态插桩,指定每条指令的编号num,第一条运行指令的num为1,记录每条指令的指令地址ip、访问内存地址addr、读写操作op、所在线程编号tid以及对应的源码行号line;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安邮电大学,未经西安邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910347395.5/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置