CN111159022A - 基于单变量访问序模式的中断数据访问冲突检测方法及装置 - Google Patents
基于单变量访问序模式的中断数据访问冲突检测方法及装置 Download PDFInfo
- Publication number
- CN111159022A CN111159022A CN201911329257.0A CN201911329257A CN111159022A CN 111159022 A CN111159022 A CN 111159022A CN 201911329257 A CN201911329257 A CN 201911329257A CN 111159022 A CN111159022 A CN 111159022A
- Authority
- CN
- China
- Prior art keywords
- access
- function
- reachable
- graph
- reachable access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3632—Software debugging of specific synchronisation aspects
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种基于单变量访问序模式的中断数据访问冲突检测方法及装置。所述方法包括:获取多个源文件;对每个所述源文件的函数进行可达访问分析,生成每个所述源文件的可达访问图;使用所述多个源文件的函数调用关系和各所述源文件的函数摘要,更新各所述可达访问图;遍历各更新后的可达访问图,匹配单变量访问序模式,得到中断数据访问冲突检测结果。本发明实施例对单文件进行独立分析,避免了跨文件的分析时在不同文件交替分析,减小了内存占用的峰值,可适用于大规模程序。
Description
技术领域
本发明涉及计算机软件测试与验证技术领域,特别是一种基于单变量访问序模式的中断数据访问冲突检测方法及装置。
背景技术
中断驱动的嵌入式软件已广泛应用于航天、医疗、IoT等领域,这些领域对安全性的要求高,软件失效或故障都可能产生灾难性后果。中断数据访问冲突是中断驱动的嵌入式程序的一种并发缺陷,它出现在主程序与中断,或者中断与中断之间对同一共享数据进行访问而导致非预期的异常行为时。这些异常行为可能导致关键数据被意外修改,严重时致软件失效,甚至出现灾难性后果。但中断数据访问冲突出现概率小,并且由于并发的不确定性往往难以复现,是航天、汽车、IoT等嵌入式软件中的关键可信问题之一。
对中断数据访问冲突的检测方法,已有一些研究工作。专利CN102063328A公开了一种用于检测中断驱动型程序数据竞争的系统,专利CN103778062 A公开了一种基于抽象解释的多中断程序数据访问冲突检测方法,International Symposium on SoftwareTesting and Analysis(ISSTA 2017)中Wang等人的“Automatic Detection andValidation of Race Conditions in Interrupt-Driven Embedded Software”提出一个结合检测和验证的框架,使用静态分析生成潜在的数据竞争,再使用虚拟仿真平台动态验证。以上几项工作都是以检测数据竞争作为目标,会产生大量误报。
软件学报(2016年第3期)中“基于变量访问序模式的中断数据竞争检测方法”指出,中断驱动型程序中的数据竞争大多数都是良性的,并提出了刻画中断数据访问冲突问题的7种缺陷模式。其中,单变量访问序模式是最重要的缺陷模式之一,指的是同一变量的3次连续并发访问中的4种访问序组合(RWW,WWR,RWR,WRW)会造成数据访问冲突。该文献针对单变量访问序模式,提出了基于抽象解释的静态检测方法,将3次访问序的路径匹配问题转换为一个可达访问集的迭代求解问题,并对每个函数的迭代求解结果进行摘要以避免迭代中的重复分析,可有效检测出违反单变量访问序模式的中断数据访问冲突。但该方法还存在以下问题:
1)当存在调用关系的函数分散在不同的源文件时,过程间分析时需要重复、频繁地在不同文件中交替分析,存在性能开销大的问题;
2)采用的函数摘要是一种可达访问的完整摘要,摘要信息冗余,内存有限时摘要命中率低,更新频繁;
3)在极端情况下,会将所有源代码都加载在内存中分析,遇到大规模程序时,峰值内存消耗大,分析性能降低明显。
发明内容
本发明解决的技术问题是:克服现有技术中的不足,提供了一种基于单变量访问序模式的中断数据访问冲突检测方法及装置。
本发明的技术解决方案是:
为了解决上述技术问题,本发明实施例提供了一种基于单变量访问序模式的中断数据访问冲突检测方法,包括:
获取多个源文件;
对每个所述源文件的函数进行可达访问分析,生成每个所述源文件的可达访问图;
使用所述多个源文件的函数调用关系和各所述源文件的函数摘要,更新各所述可达访问图;
遍历各更新后的可达访问图,匹配单变量访问序模式,得到中断数据访问冲突检测结果。
优选地,在所述获取多个源文件之后,还包括:
收集所述多个源文件分别对应的被调用函数的函数摘要;所述函数摘要为可达访问图的出口结点的可达访问集。
优选地,所述对每个所述源文件的函数进行可达访问分析,生成每个所述源文件的可达访问图,包括:
配置主程序入口、中断入口和中断优先级;
分别对所述主程序入口的函数和所述中断入口的函数涉及的源文件,以及各所述源文件中的函数进行不考虑函数调用的可达访问分析,生成各所述可达访问图。
优选地,在所述使用所述多个源文件的函数调用关系和各所述源文件的函数摘要,更新各所述可达访问图之后,还包括:
使用所述函数摘要更新调用函数所在的可达访问图;
在对各所述可达访问图进行更新时,记录所有函数摘要被调用前的程序点的可达访问集;
采用所述可达访问集,作为所述被调函数的可达访问图的入口值再更新,使所有可达访问图达到稳定状态。
优选地,所述遍历各更新后的可达访问图,匹配单变量访问模式,得到中断数据访问冲突检测结果,包括:
通过所述中断入口和所述中断优先级,对被打断的主函数和中断函数进行匹配;
遍历主函数的可达访问图,计算出同一变量的连续两次访问,再匹配所述中断函数中的内存访问,生成数据访问冲突序。
为了解决上述技术问题,本发明实施例提供了一种基于单变量访问序模式的中断数据访问冲突检测装置,包括:
源文件获取模块,用于获取多个源文件;
可达访问图生成模块,用于对每个所述源文件的函数进行可达访问分析,生成每个所述源文件的可达访问图;
可达访问图更新模块,用于使用所述多个源文件的函数调用关系和各所述源文件的函数摘要,更新各所述可达访问图;
检测结果获取模块,用于遍历各更新后的可达访问图,匹配单变量访问序模式,得到中断数据访问冲突检测结果。
优选地,所述装置还包括:
函数摘要收集模块,用于收集所述多个源文件分别对应的被调用函数的函数摘要;所述函数摘要为可达访问图的出口结点的可达访问集。
优选地,所述可达访问图生成模块包括:
入口优先级配置单元,用于配置主程序入口、中断入口和中断优先级;
可达访问图生成单元,用于分别对所述主程序入口的函数和所述中断入口的函数涉及的源文件,以及各所述源文件中的函数进行不考虑函数调用的可达访问分析,生成各所述可达访问图。
优选地,还包括:
可达访问图更新模块,用于使用所述函数摘要更新调用函数所在的可达访问图;
可达访问集记录模块,用于在对各所述可达访问图进行更新时,记录所有函数被调用前的程序点的可达访问集;
可达访问图再更新模块,用于采用所述可达访问集,作为所述被调函数的可达访问图的入口值再更新,使所有可达访问图达到稳定状态。
优选地,所述检测结果获取模块包括:
函数匹配单元,用于通过所述中断入口和所述中断优先级,对被打断的主函数和中断函数进行匹配;
访问冲突序生成单元,用于遍历主函数的可达访问图,计算出同一变量的连续两次访问,再匹配所述中断函数中的内存访问,生成数据访问冲突序。
本发明与现有技术相比的优点在于:
1、独立分析每个文件,分析完所有文件后再使用函数摘要合并更新的方法,避免了存在跨文件的分析时在不同文件交替分析,减小了内存占用的峰值;
2、函数摘要仅使用可达访问图的出口结点的可达访问值,占用内存小,可同时载入大量的函数摘要,减少了因内存不足而频繁更换内存中的摘要造成的时间消耗;
3、每个函数的可达访问图都作为完全独立的模块,可灵活地载入内存或者写入磁盘,可适用于大规模程序。
附图说明
图1为本发明实施例提供的一种基于单变量访问序模式的中断数据访问冲突检测方法的步骤流程图;
图2为本发明实施例提供的单变量访问序模式的示意图;
图3为本发明实施例提供的实例程序中main函数不考虑函数调用的可达访问图的示意图;
图4为本发明实施例提供的可达访问分析的流程图;
图5为本发明实施例提供的合并更新可达访问图的流程图;
图6为本发明实施例提供的实例程序的示意图;
图7为本发明实施例提供的一种基于单变量访问序模式的中断数据访问冲突检测装置的结构示意图。
具体实施方式
下面将结合本发明的实施例中的附图,对本发明的实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的实施例一部分实施例,而不是全部的实施例。基于本发明的实施例中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明的实施例保护的范围。
实施例一
参照图1,示出了本发明实施例提供的一种基于单变量访问序模式的中断数据访问冲突检测方法的步骤流程图,如图1所示,该基于单变量访问序模式的中断数据访问冲突检测方法具体可以包括如下步骤:
步骤101:获取多个源文件;
步骤102:对每个所述源文件的函数进行可达访问分析,生成每个所述源文件的可达访问图;
步骤103:使用所述多个源文件的函数调用关系和各所述源文件的函数摘要,更新各所述可达访问图;
步骤104:遍历各更新后的可达访问图,匹配单变量访问序模式,得到中断数据访问冲突检测结果。
接下来结合附图对本发明实施例进行如下详细描述。
先独立地对单个文件的函数进行可达访问分析,生成不考虑函数调用的可达访问图(RAG),并收集简单的函数摘要;再用函数调用关系和函数摘要更新可达访问图;最后遍历可达访问图,使用单变量访问序模式进行匹配,识别出中断数据访问冲突。
ni为变量x在nj的可达访问(Reaching Access,RA),当且仅当存在一条有效路径序列p,表示为[n1,n2,…,nm],且在路径p中ni为nj(1≤i<j≤m)之前对x访问的最近的结点。记为ni→xnj。结合结点的可达访问集和分析结点后产生的变量访问,既可得出同一变量的连续两次访问。如图2所示。
整个方案的操作步骤如下:
1、配置主程序入口,中断入口,中断优先级。
2、分别对主程序入口函数和中断入口函数涉及的文件以及其中的函数进行不考虑函数调用的可达访问分析,并生成可达访问图。
a)通过词法分析,语法分析,控制流分析将源文件转换为控制流图。
b)使用前向数据流迭代分析,生成可达访问图。其中数据流分析的域为程序中所有变量的访问,交汇操作为或(U)。可达访问图是在控制流图的基础上加上每个程序点的可达访问集合。其中可达访问值为三元组<V,AT,L>的集合,表示变量V在位置L进行了访问操作AT。图4表示了这个分析的流程图。
c)收集所有被调函数的摘要,摘要为函数可达访问图的出口结点的可达访问集。图4为这个更新过程的流程图。
3、使用函数调用关系,对可达访问图进行更新,并在更新时记录所有函数被调用前的程序点的可达访问集。
a)遍历步骤2生成的可达访问图,遇到函数调用结点时使用函数摘要更新调用函数后的可达访问值,并将整个可达访问图迭代更新到稳定状态。假设S为CFG中的一条语句,且为函数调用语句,被调函数为F。Summary(F)表示函数F的摘要,摘要在步骤2,d中收集。IN(S)表示分析语句S前的程序点的可达访问集,OUT(S)指的是分析语句S后的程序点的可达访问集。计算规则为:OUT(S)=IN(S)Summary(F)。其中表示对IN(S)和Summary(F)对同一变量的可达访问值的选择,选择规则如下:
i、IN(S)中存在的变量的可达访问,而Summary(F)不存在,表示被调函数没有该变量的访问。选择IN(S)中该变量的可达访问值。
ii、IN(S)中不存在,而Summary(F)存在的变量的可达访问,表示被调用函数中对该变量有访问。选择Summary(F)中该变量的可达访问值。
iii、IN(S)存在,Summary(F)也存在的变量的可达访问,表示被调函数中产生了新的访问。选择Summary(F)中该变量的可达访问值。
iv、IN(S)中存在的变量的可达访问,Summary(F)既存在一条边有新的可达访问,也有一条边没有生成新的可达访问,表示该变量可能有产生新的访问,也可能不产生。同时选择IN(S)和Summary(F)中该变量的可达访问值。
b)记录所有函数被调用前的可达访问集,并对同一个函数的多个可达访问集使用或操作进行合并。
4、使用步骤4,b中记录的函数被调用前的可达访问集,作为被调函数可达访问图的入口值进行更新,并将整个可达访问图迭代到稳定状态。
5、通过中断入口和优先级,确定被打断的主函数和中断函数进行匹配。遍历主函数的可达访问图,计算出同一变量的连续两次访问,再匹配中断函数里的内存访问,生成数据访问冲突序。匹配规则如下:
a)如果连续两次访问分别是R,W或者R,W或者R,R,中断匹配一个访问方式为W的内存访问。
b)如果连续两次访问是W,W,中断匹配一个访问方为R的内存访问。
下面将以图6所示的简单程序为例,详细讲解本发明提出的技术方案。未详细描述内容为本领域技术人员公知技术。
图6表示file1.c和file2.c两个文件,file1.c包含main函数,file2.c包含func函数,isr_1函数。主程序入口为main,中断入口为isr_1,中断优先级为1。
1、配置主程序入口为main,中断入口isr_1,优先级为1。
2、依次分析file1.c和file2.c中的所有函数main、func和isr_1,并生成不考虑函数调用的可达访问图。
函数main不考虑函数调用的可达访问图可以如图3所示,其中<z,W,file1.c:#2>表示变量z在文件file1.c中的第2行进行了写操作。
3、收集所有的被调函数的摘要。这里只有func函数,Summary(func)={<x,R,file2.c:#2>,<y,W,file2.c:#3>,<y,W,file2.c:#5>}。
4、使用函数摘要更新可达访问图。这里使用func函数的摘要更新main函数可达访问图,且以file1.c中的第3行为例。其中函数调用语句S为“func();”,IN(S)={<z,W,file1.c:#2>,<y,R,file1.c:#9>,<x,W,file1.c:#8>},Summary(func)={<x,R,file2.c:#2>,<y,W,file2.c:#3>,<y,W,file2.c:#5>},计算后OUT(S)={<z,W,file1.c:#2>,<y,W,file2.c:#3>,<y,W,file2.c:#5>,<x,W,file2.c:#2>}。对变量x,Summary(func)里有新值<x,W,file2.c:#2>,表示调用的函数里变量x有新的访问,所以最后一次变量访问应使用新的值<x,W,file2.c:#2>。变量y的情况和变量x情况类似。对于变量z,OUT(S)中没有,表示被调函数没有访问变量z,最后一次访问仍来自于IN(S)中的<z,W,file1.c:#2>。
5、更新被调函数的可达访问图。如果有多次被调,需要使用合并操作合并可达访问集,并作为被调函数的入口的可达访问集,更新整个可达访问图。如图5所示的函数func分别在file1.c的第6行和第10行被调用。被调用前的可达访问集分别为{<z,W,file1.c:#2>,<y,R,file1.c:#9>,<x,W,file1.c:#8>}和{<z,W,file1.c:#2>,<y,R,file1.c:#5>,<x,W,file1.c:#4>},合并后变为{<x,W,file1.c:#8>,<x,W,file1.c:#4>,<y,W,file1.c:#9>,<y,W,file1.c:#5>,<z,W,file1.c:#2>}。将此值作为函数func的可达访问图入口的可达访问值,更新func的可达访问图。
6、计算出所有中断入口里的共享变量集合。这里只有一个与中断有关的函数isr_1,并且只有一个共享变量y。这个变量集合用于裁剪匹配过程中的冗余信息,不在这个变量集合可以不进行匹配。
7、使用单变量序模式进行匹配,生成数据冲突访问序。遍历可以被isr_1打断的main函数和func函数的可达访问图,通过模式进行匹配。比如遍历到函数func的可达访问图的中的第9行对应的结点时,此处有一个变量y的访问,表示为<y,W,file1.c:#9>,而此时变量y的可达访问值为<y,R,file1.c:#3>,形成变量y的两次连续访问,表示先在第3行读y,再在第9行写变量y。根据匹配规则,此时应在可打断两次访问序的中断中找一次对变量y写的操作,即<y,W,file2.c:#10>。因此可以得出模式为RWW的数据冲突访问序:<y,R,file1.c:#3>,<y,W,file2.c:#10>,<y,W,file1.c:#9>。同理变量函数func中可以得到模式为WRW的数据冲突访问序:<y,W,file1.c:#9>,<y,R,file2.c:#10>,<y,W,file2.c:#3>。
本发明实施例具有如下有益效果:
1、独立分析每个文件,分析完所有文件后再使用函数摘要合并更新的方法,避免了存在跨文件的分析时在不同文件交替分析,减小了内存占用的峰值;
2、函数摘要仅使用可达访问图的出口结点的可达访问值,占用内存小,可同时载入大量的函数摘要,减少了因内存不足而频繁更换内存中的摘要造成的时间消耗;
3、每个函数的可达访问图都作为完全独立的模块,可灵活地载入内存或者写入磁盘,可适用于大规模程序。
实施例二
参照图7,示出了本发明实施例提供的一种基于单变量访问序模式的中断数据访问冲突检测装置的结构示意图,如图7所示,该基于单变量访问序模式的中断数据访问冲突检测装置具体可以包括如下模块:
源文件获取模块601,用于获取多个源文件;
可达访问图生成模块602,用于对每个所述源文件的函数进行可达访问分析,生成每个所述源文件的可达访问图;
可达访问图更新模块603,用于使用所述多个源文件的函数调用关系和各所述源文件的函数摘要,更新各所述可达访问图;
检测结果获取模块604,用于遍历各更新后的可达访问图,匹配单变量访问序模式,得到中断数据访问冲突检测结果。
优选地,所述装置还包括:
函数摘要收集模块,用于收集所述多个源文件分别对应的被调用函数的函数摘要;所述函数摘要为可达访问图的出口结点的可达访问集。
优选地,所述可达访问图生成模块602包括:
入口优先级配置单元,用于配置主程序入口、中断入口和中断优先级;
可达访问图生成单元,用于分别对所述主程序入口的函数和所述中断入口的函数涉及的源文件,以及各所述源文件中的函数进行不考虑函数调用的可达访问分析,生成各所述可达访问图。
优选地,还包括:
可达访问图更新模块,用于使用所述函数摘要更新调用函数所在的可达访问图;
可达访问集记录模块,用于在对各所述可达访问图进行更新时,记录所有函数摘要被调用前的程序点的可达访问集;
可达访问图再更新模块,用于采用所述可达访问集,作为所述被调函数的可达访问图的入口值再更新,使所有可达访问图达到稳定状态。
优选地,所述检测结果获取模块604包括:
函数匹配单元,用于通过所述中断入口和所述中断优先级,对被打断的主函数和中断函数进行匹配;
访问冲突序生成单元,用于遍历主函数的可达访问图,计算出同一变量的连续两次访问,再匹配所述中断函数中的内存访问,生成数据访问冲突序。
本发明实施例提供的基于单变量访问序模式的中断数据访问冲突检测装置,与现有技术相比的优点在于:
1、独立分析每个文件,分析完所有文件后再使用函数摘要合并更新的方法,避免了存在跨文件的分析时在不同文件交替分析,减小了内存占用的峰值;
2、函数摘要仅使用可达访问图的出口结点的可达访问值,占用内存小,可同时载入大量的函数摘要,减少了因内存不足而频繁更换内存中的摘要造成的时间消耗;
3、每个函数的可达访问图都作为完全独立的模块,可灵活地载入内存或者写入磁盘,可适用于大规模程序。
以上所述仅为本发明的实施例的较佳实施例而已,并不用以限制本发明的实施例,凡在本发明的实施例的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的实施例的保护范围之内。
Claims (10)
1.一种基于单变量访问序模式的中断数据访问冲突检测方法,其特征在于,包括:
获取多个源文件;
对每个所述源文件的函数进行可达访问分析,生成每个所述源文件的可达访问图;
使用所述多个源文件的函数调用关系和各所述源文件的函数摘要,更新各所述可达访问图;
遍历各更新后的可达访问图,匹配单变量访问序模式,得到中断数据访问冲突检测结果。
2.根据权利要求1所述的方法,其特征在于,在所述获取多个源文件之后,还包括:
收集所述多个源文件分别对应的被调用函数的函数摘要;所述函数摘要为可达访问图的出口结点的可达访问集。
3.根据权利要求1所述的方法,其特征在于,所述对每个所述源文件的函数进行可达访问分析,生成每个所述源文件的可达访问图,包括:
配置主程序入口、中断入口和中断优先级;
分别对所述主程序入口的函数和所述中断入口的函数涉及的源文件,以及各所述源文件中的函数进行不考虑函数调用的可达访问分析,生成各所述可达访问图。
4.根据权利要求3所述的方法,其特征在于,在使用所述多个源文件的函数调用关系和各所述源文件的函数摘要,更新各所述可达访问图之后,还包括:
使用所述函数摘要更新调用函数所在的可达访问图;
在对各所述可达访问图进行更新时,记录所有函数被调用前的程序点的可达访问集;
采用所述可达访问集,作为所述被调函数的可达访问图的入口值再更新,使所有可达访问图达到稳定状态。
5.根据权利要求4所述的方法,其特征在于,所述遍历各更新后的可达访问图,匹配单变量访问序模式,得到中断数据访问冲突检测结果,包括:
通过所述中断入口和所述中断优先级,对被打断的主函数和中断函数进行匹配;
遍历主函数的可达访问图,计算出同一变量的连续两次访问,再匹配所述中断函数中的内存访问,生成数据访问冲突序。
6.一种基于单变量访问序模式的中断数据访问冲突检测装置,其特征在于,包括:
源文件获取模块,用于获取多个源文件;
可达访问图生成模块,用于对每个所述源文件的函数进行可达访问分析,生成每个所述源文件的可达访问图;
可达访问图更新模块,用于使用所述多个源文件的函数调用关系和各所述源文件的函数摘要,更新各所述可达访问图;
检测结果获取模块,用于遍历各更新后的可达访问图,匹配单变量访问序模式,得到中断数据访问冲突检测结果。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
函数摘要收集模块,用于收集所述多个源文件分别对应的被调用函数的函数摘要;所述函数摘要为可达访问图的出口结点的可达访问集。
8.根据权利要求6所述的装置,其特征在于,所述可达访问图生成模块包括:
入口优先级配置单元,用于配置主程序入口、中断入口和中断优先级;
可达访问图生成单元,用于分别对所述主程序入口的函数和所述中断入口的函数涉及的源文件,以及各所述源文件中的函数进行不考虑函数调用的可达访问分析,生成各所述可达访问图。
9.根据权利要求8所述的装置,其特征在于,还包括:
可达访问图更新模块,用于使用所述函数摘要更新调用函数所在的可达访问图;
可达访问集记录模块,用于在对各所述可达访问图进行更新时,记录所有函数被调用前的程序点的可达访问集;
可达访问图再更新模块,用于采用所述可达访问集,作为所述被调函数的可达访问图的入口值再更新,使所有可达访问图达到稳定状态。
10.根据权利要求9所述的装置,其特征在于,所述检测结果获取模块包括:
函数匹配单元,用于通过所述中断入口和所述中断优先级,对被打断的主函数和中断函数进行匹配;
访问冲突序生成单元,用于遍历主函数的可达访问图,计算出同一变量的连续两次访问,再匹配所述中断函数中的内存访问,生成数据访问冲突序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911329257.0A CN111159022B (zh) | 2019-12-20 | 2019-12-20 | 基于单变量访问序模式的中断数据访问冲突检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911329257.0A CN111159022B (zh) | 2019-12-20 | 2019-12-20 | 基于单变量访问序模式的中断数据访问冲突检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111159022A true CN111159022A (zh) | 2020-05-15 |
CN111159022B CN111159022B (zh) | 2023-05-02 |
Family
ID=70557641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911329257.0A Active CN111159022B (zh) | 2019-12-20 | 2019-12-20 | 基于单变量访问序模式的中断数据访问冲突检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111159022B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112631925A (zh) * | 2020-12-29 | 2021-04-09 | 北京轩宇信息技术有限公司 | 一种单变量原子违背缺陷的检测方法 |
CN115033472A (zh) * | 2022-04-18 | 2022-09-09 | 大连理工大学 | 基于线程循环调度顺序化的中断驱动程序模型检测方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101310258A (zh) * | 2005-12-16 | 2008-11-19 | 英特尔公司 | 在软件事务内存系统中保护共享变量 |
US20100174840A1 (en) * | 2009-01-02 | 2010-07-08 | International Business Machines Corporation | Prioritization for conflict arbitration in transactional memory management |
US20100235817A1 (en) * | 2009-03-11 | 2010-09-16 | Nec Laboratories America, Inc. | Fast and accurate data race detection for concurrent programs with asynchronous calls |
CN102063328A (zh) * | 2010-12-17 | 2011-05-18 | 北京控制工程研究所 | 一种用于检测中断驱动型程序数据竞争的系统 |
CN102760095A (zh) * | 2011-04-25 | 2012-10-31 | 清华大学 | 基于静态共享变量识别的动态数据竞争检测方法 |
CN103699388A (zh) * | 2013-12-30 | 2014-04-02 | 北京控制工程研究所 | 基于绝对地址汇聚的数据访问冲突检测方法 |
CN103778062A (zh) * | 2014-01-23 | 2014-05-07 | 中国人民解放军国防科学技术大学 | 基于抽象解释的多中断程序数据访问冲突检测方法 |
CN107967213A (zh) * | 2017-12-07 | 2018-04-27 | 上海宇航系统工程研究所 | 一种航天软件临界资源访问冲突检测方法 |
CN109388573A (zh) * | 2018-10-23 | 2019-02-26 | 北京轩宇信息技术有限公司 | 一种无漏报的中断驱动型程序运行时错误检测方法和系统 |
-
2019
- 2019-12-20 CN CN201911329257.0A patent/CN111159022B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101310258A (zh) * | 2005-12-16 | 2008-11-19 | 英特尔公司 | 在软件事务内存系统中保护共享变量 |
US20100174840A1 (en) * | 2009-01-02 | 2010-07-08 | International Business Machines Corporation | Prioritization for conflict arbitration in transactional memory management |
US20100235817A1 (en) * | 2009-03-11 | 2010-09-16 | Nec Laboratories America, Inc. | Fast and accurate data race detection for concurrent programs with asynchronous calls |
CN102063328A (zh) * | 2010-12-17 | 2011-05-18 | 北京控制工程研究所 | 一种用于检测中断驱动型程序数据竞争的系统 |
CN102760095A (zh) * | 2011-04-25 | 2012-10-31 | 清华大学 | 基于静态共享变量识别的动态数据竞争检测方法 |
CN103699388A (zh) * | 2013-12-30 | 2014-04-02 | 北京控制工程研究所 | 基于绝对地址汇聚的数据访问冲突检测方法 |
CN103778062A (zh) * | 2014-01-23 | 2014-05-07 | 中国人民解放军国防科学技术大学 | 基于抽象解释的多中断程序数据访问冲突检测方法 |
CN107967213A (zh) * | 2017-12-07 | 2018-04-27 | 上海宇航系统工程研究所 | 一种航天软件临界资源访问冲突检测方法 |
CN109388573A (zh) * | 2018-10-23 | 2019-02-26 | 北京轩宇信息技术有限公司 | 一种无漏报的中断驱动型程序运行时错误检测方法和系统 |
Non-Patent Citations (6)
Title |
---|
BYOUNG-KWI LEE等: "Program Conversion for Detecting Data Races in Concurrent Interrupt Handlers", 《INTERNATIONAL CONFERENCE ON ADVANCED SOFTWARE ENGINEERING AND ITS APPLICATIONS》 * |
XUEGUANG WU等: "Data race detection for interrupt-driven programs via bounded model checking", 《2013 IEEE SEVENTH INTERNATIONAL CONFERENCE ON SOFTWARE SECURITY AND RELIABILITY COMPANION》 * |
杨芳等: "嵌入式软件中断系统资源冲突检测技术研究", 《计算机工程与设计》 * |
陈睿等: "基于变量访问序模式的中断数据竞争检测方法", 《软件学报》 * |
陈睿等: "基于编码规则的中断数据访问冲突检测方法", 《空间控制技术与应用》 * |
陈睿等: "航天嵌入式软件数据访问冲突基准测试集研究", 《中国空间科学技术》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112631925A (zh) * | 2020-12-29 | 2021-04-09 | 北京轩宇信息技术有限公司 | 一种单变量原子违背缺陷的检测方法 |
CN115033472A (zh) * | 2022-04-18 | 2022-09-09 | 大连理工大学 | 基于线程循环调度顺序化的中断驱动程序模型检测方法 |
CN115033472B (zh) * | 2022-04-18 | 2024-03-22 | 大连理工大学 | 基于线程循环调度顺序化的中断驱动程序模型检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111159022B (zh) | 2023-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110457277B (zh) | 业务处理性能分析方法、装置、设备及存储介质 | |
EP2228743B1 (en) | Method for detecting new malicious executables, based on discovering and monitoring characteristic system call sequences | |
US20060010337A1 (en) | Management system and management method | |
US7266844B2 (en) | Heuristic detection of polymorphic computer viruses based on redundancy in viral code | |
CN111767547B (zh) | 一种基于复杂网络社团的软件漏洞检测方法 | |
CN107402957B (zh) | 用户行为模式库的构建及用户行为异常检测方法、系统 | |
CN113657715A (zh) | 一种基于核密度估计调用链的根因定位方法及系统 | |
CN112738172B (zh) | 区块链节点的管理方法、装置、计算机设备和存储介质 | |
CN111159022A (zh) | 基于单变量访问序模式的中断数据访问冲突检测方法及装置 | |
Ashraf et al. | WeFreS: weighted frequent subgraph mining in a single large graph | |
CN109885489B (zh) | 驱动程序中数据竞争检测方法及装置 | |
CN113596043B (zh) | 攻击检测方法、攻击检测装置、存储介质与电子设备 | |
CN108959454B (zh) | 一种提示子句指定方法、装置、设备及存储介质 | |
US8051055B1 (en) | Tracking table and index partition usage in a database | |
CN114527963B (zh) | C++二进制文件中的类继承关系识别方法及电子装置 | |
CN111858307B (zh) | 模糊测试方法和设备 | |
CN113590637A (zh) | 一种多进程共享数据库表更新方法及装置、数据库系统 | |
CN117688564B (zh) | 一种用于智能合约事件日志的检测方法、装置和存储介质 | |
CN117573556B (zh) | 基于增量smt问题求解的软件断言验证方法、系统及设备 | |
CN118502732B (zh) | 字节码程序的分析方法、装置、设备和介质 | |
CN113609487B (zh) | 通过静态分析检测后门代码的方法 | |
US20180157696A1 (en) | Optimized Iterators For RCU-Protected Skiplists | |
CN110909351B (zh) | 硬件协助的控制结构不变式挖掘方法 | |
CN118503992B (zh) | 一种基于多重特征因子签名的iast应用漏洞聚合方法 | |
US20220027213A1 (en) | Preventing deadlocks in runtime |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |