Data Flow Analysis of Asynchronous Systems using Infinite Abstract Domains

Asynchronous message-passing systems are employed frequently to implement distributed mechanisms, protocols, and processes. This paper addresses the problem of precise data flow analysis for such systems. To obtain good precision, data flow analysis needs to somehow skip execution paths that read more messages than the number of messages sent so far in the path, as such paths are infeasible at run time. Existing data flow analysis techniques do elide a subset of such infeasible paths, but have the restriction that they admit only finite abstract analysis domains. In this paper we propose a generalization of these approaches to admit infinite abstract analysis domains, as such domains are commonly used in practice to obtain high precision. We have implemented our approach, and have analyzed its performance on a set of 14 benchmarks. On these benchmarks our tool obtains significantly higher precision compared to a baseline approach that does not elide any infeasible paths and to another baseline that elides infeasible paths but admits only finite abstract domains.

[1]  Gerard J. Holzmann,et al.  The Model Checker SPIN , 1997, IEEE Trans. Software Eng..

[2]  Jeffrey D. Ullman,et al.  Monotone data flow analysis frameworks , 1977, Acta Informatica.

[3]  Charles Rackoff,et al.  The Covering and Boundedness Problems for Vector Addition Systems , 1978, Theor. Comput. Sci..

[4]  John E. Hopcroft,et al.  On the Reachability Problem for 5-Dimensional Vector Addition Systems , 1976, Theor. Comput. Sci..

[5]  Pierre Ganty,et al.  Complexity Analysis of the Backward Coverability Algorithm for VASS , 2011, RP.

[6]  Magnus Madsen,et al.  Modeling the HTML DOM and browser API in static analysis of JavaScript web applications , 2011, ESEC/FSE '11.

[7]  C.-H. Luke Ong,et al.  Safety Verification of Asynchronous Pushdown Systems with Shaped Stacks , 2013, CONCUR.

[8]  Rupak Majumdar,et al.  Interprocedural analysis of asynchronous programs , 2007, POPL '07.

[9]  Deian Stefan,et al.  Pretend synchrony: synchronous verification of asynchronous distributed programs , 2019, Proc. ACM Program. Lang..

[10]  Ahmed Bouajjani,et al.  Analysis of recursively parallel programs , 2012, POPL '12.

[11]  Alastair F. Donaldson,et al.  Asynchronous programming, analysis and testing with state machines , 2015, PLDI.

[12]  Jean-François Raskin,et al.  On the Verification of Concurrent, Asynchronous Programs with Waiting Queues , 2015, ACM Trans. Embed. Comput. Syst..

[13]  Daniel Brand,et al.  On Communicating Finite-State Machines , 1983, JACM.

[14]  A Pnueli,et al.  Two Approaches to Interprocedural Data Flow Analysis , 2018 .

[15]  Seif Haridi,et al.  Distributed Algorithms , 1992, Lecture Notes in Computer Science.

[16]  Thomas W. Reps,et al.  Precise interprocedural dataflow analysis via graph reachability , 1995, POPL '95.

[17]  Damien Zufferey,et al.  P: safe asynchronous event-driven programming , 2013, PLDI.

[18]  Thomas W. Reps,et al.  Precise Interprocedural Dataflow Analysis with Applications to Constant Propagation , 1995, TAPSOFT.

[19]  Kenneth L. McMillan,et al.  Ivy: safety verification by interactive generalization , 2016, PLDI.

[20]  Richard M. Karp,et al.  Parallel Program Schemata , 1969, J. Comput. Syst. Sci..

[21]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[22]  Gary A. Kildall,et al.  A unified approach to global program optimization , 1973, POPL.

[23]  Darko Marinov,et al.  Basset: a tool for systematic testing of actor programs , 2010, FSE '10.

[24]  Coen De Roover,et al.  Mailbox Abstractions for Static Analysis of Actor Programs , 2017, ECOOP.

[25]  Mizuhito Ogawa,et al.  Well-Structured Pushdown Systems , 2013, CONCUR.

[26]  Grégoire Sutre,et al.  Hyper-Ackermannian bounds for pushdown vector addition systems , 2014, CSL-LICS.

[27]  Albert R. Meyer,et al.  The Complexity of the Finite Containment Problem for Petri Nets , 1981, JACM.

[28]  Kurt Lautenbach,et al.  Use of Petri Nets for Proving Correctness of Concurrent Process Systems , 1974, IFIP Congress.

[29]  Antoine Miné,et al.  The octagon abstract domain , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[30]  Mahesh Viswanathan,et al.  Decidability Results for Well-Structured Transition Systems with Auxiliary Storage , 2007, CONCUR.

[31]  Greg Bronevetsky,et al.  Communication-Sensitive Static Dataflow for Parallel Message Passing Applications , 2009, 2009 International Symposium on Code Generation and Optimization.

[32]  Danny Dolev,et al.  An O(n log n) Unidirectional Distributed Algorithm for Extrema Finding in a Circle , 1982, J. Algorithms.

[33]  Shin Nakajima,et al.  The SPIN Model Checker : Primer and Reference Manual , 2004 .

[34]  Edmund M. Clarke,et al.  State space reduction using partial order techniques , 1999, International Journal on Software Tools for Technology Transfer.

[35]  Parosh Aziz Abdulla,et al.  On-the-Fly Analysis of Systems with Unbounded, Lossy FIFO Channels , 1998, CAV.

[36]  Koushik Sen,et al.  Automated Systematic Testing of Open Distributed Programs , 2006, FASE.

[37]  Gerard J. Holzmann,et al.  The SPIN Model Checker - primer and reference manual , 2003 .

[38]  Giorgio Delzanno,et al.  Towards the Automated Verification of Multithreaded Java Programs , 2002, TACAS.

[39]  Bernardo Toninho,et al.  Fencing off go: liveness and safety for channel-based programming , 2016, POPL.

[40]  Aditya Kanade,et al.  Asynchrony-aware static analysis of Android applications , 2016, 2016 ACM/IEEE International Conference on Formal Methods and Models for System Design (MEMOCODE).

[41]  Parosh Aziz Abdulla,et al.  Verifying Programs with Unreliable Channels , 1996, Inf. Comput..

[42]  S. Rao Kosaraju,et al.  Decidability of reachability in vector addition systems (Preliminary Version) , 1982, STOC '82.

[43]  Frank Tip,et al.  Static analysis of event-driven Node.js JavaScript applications , 2015, OOPSLA.

[44]  Salvatore La Torre,et al.  Context-Bounded Analysis of Concurrent Queue Systems , 2008, TACAS.

[45]  Junfeng Yang,et al.  Practical software model checking via dynamic interface reduction , 2011, SOSP.

[46]  Parosh Aziz Abdulla,et al.  General decidability theorems for infinite-state systems , 1996, Proceedings 11th Annual IEEE Symposium on Logic in Computer Science.

[47]  Jean-Luc Lambert,et al.  A Structure to Decide Reachability in Petri Nets , 1992, Theor. Comput. Sci..

[48]  Haoxiang Lin,et al.  MODIST: Transparent Model Checking of Unmodified Distributed Systems , 2009, NSDI.

[49]  Srinath T. V. Setty,et al.  IronFleet: proving practical distributed systems correct , 2015, SOSP.

[50]  Rupak Majumdar,et al.  Verifying liveness for asynchronous programs , 2009, POPL '09.

[51]  Sanjit A. Seshia,et al.  Systematic testing of asynchronous reactive systems , 2015, ESEC/SIGSOFT FSE.

[52]  Nobuko Yoshida,et al.  Verifying message-passing programs with dependent behavioural types , 2019, PLDI.

[53]  Jan Vitek,et al.  Precise Dataflow Analysis of Event-Driven Applications , 2019, ArXiv.

[54]  Xi Wang,et al.  Verdi: a framework for implementing and formally verifying distributed systems , 2015, PLDI.

[55]  Philippe Schnoebelen,et al.  Well-structured transition systems everywhere! , 2001, Theor. Comput. Sci..

[56]  Bernardo Toninho,et al.  A Static Verification Framework for Message Passing in Go Using Behavioural Types , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE).

[57]  Mahesh Viswanathan,et al.  Model Checking Multithreaded Programs with Asynchronous Atomic Methods , 2006, CAV.

[58]  Jean-François Raskin,et al.  Expand, Enlarge and Check: New algorithms for the coverability problem of WSTS , 2006, J. Comput. Syst. Sci..

[59]  Helmut Seidl,et al.  Precise interprocedural analysis through linear algebra , 2004, POPL.