发明名称 一种基于符号执行虚拟机的数据竞争检测与重放方法
摘要 本发明公开了一种嵌入式环境下并行程序数据竞争检测与重放的方法,结合软件调试与测试的需求,采用符号执行虚拟机方案,动态地监测程序的运行,收集程序的执行信息,并分析数据竞争。并且还能通过执行信息对程序进行确定性重放,使得程序的执行轨迹能够重现。功能包括:基于符号执行虚拟机的数据竞争检测、基于符号执行虚拟机的数据竞争重放功能。本发明可以发掘隐藏在程序中的数据竞争,防止多线程程序在运行时发生错误。
申请公布号 CN106294169A 申请公布日期 2017.01.04
申请号 CN201610679571.1 申请日期 2016.08.17
申请人 华中科技大学 发明人 李;李剑军;魏巍;何璐瑶;汪雄峰
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 华中科技大学专利中心 42201 代理人 朱仁玲
主权项 一种基于符号执行虚拟机的数据竞争检测与重放方法,其特征在于,包括以下步骤:(1)接收来自宿主机端的程序执行轨迹运行请求,并判断该请求是重放请求,还是检测请求,如果是重放请求,则进入步骤(2),否则进入步骤(5);(2)判断该重放请求对应的记录文件是否存在于磁盘中,如果存在则转入步骤(3),否则过程结束;(3)获取记录文件中的程序执行信息文件,通过获取符号执行虚拟机中的全局变量读写指令和/或多线程函数调用指令调用检测函数,以加载记录文件中线程指令之间的约束条件,并根据约束条件判断全局变量读写指令和/或多线程函数调用指令是否能够被执行,如果能则执行步骤(4),否则过程结束;(4)执行全局变量读写指令和/或多线程函数指令,过程结束;(5)在符号执行虚拟机中执行检测请求对应的多线程程序,监测多个线程之间对多线程程序中的全局变量访问,并记录多线程对全局变量访问的先后顺序,并将这些先后顺序信息记录到二进制文件中,以生成程序执行信息文件;(6)获取符号执行虚拟机中的指令信息,采用数据竞争检测算法检测指令信息中的全局变量读写,并利用多线程函数调用拦截功能调用指令信息中的多线程函数,以判断全局变量读写是否存在数据竞争,如果是则将数据竞争检测错误的信息报告给客户端,若程序执行未结束,则获取获得符号执行虚拟机的容器存放的下一条指令信息,并转到步骤(5)执行。
地址 430074 湖北省武汉市洪山区珞喻路1037号