Goldilocks: A Race-Aware Java Runtime.

We present Goldilocks, a Java runtime that monitors program executions and throws a DataRaceException when a data race is about to occur. This prevents racy accesses from taking place, and allows race conditions to be handled before they cause errors that may be difficult to diagnose later. The Data...

Full description

Bibliographic Details
Published in:Communications of the ACM Vol. 53; no. 11; pp. 85 - 93
Main Authors: Elmas, Tayfun, Qadeer, Shaz, Tasiran, Serdar
Format: Article
Published: Association for Computing Machinery Nov2010
Subjects:
Online Access:View this record in EBSCOhost
fields @attributes:
  recordID: 1
pdfLink:
plink: https://search.ebscohost.com/login.aspx?direct=true&db=hlh&AN=55063023&site=ehost-live
header:
  @attributes:
    shortDbName: hlh
    uiTerm: 55063023
    longDbName: Humanities International Complete
    uiTag: AN
  controlInfo:
    bkinfo:
    jinfo:
      jid:
        00010782
        ACM
      jtl: Communications of the ACM
      issn: 00010782
      maglogo: N
    pubinfo:
      dt: Nov2010
      vid: 53
      iid: 11
      pid: 68
      pub: Association for Computing Machinery
    artinfo:
      ui:
        55063023
        10.1145/1839676.1839698
      ppf: 85
      ppct: 8
      formats:
      tig:
        atl: Goldilocks: A Race-Aware Java Runtime.
      aug:
        au:
          Elmas, Tayfun
          Qadeer, Shaz
          Tasiran, Serdar
        affil:
          Koç University, Istanbul, Turkey.
          Microsoft Research, Redmond, WA.
      su:
        Data transmission systems
        Java programming language
        Computer programming
        Computer storage devices
        Algorithms
        Mathematical models
        Semantics
      sug:
        subj:
          Data transmission systems
          Java programming language
          Computer programming
          Computer storage devices
          Algorithms
          Mathematical models
          Semantics
      ab: We present Goldilocks, a Java runtime that monitors program executions and throws a DataRaceException when a data race is about to occur. This prevents racy accesses from taking place, and allows race conditions to be handled before they cause errors that may be difficult to diagnose later. The DataRaceException is a valuable debugging tool, and, if supported with reasonable computational overhead, can be an important safety feature for deployed programs. Experiments by us and others on raceaware Java runtimes indicate that the DataRaceException may be a viable mechanism to enforce the safety of executions of multithreaded Java programs. An important benefit of DataRaceException is that executions in our runtime are guaranteed to be race free and thus sequentially consistent as per the Java Memory Model. This strong guarantee provides an easy-to-use, clean semantics to programmers, and helps to rule out many concurrency- related possibilities as the cause of errors. To support the DataRaceException, our runtime incorporates the novel Goldilocks algorithm for precise dynamic race detection. The Goldilocks algorithm is general, intuitive, and can handle different synchronization patterns uniformly.
      pubtype: Periodical
      doctype: Article
      src: R
    language: English
    refInfo:
    copyright:
      @attributes:
        flag: Y
      dt:
        @attributes:
          year: 2010
    holdings:
      @attributes:
        islocal: N