Boosting Static Analysis with Dynamic Runtime Data at WhatsApp Server
Infer [1] is a scalable and extensible open-source static analysis platform, maintained and used by Meta. Infer supports several languages - including Erlang [2], the language of WhatsApp server - and can detect various types of issues in the codebases. Infer’s analysis engine performs modular and compositional inter-procedural analysis by synthesizing function summaries based on the properties being checked. However, code complexity, unknown functions (e.g. unmodeled library functions) and other factors might cause their summary synthesis to fail [3]. No execution paths are explored in such cases, which also propagates up in the call hierarchy. We observed that this often leads to Infer missing potential valid results matching input properties. Recently, we introduced Fausta [4], an algorithmic traffic generation platform to analyze and test WhatsApp server’s code at scale. Fausta includes various strategies to synthesize realistic backend server traffic that closely simulates production data, without replaying any real user data. The executions resulting from feeding the generated traffic to the server are therefore representative of real production cases. In this work, we boost Infer’s static analysis with dynamic data obtained from Fausta and from unit as well as end-to-end tests that are normally executed in WhatsApp CI. We use Erlang’s tracing features on dynamic runs to produce sets of input/output relations for the functions for which Infer failed to produce summaries. The input/output relations represent particular code executions, fitting seamlessly into Infer’s analysis. They provide valuable and realistic information for functions without summaries allowing Infer to keep exploring paths that were previously skipped. An overview can be seen in Fig. 1. Both Infer and Fausta regularly scan WhatsApp server’s Erlang codebase, detecting reliability issues and checking user-defined properties. In our initial experiments we observed that boosting Infer’s static analysis with dynamic data from Fausta and tests has helped to discover behaviours related to some of our internal properties that were not possible to detect before by the two platforms in isolation.
Thu 18 MayDisplayed time zone: Hobart change
11:00 - 12:30 | |||
11:00 15mTalk | Boosting Static Analysis with Dynamic Runtime Data at WhatsApp Server Industry Forum | ||
11:15 15mTalk | Personalized action suggestions in low-code automation platforms Industry Forum Saksham Gupta Microsoft, Gust Verbruggen Microsoft, Mukul Singh Microsoft, Sumit Gulwani Microsoft, Vu Le Microsoft | ||
11:30 15mTalk | Towards formal repair and verification of industry-scale deep neural networks Industry Forum Satoshi Munakata Fujitsu, Susumu Tokumoto Fujitsu Limited, Koji Yamamoto Fujitsu, Kazuki Munakata Fujitsu | ||
11:45 15mTalk | Challenges and Solution Strategies to Setup an MLOps Process to Develop and Assess a Driverless Regional Train Example Industry Forum | ||
12:00 15mTalk | Automated Feature Document Review via Interpretable Deep Learning Industry Forum yeming ZTE Corporation, Yuanfan Chen ZTE Corporation, Xin Zhang Peking University, Jinning He ZTE, Jicheng Cao ZTE Corporation, Dong Liu ZTE, Shengyu Cheng ZTE Corporation, Jing Gao ZTE Corporation, Hailiang Dai ZTE Corporation |