Determinism Is Overrated: What Really Makes Multithreaded Programs Hard to Get Right and What Can Be Done About It

Our accelerating computational demand and the rise of multicore hardware have made parallel programs, especially shared-memory multithreaded programs, increasingly pervasive and critical. Yet, these programs remain extremely difficult to write, test, analyze, debug, and verify. Conventional wisdom has attributed these difficulties to nondeterminism, and researchers have recently dedicated much effort to bringing determinism into multithreading. In this paper, we argue that determinism is not as useful as commonly perceived: it is neither sufficient nor necessary for reliability. We present our view on why multithreaded programs are difficult to get right, describe a promising approach we call stable multithreading to dramatically improve reliability, and summarize our last four years' research on building and applying stable multithreading systems.

[1]  Edward A. Lee The problem with threads , 2006, Computer.

[2]  Zhiqiang Ma,et al.  Ad Hoc Synchronization Considered Harmful , 2010, OSDI.

[3]  Junfeng Yang,et al.  Sound and precise analysis of parallel programs through schedule specialization , 2012, PLDI.

[4]  Emery D. Berger,et al.  Dthreads: efficient deterministic multithreading , 2011, SOSP.

[5]  James Demmel,et al.  the Parallel Computing Landscape , 2022 .

[6]  E. Berger,et al.  Grace: Safe and Efficient Concurrent Programming , 2008 .

[7]  Marek Olszewski,et al.  Kendo: efficient deterministic multithreading in software , 2009, ASPLOS.

[8]  Yuanyuan Zhou,et al.  Learning from mistakes: a comprehensive study on real world concurrency bug characteristics , 2008, ASPLOS.

[9]  Charlene O'Hanlon,et al.  A Conversation with John Hennessy and David Patterson , 2006, ACM Queue.

[10]  Jeffrey Overbey,et al.  A type and effect system for deterministic parallel Java , 2009, OOPSLA 2009.

[11]  Sen Hu,et al.  Efficient system-enforced deterministic parallelism , 2010, OSDI.

[12]  Junfeng Yang,et al.  Efficient deterministic multithreading through schedule relaxation , 2011, SOSP.

[13]  Thomas Ball,et al.  Finding and Reproducing Heisenbugs in Concurrent Programs , 2008, OSDI.

[14]  Brandon Lucia,et al.  DMP: deterministic shared memory multiprocessing , 2009, IEEE Micro.

[15]  Salvatore J. Stolfo,et al.  Concurrency attacks , 2012, HotPar'12.

[16]  Bryan Cantrill,et al.  Real-world concurrency , 2008, Commun. ACM.

[17]  Dan Grossman,et al.  CoreDet: a compiler and runtime system for deterministic multithreaded execution , 2010, ASPLOS XV.

[18]  Junfeng Yang,et al.  Stable Deterministic Multithreading through Schedule Memoization , 2010, OSDI.

[19]  Junfeng Yang,et al.  Bypassing Races in Live Applications with Execution Filters , 2010, OSDI.

[20]  Emery D. Berger,et al.  Grace: safe multithreaded programming for C/C++ , 2009, OOPSLA 2009.