2013
DOI: 10.1145/2518191
|View full text |Cite
|
Sign up to set email alerts
|

Making the java memory model safe

Abstract: This work presents a machine-checked formalisation of the Java memory model and connects it to an operational semantics for Java and Java bytecode. For the whole model, I prove the data race freedom guarantee and type safety. The model extends previous formalisations by dynamic memory allocation, thread spawns and joins, infinite executions, the wait-notify mechanism, and thread interruption, all of which interact in subtle ways with the memory model. The formalisation resulted in numerous clarifications of an… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
4
1

Citation Types

0
35
0

Year Published

2014
2014
2020
2020

Publication Types

Select...
5
1
1

Relationship

2
5

Authors

Journals

citations
Cited by 25 publications
(35 citation statements)
references
References 64 publications
0
35
0
Order By: Relevance
“…Despite their reputation for being esoteric, codatatypes have a role to play in computer science. The verified C compiler CompCert [16], the verified Java compiler JinjaThreads [17], and the formalized Java memory model [18] all depend on codatatypes to capture infinite processes.…”
Section: Introductionmentioning
confidence: 99%
“…Despite their reputation for being esoteric, codatatypes have a role to play in computer science. The verified C compiler CompCert [16], the verified Java compiler JinjaThreads [17], and the formalized Java memory model [18] all depend on codatatypes to capture infinite processes.…”
Section: Introductionmentioning
confidence: 99%
“…Until then, Isabelle/HOL and the other main systems based on higher-order logic (HOL4, HOL Light, and ProofPower-HOL) provided at most (inductive) datatypes, recursive functions, and (co)inductive predicates. Our aim was to support formalizations such as Lochbihler's verified compiler for a Java-like language [32] and his mathematization of the Java memory model [33], both of which rely on codatatypes to represent infinite traces.…”
Section: Introductionmentioning
confidence: 99%
“…Isabelle/HOL provides a few manually derived codatatypes (e.g., lazy lists) in the Coinductive entry of the Archive of Formal Proofs [18]. This library forms the basis of JinjaThreads [19], a verified compiler for a Java-like language, and of the formalization of the Java memory model [21]. The manual constructions are heavy, requiring hundreds of lines for each codatatype.…”
Section: Introductionmentioning
confidence: 99%