Reversing an Imperative Concurrent Programming Language

05/02/2022
by   James Hoey, et al.
0

We introduce a method of reversing the execution of imperative concurrent programs. Given an irreversible program, we describe the process of producing two versions. The first performs forward execution and saves information necessary for reversal. The second uses this saved information to simulate reversal. We propose using identifiers to overcome challenges of reversing concurrent programs. We prove this reversibility to be correct, showing that the initial program state is restored and that all saved information is used (garbage-free).

READ FULL TEXT

page 1

page 2

page 3

page 4

research
04/27/2019

A Practical Analysis of Rust's Concurrency Story

Correct concurrent programs are difficult to write; when multiple thread...
research
03/28/2018

Deadlock-Free Typestate-Oriented Programming

Context. TypeState-Oriented Programming (TSOP) is a paradigm intended to...
research
10/11/2017

A Semantics Comparison Workbench for a Concurrent, Asynchronous, Distributed Programming Language

A number of high-level languages and libraries have been proposed that o...
research
01/26/2023

Concrat: An Automatic C-to-Rust Lock API Translator for Concurrent Programs

Concurrent programs suffer from data races. To prevent data races, progr...
research
06/06/2017

Specifying Transaction Control to Serialize Concurrent Program Executions

We define a programming language independent transaction controller and ...
research
11/28/2017

Communications in Choreographies, Revisited

Choreographic Programming is a paradigm for developing correct-by-constr...
research
09/04/2017

Reversing Imperative Parallel Programs

We propose an approach and a subsequent extension for reversing imperati...

Please sign up or login with your details

Forgot password? Click here to reset