Analysis of Asynchronous Programs with Event-Based Synchronization

Asynchronous event-driven programming has become a central model for building responsive and efficient software systems, from low-level kernel modules, device drivers, and embedded systems, to consumer application on platforms such as .Net, Android, iOS, as well as in the web browser. Being fundamentally concurrent, such systems are vulnerable to subtle and elusive programming errors which, in principle, could be systematically discovered with automated techniques such as model checking. However, current development of such automated techniques are based on formal models which make great simplifications in the name of analysis decidability: they ignore event-based synchronization, and they assume concurrent tasks execute serially. These simplifications can ultimately lead to false positives, in reporting errors which are infeasible considering event-based synchronization, as well as false negatives, overlooking errors which arise due to interaction between concurrent tasks.

[1]  G. Ramalingam,et al.  Context-sensitive synchronization-sensitive analysis is undecidable , 2000, TOPL.

[2]  Akash Lal,et al.  Asynchronous programs with prioritized task-buffers , 2012, SIGSOFT FSE.

[3]  Hassen Saïdi,et al.  Construction of Abstract State Graphs with PVS , 1997, CAV.

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

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

[6]  Jean-François Raskin,et al.  Queue-Dispatch Asynchronous Systems , 2013, 2013 13th International Conference on Application of Concurrency to System Design.

[7]  Mohamed Faouzi Atig,et al.  Context-Bounded Analysis for Concurrent Programs with Dynamic Creation of Threads , 2009, TACAS.

[8]  Edmund M. Clarke,et al.  Design and Synthesis of Synchronization Skeletons Using Branching-Time Temporal Logic , 1981, Logic of Programs.

[9]  Joël Ouaknine,et al.  Nets with Tokens which Carry Data , 2008, Fundam. Informaticae.

[10]  Rajeev Alur,et al.  Visibly pushdown languages , 2004, STOC '04.

[11]  Roland Meyer,et al.  On Boundedness in Depth in the pi-Calculus , 2008, IFIP TCS.

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

[13]  Rupak Majumdar,et al.  Algorithmic verification of asynchronous programs , 2010, TOPL.

[14]  Parosh Aziz Abdulla,et al.  A classification of the expressive power of well-structured transition systems , 2011, Inf. Comput..

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

[16]  David de Frutos Escrig,et al.  Decidability and complexity of Petri nets with unordered data , 2011 .

[17]  C.-H. Luke Ong,et al.  Automatic Verification of Erlang-Style Concurrency , 2013, SAS.

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

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

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

[21]  Fernando Rosa-Velardo,et al.  Decidability Problems in Petri Nets with Names and Replication , 2010, Fundam. Informaticae.

[22]  Tayssir Touili,et al.  Analyzing Asynchronous Programs with Preemption , 2008, FSTTCS.

[23]  Jakob Rehof,et al.  Context-Bounded Model Checking of Concurrent Software , 2005, TACAS.

[24]  Wolfgang Reisig,et al.  Place/Transition Systems , 1986, Advances in Petri Nets.

[25]  Zvonimir Rakamaric,et al.  Asynchronously Communicating Visibly Pushdown Systems , 2013, FMOODS/FORTE.

[26]  Marvin Theimer,et al.  Cooperative Task Management Without Manual Stack Management , 2002, USENIX Annual Technical Conference, General Track.