Altmetric

Static race detection and mutex safety and liveness for Go programs

File Description SizeFormat 
LIPIcs-ECOOP-2020-4.pdfPublished version859.11 kBAdobe PDFView/Open
Title: Static race detection and mutex safety and liveness for Go programs
Authors: Gabet, J
Yoshida, N
Item Type: Conference Paper
Abstract: Go is a popular concurrent programming language thanks to its ability to efficiently combine concurrency and systems programming. In Go programs, a number of concurrency bugs can be caused by a mixture of data races and communication problems. In this paper, we develop a theory based on behavioural types to statically detect data races and deadlocks in Go programs. We first specify lock safety/liveness and data race properties over a Go program model, using the happens-before relation defined in the Go memory model. We represent these properties of programs in a μ-calculus model of types, and validate them using type-level model-checking. We then extend the framework to account for Go’s channels, and implement a static verification tool which can detect concurrency errors. This is, to the best of our knowledge, the first static verification framework of this kind for the Go language, uniformly analysing concurrency errors caused by a mix of shared memory accesses and asynchronous message-passing communications.
Issue Date: 6-Nov-2020
Date of Acceptance: 8-Apr-2020
URI: http://hdl.handle.net/10044/1/80323
DOI: 10.4230/LIPIcs.ECOOP.2020.4
ISSN: 1868-8969
Publisher: Schloss Dagstuhl -- Leibniz-Zentrum fuer Informatik
Start Page: 4:1
End Page: 4:30
Journal / Book Title: LIPIcs : Leibniz International Proceedings in Informatics
Volume: 166
Copyright Statement: © 2020 Julia Gabet and Nobuko Yoshida; licensed under Creative Commons License CC-BY
Sponsor/Funder: Engineering & Physical Science Research Council (E
Engineering & Physical Science Research Council (E
Engineering and Physical Sciences Research Council
Engineering & Physical Science Research Council (EPSRC)
Engineering & Physical Science Research Council (EPSRC)
Engineering & Physical Science Research Council (E
Engineering & Physical Science Research Council (EPSRC)
Engineering & Physical Science Research Council (EPSRC)
GCHQ
Funder's Grant Number: ERI 025567 (EP/K034413/1)
PO 20131167
EP/L00058X/1, PO 20131167
EP/K011715/1
EP/N027833/1
20208624
EP/T006544/1
EP/T014709/1
4207702 / RFA 15845
Conference Name: 34th European Conference on Object-Oriented Programming (ECOOP) 2020
Publication Status: Published
Start Date: 2020-11-15
Finish Date: 2020-11-17
Conference Place: Virtual
Online Publication Date: 2020-11-06
Appears in Collections:Computing
Faculty of Engineering



This item is licensed under a Creative Commons License Creative Commons