[发明专利]一种并发程序数据竞争指令级定位方法有效
申请号: | 201910347395.5 | 申请日: | 2019-04-28 |
公开(公告)号: | CN110059014B | 公开(公告)日: | 2022-09-27 |
发明(设计)人: | 孙家泽;阳伽伟;王曙燕 | 申请(专利权)人: | 西安邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 710121 陕西*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 针对并发程序数据竞争定位问题,公开了一种并发程序数据竞争指令级定位方法,属于软件测试技术领域。本方法首先利用数据竞争定义对并发程序动态二进制插桩过程中所得的指令信息进行数据竞争初步检测,同时为每条线程设置向量时钟来跟踪并记录线程访问共享内存的时间;然后通过happens‑before规则判断各条指令所在线程的向量时钟是否存在偏序关系来判断是否发生数据竞争,形成最终数据竞争定位报告。本发明提供了一种并发程序数据竞争指令级定位方法,并有效降低了检测误报率及漏报率,用于提高并发程序测试的精度及效率。 | ||
搜索关键词: | 一种 并发 程序 数据 竞争 指令 定位 方法 | ||
【主权项】:
1.一种并发程序数据竞争指令级定位方法,其特征包括以下步骤:(1)设被测并发程序P的指令数为inscount,线程数为n,利用二进制插桩工具PIN3.4对被测并发程序P中每条访问内存地址的指令进行动态插桩,指令的编号为num,第一条访问内存地址指令的num为1,后续指令依次类推,记录每条指令的指令地址ip、访问内存地址addr、读写操作op、所在线程编号tid以及对应的源码行号line;(2)针对被测并发程序P中某个被访问的共享内存S,创建向量时钟矩阵其中表示线程1的向量时钟,依此类推,表示线程n的向量时钟,第i个线程的向量时钟tij(j=1,2,...,n)表示线程i所记录的线程j访问共享内存S的时间,初始值设为0;(3)判断条件num=inscount,若该条件成立,进入步骤(9),否则每运行一条指令,其指令编号num=num+1,遍历当前指令INS与之前的所有指令,设置k初始值为1,若线程i中的指令访问共享内存S,则增加自己的时间戳tii=tii+1,当线程i与线程j同步运行时,线程i释放共享内存S后线程j开始访问共享内存S,线程j更新自己向量时钟中的tjj=tjj+1,并且同时将两个线程向量时钟的值更新为:即此时两个向量时钟中每个维度的较大值;若线程i与线程j不同步时,线程j更新自己向量时钟中的tjj=tjj+1,其它值不变,若被测程序运行过程中出现新的共享内存G,则创建新的向量时钟矩阵VGn×n,并设置初始值为0;(4)判断k是否等于当前指令的编号num,如果等于,跳回步骤(3),若不等于,进入步骤(5);(5)若当前指令INS的读写操作op为读操作,进入步骤(6),若为写操作,进入步骤(7);(6)如果第k条指令的读写操作op为读操作,则k=k+1,跳回步骤(4);若第k条指令的读写操作为写操作,进入步骤(7);(7)若当前指令与第k条指令的访问内存地址addr一致并且两者所在线程tid不同,进入步骤(8),否则k=k+1,跳回步骤(4);(8)设当前指令所在线程为e(e=1,2,...,n),第k条指令所在线程为q(q=1,2,...,n),判断线程e的向量时钟与线程q的向量时钟是否存在偏序关系,若存在,令k=k+1并跳回步骤(4),否则报告数据竞争,输出当前指令与第k条指令的num、指令地址ip与其对应的源码行号line,然后令k=k+1,跳回步骤(4);(9)被测程序动态执行结束,输出数据竞争报告。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安邮电大学,未经西安邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201910347395.5/,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置