Computer Science > Programming Languages
[Submitted on 20 Jul 2020 (this version), latest version 16 Oct 2020 (v5)]
Title:The Decidability of Verification under Promising 2.0
View PDFAbstract:In PLDI'20, Kang et al.\ introduced the \emph{promising } semantics ($\ps$) of the C++ concurrency that captures most of the common program transformations while satisfying the DRF guarantee. The reachability problem for finite-state programs under $\ps$ with only release-acquire accesses ($\ps$-$\ra$) is already known to be undecidable. Therefore, we address, in this paper, the reachability problem for programs running under $\ps$ with relaxed accesses ($\psr$) together with promises. We show that this problem is undecidable even in the case where the input program has finite state. Given this undecidability result, we consider the fragment of $\psr$ with a bounded number of promises. We show that under this restriction, the reachability is decidable, albeit very expensive: it is non-primitive recursive. Given this high complexity for $\psr$ with bounded number of promises and the undecidability result for $\ps$-$\ra$, we consider a bounded version of the reachability problem. To this end, we bound both the number of promises and the "view-switches", i.e, the number of times the processes may switch their local views of the global memory. We provide a code-to-code translation from an input program under $\ps$, with relaxed and release-acquire memory accesses along with promises, to a program under SC. This leads to a reduction of the bounded reachability problem under $\ps$ to the bounded context-switching problem under SC. We have implemented a prototype tool and tested it on a set of benchmarks, demonstrating that many bugs in programs can be found using a small bound.
Submission history
From: Shankara Narayanan Krishna [view email][v1] Mon, 20 Jul 2020 08:46:40 UTC (825 KB)
[v2] Tue, 21 Jul 2020 05:19:49 UTC (825 KB)
[v3] Sat, 25 Jul 2020 14:25:48 UTC (825 KB)
[v4] Wed, 9 Sep 2020 16:14:29 UTC (835 KB)
[v5] Fri, 16 Oct 2020 12:29:51 UTC (836 KB)
Bibliographic and Citation Tools
Bibliographic Explorer (What is the Explorer?)
Connected Papers (What is Connected Papers?)
Litmaps (What is Litmaps?)
scite Smart Citations (What are Smart Citations?)
Code, Data and Media Associated with this Article
alphaXiv (What is alphaXiv?)
CatalyzeX Code Finder for Papers (What is CatalyzeX?)
DagsHub (What is DagsHub?)
Gotit.pub (What is GotitPub?)
Hugging Face (What is Huggingface?)
Papers with Code (What is Papers with Code?)
ScienceCast (What is ScienceCast?)
Demos
Recommenders and Search Tools
Influence Flower (What are Influence Flowers?)
CORE Recommender (What is CORE?)
arXivLabs: experimental projects with community collaborators
arXivLabs is a framework that allows collaborators to develop and share new arXiv features directly on our website.
Both individuals and organizations that work with arXivLabs have embraced and accepted our values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners that adhere to them.
Have an idea for a project that will add value for arXiv's community? Learn more about arXivLabs.