Meta开源AndroidJava的静态死锁检测器

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

标题名称:Meta开源AndroidJava的静态死锁检测器
文章URL:http://www.gawzjz.com/qtweb/news15/209365.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联