On Communicating Finite-State Machines
Journal of the ACM (JACM)
Context-sensitive synchronization-sensitive analysis is undecidable
ACM Transactions on Programming Languages and Systems (TOPLAS)
Decidability and Complexity of Petri Net Problems - An Introduction
Lectures on Petri Nets I: Basic Models, Advances in Petri Nets, the volumes are based on the Advanced Course on Petri Nets
KISS: keep it simple and sequential
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Interprocedural analysis of asynchronous programs
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Iterative context bounding for systematic testing of multithreaded programs
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Proving the Correctness of Multiprocess Programs
IEEE Transactions on Software Engineering
Reducing Context-Bounded Concurrent Reachability to Sequential Reachability
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
Static and Precise Detection of Concurrency Errors in Systems Code Using SMT Solvers
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
Reducing concurrent analysis under a context bound to sequential analysis
Formal Methods in System Design
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
SPIN'10 Proceedings of the 17th international SPIN conference on Model checking software
On sequentializing concurrent programs
SAS'11 Proceedings of the 18th international conference on Static analysis
An automata-theoretic approach to hardware/software co-verification
FASE'10 Proceedings of the 13th international conference on Fundamental Approaches to Software Engineering
Model checking multithreaded programs with asynchronous atomic methods
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
Context-Bounded model checking of concurrent software
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Model-Checking parameterized concurrent programs using linear interfaces
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Time-bounded analysis of real-time systems
Proceedings of the International Conference on Formal Methods in Computer-Aided Design
Algorithmic verification of asynchronous programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
A solver for reachability modulo theories
CAV'12 Proceedings of the 24th international conference on Computer Aided Verification
Analysis of Recursively Parallel Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
We consider the algorithmic analysis of asynchronous software systems as a means for building reliable software. A key challenge in designing such analyses is identifying a concurrency model which does not extraneously introduce behaviors infeasible in the actual system, does not extraneously exclude actual behaviors, and isolates the challenging features for analyses to focus on. Guided by real-world asynchronous software, we propose a concurrency model which enriches the existing serial task-buffer asynchrony model [29] with task-priorities and multiple task-buffers. Our model allows non-serial execution: tasks with higher priority preempt lower-priority tasks, and tasks drawn from distinct buffers freely interleave with one another. Modeling these features allows analysis algorithms to detect otherwise uncaught programming errors in asynchronous programs due to inter-buffer interleaving and task-interruption, while correctly ignoring false errors due to infeasible out-of-priority-order executions. Besides more precisely capturing real-world systems, our concurrency model inspires the design of a novel analysis algorithm. Given parameters K1, K2 ε N that restrict inter-buffer task interleaving and intra-buffer task reordering, we give a code-to-code translation to sequential programs, which can then be analyzed by off-the-shelf program analysis tools. For any given parameter values, the resulting sequential program encodes a subset of possible behaviors, and in the limit as both parameters approach infinity, the sequential program encodes all behaviors. We demonstrate the viability of our technique by experimenting with a prototype implementation. Our prototype is competitive with state-of-the-art concurrent program verification tools, and is able to correctly identify errors in simplified Windows device driver code, while ignoring infeasible executions.