Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Ermenegildo Tomasco is active.

Publication


Featured researches published by Ermenegildo Tomasco.


computer aided verification | 2014

Bounded Model Checking of Multi-threaded C Programs via Lazy Sequentialization

Ermenegildo Tomasco; Bernd Fischer; Salvatore La Torre; Gennaro Parlato

Bounded model checking (BMC) has successfully been used for many practical program verification problems, but concurrency still poses a challenge. Here we describe a new approach to BMC of sequentially consistent C programs using POSIX threads. Our approach first translates a multi-threaded C program into a nondeterministic sequential C program that preserves reachability for all round-robin schedules with a given bound on the number of rounds. It then re-uses existing high-performance BMC tools as backends for the sequential verification problem. Our translation is carefully designed to introduce very small memory overheads and very few sources of nondeterminism, so that it produces tight SAT/SMT formulae, and is thus very effective in practice: our prototype won the concurrency category of SV-COMP14. It solved all verification tasks successfully and was 30x faster than the best tool with native concurrency handling.


tools and algorithms for construction and analysis of systems | 2015

Verifying Concurrent Programs by Memory Unwinding

Ermenegildo Tomasco; Bernd Fischer; Salvatore La Torre; Gennaro Parlato

We describe a new sequentialization-based approach to the symbolic verification of multithreaded programs with shared memory and dynamic thread creation. Its main novelty is the idea of memory unwinding MU, i.e., a sequence of write operations into the shared memory. For the verification, we nondeterministically guess an MU and then simulate the behavior of the program according to any scheduling that respects it. This approach is complementary to other sequentializations and explores an orthogonal dimension, i.e., the number of write operations. It also simplifies the implementation of several important optimizations, in particular the targeted exposure of individual writes. We implemented this approach as a code-to-code transformation from multithreaded into nondeterministic sequential programs, which allows the reuse of sequential verification tools. Experiments show that our approach is effective: it found all errors in the concurrency category of SV-COMP15.


tools and algorithms for construction and analysis of systems | 2014

Lazy-CSeq: A Lazy Sequentialization Tool for C

Ermenegildo Tomasco; Bernd Fischer; Salvatore La Torre; Gennaro Parlato

We describe a version of the lazy sequentialization schema by La Torre, Madhusudan, and Parlato that is optimized for bounded programs, and avoids the re-computation of the local state of each process at each context switch. Lazy-CSeq implements this sequentialization schema for sequentially consistent C programs using POSIX threads. Experiments show that it is very competitive.


formal methods in computer-aided design | 2016

Lazy sequentialization for TSO and PSO via shared memory abstractions

Ermenegildo Tomasco; Truc L. Nguyen; Bernd Fischer; Salvatore La Torre; Gennaro Parlato

Lazy sequentialization is one of the most effective approaches for the bounded verification of concurrent programs. Existing tools assume sequential consistency (SC), thus the feasibility of lazy sequentializations for weak memory models (WMMs) remains untested. Here, we describe the first lazy sequentialization approach for the total store order (TSO) and partial store order (PSO) memory models. We replace all shared memory accesses with operations on a shared memory abstraction (SMA), an abstract data type that encapsulates the semantics of the underlying WMM and implements it under the simpler SC model. We give efficient SMA implementations for TSO and PSO that are based on temporal circular doubly-linked lists, a new data structure that allows an efficient simulation of the store buffers. We show experimentally, both on the SV-COMP concurrency benchmarks and a real world instance, that this approach works well in combination with lazy sequentialization on top of bounded model checking.


tools and algorithms for construction and analysis of systems | 2014

MU-CSeq: Sequentialization of C Programs by Shared Memory Unwindings

Ermenegildo Tomasco; Bernd Fischer; Salvatore La Torre; Gennaro Parlato

We implement a new sequentialization algorithm for multi-threaded C programs with dynamic thread creation as a new CSeq module. The novel basic idea of this algorithm is to fix (by a nondeterministic guess) the sequence of write operations in the shared memory and then simulate the behavior of the program according to any scheduling that respects this choice. Simulation is done thread-by-thread and the thread creation mechanism is replaced by function calls.


tools and algorithms for construction and analysis of systems | 2016

MU-CSeq 0.4: Individual Memory Location Unwindings

Ermenegildo Tomasco; Truc L. Nguyen; Bernd Fischer; Salvatore La Torre; Gennaro Parlato

We present the MU-CSeq tool for the verification of multi-threaded C programs with dynamic thread creation, dynamic memory allocation, and pointer arithmetic. It is based on sequentializing the programs over the new notion of individual memory location unwinding IMU. IMU is derived from the notion of memory unwinding that has been implemented in the previous versions of MU-CSeq. The main concepts of IMU are: 1 the use of multiple write sequences, one for each individual shared memory location that is effectively used in the executions and 2 the use of memory addresses rather than variable names in the operations on the shared memory, which requires a separate table to map write sequences but supports pointer arithmetic.


tools and algorithms for construction and analysis of systems | 2015

MU-CSeq 0.3: Sequentialization by Read-Implicit and Coarse-Grained Memory Unwindings

Ermenegildo Tomasco; Bernd Fischer; Salvatore La Torre; Gennaro Parlato

We describe a new CSeq module that implements improved algorithms for the verification of multi-threaded C programs with dynamic thread creation. It is based on sequentializing the programs according to a guessed sequence of write operations in the shared memory memory unwinding, MU. The original algorithm implemented in MU-CSeq 0.1 stores the values of all shared variables for each write read-explicit fine-grained MU, which requires multiple copies of the shared variables. Our new algorithms store only the writes read-implicit MU or only a subset of the writes coarse-grained MU, which reduces the memory footprint of the unwinding and so allows larger unwinding bounds.


software engineering and formal methods | 2017

Using Shared Memory Abstractions to Design Eager Sequentializations for Weak Memory Models

Ermenegildo Tomasco; Truc L. Nguyen; Bernd Fischer; Salvatore La Torre; Gennaro Parlato

Sequentialization translates concurrent programs into equivalent nondeterministic sequential programs so that the different concurrent schedules no longer need to be handled explicitly. However, existing sequentializations assume sequential consistency, which modern hardware architectures no longer guarantee. Here we describe a new approach to embed weak memory models within eager sequentializations. Our approach is based on the separation of intra-thread computations from inter-thread communications by means of a shared memory abstraction (SMA). We give details of SMA implementations for the SC, TSO, and PSO memory models that are based on the idea of individual memory unwindings. We use our approach to implement a new, efficient BMC-based bug finding tool for multi-threaded C programs under SC, TSO, or PSO based on these SMAs, and show experimentally that it is competitive to existing tools.


tools and algorithms for construction and analysis of systems | 2014

Lazy-CSeq: a lazy sequentialization tool for c (competition contribution)

Ermenegildo Tomasco; Bernd Fischer; Salvatore La Torre; Gennaro Parlato


tools and algorithms for construction and analysis of systems | 2014

MU-CSeq: Sequentialization of C Programs by Shared Memory Unwindings (Competition Contribution)

Ermenegildo Tomasco; Bernd Fischer; Salvatore La Torre; Gennaro Parlato

Collaboration


Dive into the Ermenegildo Tomasco's collaboration.

Top Co-Authors

Avatar

Gennaro Parlato

University of Southampton

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Truc L. Nguyen

University of Southampton

View shared research outputs
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge