[发明专利]一种并发程序数据竞争指令级定位方法有效

专利信息
申请号: 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/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top