Meta 开源 Android Java 的静态死锁检测器

开源
Meta (原 FaceBook)开发了一种新的静态分析器,它可以在 Android 的 Java 代码中捕获死锁,而无需运行代码。该死锁检测器是开源的 Infer 静态分析框架的一部分。

Meta (原 FaceBook)开发了一种新的静态分析器,它可以在 Android 的 Java 代码中捕获死锁,而无需运行代码。该死锁检测器是开源的 Infer 静态分析框架的一部分。

据工程师 Nikos Gorogiannis 介绍,新的死锁检测器能够分析具有数亿行代码的代码库的修订,目前已经在 Meta 的持续集成系统中部署,它会扫描对 Android 应用程序系列的每个提交。在过去两年中,Meta 开发人员针对它的死锁报告采取了 200 多项修复措施,修复率约为 54%。

该检测器如何运作?

该分析器使用抽象解释技术来设计。对于每个方法,分析器都会计算方法在获取和释放锁方面的行为摘要,以及该方法是在主线程还是在后台线程上运行。然后使用一个关键对 (A,B) 记录了以下事实:该方法试图获取锁 B,而此时,它已经精确地持有集合 A 中的锁。以上数据通过所有方法的计算得出,足以让判断两个并发方法之间是否可能出现死锁问题。

为了快速高效,该工具还避免分析应用程序中的所有源文件。相反,它首先处理已修改文件的所有方法。然后基于该数据应用启发式方法,来定位修改文件之外的方法,这些方法可能与修改版本中的一种方法发生死锁。

死锁通常是不可恢复的错误,也是非常难以诊断的错误,因为线程调度本质上是不确定的。因此,死锁的测试可能需要运行数千或数百万次才能显示问题,那么无需运行甚至构建代码即可静态地检测死锁就非常有价值。

Nikos Gorogiannis 称其团队的方法已实现了死锁分析这一目标,同时也使其具有足够的可扩展性,可以在大型代码库上部署分析器。

本文转自OSCHINA

本文标题:Meta 开源 Android Java 的静态死锁检测器

本文地址:https://www.oschina.net/news/185948/deadlock-detector-for-android-java

责任编辑:未丽燕 来源: 开源中国
相关推荐

2010-12-28 11:17:50

chkrootkitrootkit检测器

2024-01-15 14:03:00

2023-07-26 09:00:00

人工智能AI检测

2010-12-24 10:26:19

2023-10-23 12:05:17

2020-09-22 20:14:51

人工智能

2010-12-22 21:52:12

rkhunter

2024-03-19 11:52:28

2009-04-01 22:10:55

2010-07-06 10:08:57

SQL Server

2014-01-09 09:42:56

Python语言检测器

2009-03-25 15:21:17

2010-09-14 15:34:29

sql server死

2014-04-16 14:00:01

墨迹空气检测器曝光

2023-06-02 13:19:15

模型AI

2023-02-01 13:15:41

2023-11-10 15:36:10

2022-03-25 14:11:11

Java死锁线程

2017-10-13 18:33:57

静态代码分析SCAIDS

2010-07-20 10:27:57

SQL Server
点赞
收藏

51CTO技术栈公众号