[发明专利]基于Petri网的Rust语言自动建模与死锁检测方法及软件工具在审
申请号: | 202310629386.1 | 申请日: | 2023-05-31 |
公开(公告)号: | CN116661751A | 公开(公告)日: | 2023-08-29 |
发明(设计)人: | 刘关俊;张凯文 | 申请(专利权)人: | 同济大学 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/41;G06F9/52 |
代理公司: | 上海诺衣知识产权代理事务所(普通合伙) 31298 | 代理人: | 胡英瑛 |
地址: | 200092 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 petri rust 语言 自动 建模 死锁 检测 方法 软件 工具 | ||
本发明公开了一种基于Petri网的Rust语言自动建模与死锁检测方法及软件工具。所述检测方法包括Rust程序源代码分析、创建Rust程序中间代码、指定检测Rust程序中的锁类型、生成锁数据流图、转换所述锁数据流图为Petri网和分析Petri网,生成死锁检测报告的步骤。所述软件工具包括用户界面模块、Rust程序源代码分析模块、映射到Petri网模块和bug检测模块。本发明是基于Cargo的,不需要重写命令,提高检测效率;屏蔽掉了多余代码带来的复杂性;使用Rust编译作为前端来执行程序化查询,基于锁操作语义的等价映射,不改变原有的程序语义;对无关操作进行了裁剪,缩减了模型检测的状态空间,提高了检测速度。
技术领域
本发明涉及软件系统建模与分析技术领域,更具体地,涉及一种基于Petri网的Rust语言自动建模与死锁检测方法及软件工具。
背景技术
Rust是由谋智公司开发的一种编程语言,旨在构建高效且安全的底层软件。它的主要思想是继承C和C++的大部分功能,从而保留C和C++良好的运行时性能,但同时又会通过严格的编译时检查排除C和C++的安全问题。
在过去一段时间中,研究人员对不同编程语言中的多种错误进行了各种实证研究。Rust-clippy是一个静态检测器,用于检测那些遵循某些简单源代码模式的内存Bug。它仅能涵盖少量的Bug模式。Miri是动态内存Bug检测器,用于解释和执行Rust的中级中间表示(Mid-level Intermediate Representation,MIR)。根据我们的实验,Miri还会产生许多误报。由此可见,基于程序分析的检测器虽然具有分析速度快等优点,但覆盖Bug的范围较窄,且容易出现误报。此外,Rust的别名模型构建了一个动态内存Bug检测器,该检测器使用栈来动态跟踪对每个内存的所有有效引用或指针位置并报告未正确嵌套使用引用时潜在的不确定行为和内存Bug,具有高精度等优点。以上两个动态检测器依靠用户提供的输入来触发内存Bug。
经过对文献和开源技术的探索发现,这些现有Rust Bug检测工具均有其自身的局限性,并且没有一个能够检测并发性Bug。因此,对Rust的并发性Bug进行的实证研究对于诸如此类的工作非常重要和必要,它可以帮助研究人员和从业人员未来构建更多的Rust专属检测器。
发明内容
由于现有技术存在上述缺陷,本发明提供了一种基于Petri网的Rust语言自动建模与死锁检测方法及软件工具,对Rust程序源代码进行自动抽象检测,准备识别程序中可能造成死锁的程序执行路径,并且报告与死锁有关变量的位置,结合了程序分析与模型检测方法的优点,避免了它们的缺陷,通过控制流和数据流到Petri网模型的语义映射,使得产生的模型符合源代码的逻辑。
为实现上述目的,一方面,本发明提供一种基于Petri网的Rust语言自动建模与死锁检测方法,其特征在于,包括以下步骤:
步骤S1、Rust程序源代码分析;并非所有的源代码都需要进行检测分析,只有锁目标是需要检测的对象。
步骤S2、创建Rust程序中间代码;所述中间代码隐含了所述源代码的控制流图和数据流图;中间代码是编译器生成的一种表示形式,其中隐含了代码的控制流图(CFG)和数据流图,是代码生成的基本元素。并发代码之间的数据相关性是锁的操作,无相关性的中间代码不需要关注。
步骤S3、指定检测Rust程序中的锁类型;不同的所述锁类型对应不同的Petri网模型和操作语义。
步骤S4、生成锁数据流图:在所述控制流图的基础上,根据所述步骤S3中锁类型进行提取的锁执行路径。
步骤S5、转换所述锁数据流图为Petri网:通过提前定义好的映射关系来完成所述锁数据流图到Petri网模型的映射,对所述映射关系进行形式化表述,确保不会发生操作语义的变更。
步骤S6、分析Petri网,生成死锁检测报告;所述死锁检测报告包括在程序中发现可能造成的锁结构信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于同济大学,未经同济大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310629386.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种集装箱吊具起吊安全检测方法和系统
- 下一篇:一种耳内等离子电极刀头