What are race conditions? - ACM Digital Library - Association for ...

1 downloads 0 Views 1MB Size Report
can cause the program to behave unexpectedly,. Unfortunately, there has been little agreement in the literature as to precisely what constitutes a race condition.
What Are Race Conditions? Some Issues and Formalization ROBERT

H. B. NETZER

University

of Wisconsin

In

shared-memory

when

to

a race

to programs

to nondeterministic examines

We

show

data

capture

the

accurate

notions

implicitly

locating

feasible

races

has

can

incapable argue

by two

variations

intuitive

notions

assumed

located

of implementing

mutual

than

debugging

data

races

contrast,

general

data

programs

Categories

and

debugging

atds;

concurrent

programming

concurrency, General

Key

parallel

research

of Naval Research

Grant, address:

Dayton

and

Street,

a formal

of race

debugging

for

This

result

exhaustive

requires

only

debugged races

require

[Software

D.2.5

races

methods.

We also show

D.4. 1

the

apparent

races capture

races,

and less that

which

of synchronization

important detection

race

implications and

are

complex

Language

Programs

easily

are we

harder containing

identifiable

debugging

races.

In

techniques.

Testing

and Debugging–

Constructs

Systems]:

that since

is inherently

detection)

certain

[Operating

general

their

apparent

Engineering]:

Languages]:

paper

exploring

and

types

race

more

However, This

The complexity of dynamically used by the program, Apparent

has

partial

other

feasible

only

weak

by locating

races).

recognized. and

one

and the

exist:

practice. of synchronization only

races)

model

race detection that

as to precisely considered:

data

been

often

to behave

and

Process

Features—

Management—

synchronization

Phrases:

Critical

sections,

data

races,

debugging,

nondeterminacy,

conditions

was supported

Authors’

for

yet

program

implicitly general

result are

Languages

race

Research

type

the

we call

not

using

implying

type

structures;

Words

programs,

(which

conditions

conditions

literature

been

we call

have

requires

general

exclusion,

sections

dynamic

exclusion.

(which

have

be detected in

[Programming

Design,

in the

races

desired

efficiently

Descriptors:

D.3, 3

mutual

Terms:

Additional

This

Subject

agreement

races

problem,

be efficiently

containing

can cause

(which

of each

race Race

presence

notions

data

by most

races

races

can therefore

little

different

characterizing

is an NP-hard

debugging

been

and

synchronization, synchronized.

their

critical

races

be exhaustively

that

since

containing

approximations to feasible races, can locating apparent races depends on the races

explicit

properly

to be deterministic

general

that

use

not

Two

intended

differences

properties. races

there condition.

between

these

are

of bugs,

programs

differences

that

memory

Unfortunately,

constitutes

pertaining the

programs

shared

to be manifestations

unexpectedly, what

P. MILLER

— Madison

parallel

accesses

considered

and BARTON

grant

in part

Computer

Madison,

by National

Science

NOO014-89.J-lZZZ, Sciences

WI

53706;

and

Department, e-mail:

Foundation

a Digital

grant

CCR-8815928,

Equipment

University

R. H. B. Netzer,

Corporation

of Wisconsin-Madison, [email protected];

Office External 1210

W.

B. P. Miller,

[email protected], Permission not made of the

to copy without or distributed

publication

Association specific

its

for Computing

date

of this

commercial

appear,

Machinery.

and

material

advantage, notice

is given

To copy otherwise,

is granted the ACM that

provided copyright

copying

or to repubhsh,

that notice

the copies

is by permwsion requires

Letters

1057-4514/92/0300-0074 on Programming

Languages

Vol.

1, No. 1, March

of the

a fee and/or

$01.50 and Systems,

are

and the title

permission.

@ 1992 ACM ACM

and

fee all or part

for direct

1992, Pages 74-88

What Are Race Conditions?

.

75

1. INTRODUCTION In shared-memory properly

parallel

synchronized,

programs,

if accesses

time-dependent

to shared

failuresl

called

memory

race

are not

conditions

can

result. without

Race conditions occur when different processes access shared data explicit synchronization. Because races can cause the program to

behave

in ways

unexpected

by the programmer,

detecting

tant aspect of debugging. However, in the literature, agreement as to precisely what constitutes a race different notions have been used, but the distinction been previously several terms

recognized. have been

access anomaly

[6–8,

[131, harmful

dynamic

race [1,4, 5, 11 , 16, 20, 22],

12, 18], data

access [241, race condition

paper explores the nature hidden issues regarding

race detection.

is an impor-

Because no consistent terminology has appeared, used with different intended meanings, such as

shared-memory

[2, 9, 171. This some previously

them

there seems to be little condition. Indeed, two between them has not

We present

critical

race

[10, 26], or just

race

of race conditions the accuracy and

the following

and uncovers complexity of

results.

(1) Two fundamentally different types of races, that capture different kinds of bugs in different classes of parallel programs, can occur. General races cause nondeterministic execution and are failures in programs intended to be deterministic. Data races cause nonatomic execution of critical sections and are failures in (nondeterministic) programs that access and update

shared

(2) To represent terize

the

(which

data

in critical

the sources intuitive

we

call

a

sections.

2

of race conditions

notion

of a race

feasible

race).

In

precisely,

we

wish

we formally

to

contrast,

detect

we

show

for

characdebugging

that

there

is a

simpler to detect but less accurate notion of a race that most previously proposed race detection methods locate (which we call an apparent race). Feasible

races

are based

on the possible

behavior

of the program;

appar-

ent races, which are approximations to feasible races, are based on only the behavior of the program’s explicit synchronization (and not the semantics (3) Exactly problem.

of the program’s locating the This result

to locate,

must

computation).

feasible implies

be detected

general races or data races is an NP-hard that the apparent races, which are simpler for debugging

in practice.

(4) Apparent races can be exhaustively located efficiently only for programs that use synchronization incapable of implementing mutual exclusion (such as fork/join or Post/Wait synchronization without Clear operations); detection is NP-hard for more powerful types of synchronization (such as semaphores).

1 To be consistent program’s

external

(although 2 There

with

the

behavior

we use the term is some controversy

and general

race,

atomicity ACM

fault

tolerant

differs

from

research its

community

specification,

and

[25],

a failure

a fault

is its

occurs

when

algorithmic

a

cause

bug). over

terminology

race

and determinacy

Letters

on Programming

that

is the

most

race have Languages

descriptive.

also been

and Systems,

In place

of data

race

suggested. Vol.

1, No. 1, March

1992.

76

R. H. Netzer and B. P. Miller

.

(5) Debugging inherently

race more

conditions in programs intended difficult than in nondeterministic

to be deterministic is programs. Races that

cause nonatomic execution of critical sections (data properties of the execution and can be detected directly trace. In contrast, races that cause nondeterministic

races) are “local” from an execution execution (general

races)

whose

detection

requires

alternative

event

orderings

are

“global”

analyzing

the

possibly

exhibited

These

results

dynamic

properties

entire

of the

execution

program

to compute

by the program.

provide

an understanding

race detection.

acterizations of the program bugs. For

Previous

different example,

work

types race

of race

conditions

has not provided

important

unambiguous

for char-

of race conditions or related races conditions have only been defined

to as

occurring when two shared-memory references “can potentially execute concurrently” [6] or have no “guaranteed run-time ordering” [101. Our work is novel since we explicitly characterize two different types of race conditions using

a formal

general

races

different

types

Using

a model

model

and

and data

explore

races

of program has

the

complexity of dynamic have implications for

their

properties.

is necessary bugs

and

advantage

The

because

require that

distinction

between

are manifestations

different

issues

race detection then debugging: accurate

they

detection

regarding

the

of

techniques. accuracy

and

become clear. The accuracy issues race detection means that races

that are direct manifestations of program bugs are pinpointed, while less accurate detection can report spurious races that mislead a programmer. The complexity issues show which types of races allow exact and efficient detection and which can be only approximately located. Our results show that locating is computationally intractable. methods races.

take

However,

effective

an easier

approach

we argue

debugging

exactly Indeed,

that

requires

and

apparent more

the desired previously locate

only

races (the feasible races) proposed race detection a subset

races can often

sophisticated

of the

be spurious,

techniques.

Race

apparent and that conditions

can be debugged by attempting to determine which of these located (apparent) races are of interest for debugging (i.e., are feasible). Our results show that there is also a fundamental disparity between debugging race conditions in deterministic and nondeterministic programs. Nondeterministic programs that use critical sections can be safely debugged (to find data races) because we can easily determine if an execution is data-race free; when data races occur, the feasible races can be approximately located. However, debugging programs ently harder.

intended to be deterministic (to find general races) We can be confident that execution was deterministic

exhaustive race detection efficient only for programs mutual exclusion).

is inheronly if

shows an absence of general races (and this using synchronization incapable of implementing

2. EXAMPLES Explicit

synchronization

to coordinate ACM

Letters

is often

accesses to shared

on Programming

Languages

added data.

to shared-memory Without

and Systems,

Vol.

proper

parallel

programs

coordination,

different

1, No. 1, March

1992,

is

What Are Race Conditions? types of race conditions we present an example them

in terms

can result. To motivate of each. In subsequent

of a formal

model

One purpose of adding programs is to implement to execute state initial the

as if they

were

their

synchronization sections, which

atomic.

Atomic

77

these different types of races, sections we will characterize

and investigate

explicit critical

.

properties.

to shared-memory parallel are blocks of code intended

execution

means

that

the

final

of variables read and written in the section depends only upon their state at the start of the section and upon the operations performed by code

(and

conditions

not

state

operations

that

atomic

are read and modified concurrently executing typically

been called

performed execution

This

another

process). if shared

by the critical section are not modified section of code [3]. A violation of these a data

program

data race. program for which

processes

deposits

and withdrawals

version

of the

program.

Bernstein’s variables

that

by any other conditions has

race [1, 4, 5, 11, 16, 17, 20, 221 or access anomaly

[6-8, 181. We prefer the term Figure 1 shows an example failure.

by

is guaranteed

commands

for a given Since

the

bank

a data

from

account.

variables

bank

race is considered tellers

Figure

balance

and

that

la shows interest

a

make

a correct

are shared,

operations that manipulate them are enclosed in critical sections. Because critical sections can never execute concurrently, this version will exhibit no data races. Figure lb shows an erroneous version that can exhibit data races; the P and V operations that enforced mutual exclusion are missing. The deposit and withdraw code can therefore execute concurrently, causing their individual statements to effectiwdy interleave, possibly violating the atomicity of one of the intended considered

failures

critical

because

sections.

the

code execute atomically, without Even though programs like

intent

The data

was that

interference the one in

the

races in this deposit

program

are

and withdrawal

from other processes. Figure 1 may contain

critical

sections, they are often intended to be nondeterministic (e.g., the order of deposits and withdrawals may occur unpredictably, depending on how fast the tellers type). However, other classes of programs are intended to be completely deterministic, such programs. In these forcing input)

and a different type of race condition pertains programs, synchronization provides determinism

all accesses to the same shared in a specific

always

produce

among

the processes

the

order.

For

a given

same result,

resource input,

regardless

in the program

to always

execute

all executions

to by

(on a given

of such programs

of any random

timing

(e. g., due to unpredictable

variations

interrupts,

or

other programs that may be executing on the same processors). Nondeterminism is generally introduced when the order of two accesses to the same resource is not enforced by the program’s synchronization. The existence of two such unordered accesses has been called a race condition [9, 10, 261, access anomaly [121, critical race [131, or harmful shared-memory access [241. For a more consistent terminology, we propose the term general race, since such a race is more general than a data race. As an example of programs for which general races are manifestations of bugs, consider parallel programs that are constructed from sequential programs by parallelizing loops. The sequential version of a program behaves ACM

Letters

on Programming

Langnages

and Systems,

Vol.

1, No. 1, March

1992.

78

R. H. Netzer and B. P. Miller

.

Process 1

/*

DEPOSIT

amount P(nmtex)

Process 2

*/

=

/*

read_amounto ;

balance

+ amount;

= interest

V(mutex)

=

P(mutex)

= balance

interest

WITHDRAW

amount

;

if

*/

read_amounto

(balance

+ rate*balance;

< amount)

printf(’TNSF”)

;

else

;

; ;

{ balance

= balance

interest

-

= interest

amount; +

rate*balance;

1 V(mutex); (a): no-data-race

version

Process 1

/h

DEpQS~~

amount

=

k/

/*

read_amounto

P(mutex)

;

balance

=

interest

Process 2

;

~~~HD~~

amount if

balance =

interest

+

,/ read_amounto

(balance

amount; +

=




Races

natural

Since

perform

way

FDIFF

a and

to characterize

precisely

b. For

a race

Ca@UreS

general

the

races,

(a, b) is to consider

Set

we

FsA ME is inadequate since, by definition, a general race exists between two accesses only if they execute in an order different than in P (and therefore the shared-data dependence between them is also different). In contrast, data races could be reasonably viewed as occurring over either F~IFF or FsA ME. Definition

A feasible

4.3.

over F~IFF exists. A feasible data A

feasible

allowed

a race,

race

general

race (a, b) exists locates

and thus

race (a, b) exists iff a data

precisely represents

those the

ACM Letters on Programming

race

(a, b) over

portions

intuitive

iff a general

of the

notion

F~lpR

race (a, b) exists.

execution

that

of a race illustrated

Languages and Systems, Vol. 1, No, 1, March 1992.

84

.

R. H. Netzerand

B. P. Miller

in Section 2. However, checking for the presence of a feasible general race or data race (a, b) requires determining whether a feasible program execution in which b ~ a (or a ~ b, or a % b) is a member of FDI~~. We have proven that

deciding

these

synchronization NP-hard

[19,

the

conditions

race

suggests next.

membership

the 21].

that,

Indeed,

problems

program

It

uses)

is therefore exhibited

in

practice,

that

proposed

race

feasible

problem

an execution settle

(no matter

locating

an intractable by

we must

previously

is NP-hard

and

of the

for

what

type

races

is also

to locate program.

detection

methods

precisely

This

an approximation,

of

result

discussed

compute

such

an

approximation. 4.3 In

Apparent practice,

require could

locating

the

analyzing have

Previously explicit

Races

the

allowed proposed

intuitive

notion

program’s

of a race

semantics

to

b to precede

a (or

methods

a simpler

synchronization

take

performed

b to execute

by the

that

the

program’s

explicit

execution.

An

4.4. F~Y~c

apparent

Because races

may

shared

An apparent exists.

data

not all

race (a, b) exists

program

be spurious.

variables

general

executions Spurious

are used (directly

and For

iff a data in

races

example,

with

a),

only

the

a and

might orderings,

b

(a, b) exists race

iff

occur

or indirectly)

allow.

Be-

these

races

a general

race

(a, b) over

F~ YNC are feasible, can

would

execution

analyze

synchronization

race

the

(or in some other order) if doing so. We can characterF~ ~Nc, which is based only

cause the program may not be able to exhibit such capture a less accurate notion than feasible races. Definition (a, b) over

race)

if

concurrently

approach

are said to have potentially executed concurrently no explicit synchronization prevented them from ize the races detected by this approach by using on orderings

(a feasible

determine

whenever

in conditional

F~ ~~c exists. some apparent values

of

expressions

the

or

shared-array subscripts [20, 221. In such cases, the existence of one event may depend on another event occurring first. For example, consider one process in P that adds data to a shared buffer and then sets a flag BufEmpty to false, and another process that first tests Bufi!?mpty and then removes data from the buffer only if BufEmpty equals false. Such an execution has two apparent general races, between the accesses to BufEmpty and between the accesses to the buffer. However, the race involving feasible execution exists in which data is removed

the buffer is spurious— no from the buffer before the

buffer is filled (since Bufl?mpty is first tested before data is removed). If the operations on the shared buffer were instead complex and involved many shared-memory references, a large number of spurious races could be re ported. Spurious races pose a problem since they are not direct manifestations of any program bug [20, 22]. The programmer can be overwhelmed with large amounts of misleading information, irrelevant for debugging, that masks the location of actual failures. Nonetheless, apparent race detection provides valuable least one feasible ACM

Letters

information, race exists

on Programming

since apparent races exist if and only if at somewhere in the execution [22]. Moreover, we

Languages

and Systems,

Vol.

1, No. 1, March

1992.

What Are Race Conditions? have

proven

apparent

results

races,

showing

and

conservatively

how

determine

for debugging

[20-22].

We have

also proven

how to reason a postmortem

which that,

about race

apparent

for

races

program

ciently

without

detected

Clear

operations);

in executions

are not of interest implement critical

ent

is therefore

data

races

apparent

general

However,

as we discuss

Debugging

always

race detection

important

next,

aspect

or inconsistent

dats

an

recorded

before

events

To locate

portions

might

events

determination executions

(or absence)

of only

to note

complexity

of used.

data races to detect

determining they

general

whether

races

outcome

races

containing

data

a certain

subset

for

races,

race that to fail deposited

it suffices apparent

Locating

results in a because of than with-

to determine

races cause

trace events

meaningless

we now argue

only

of the

race.

exhibit

it is necessary general

(which

of the contain

of any

may

However,

harder

data

a programmer

portions

of the trace

program

of

by incorrect

example,

on

portions

by a race,

portions

are unaffected

only

by the the

are race free. for

the

debugging

[5, 20]. For

These

unaffected

than

be effi-

of synchronization

lb, for example, a data subsequent withdrawals more money has been

is inherently

nondeterminism)

contrast,

while

focus

because

of the execution

For

involves

to be unaffected

important

can thus

Detection

by a race

trace

behavior after a race. In Figure negative balance might cause insufficient funds when in fact

fail).

determining [19]. Member-

It is important

for debugging

races,

any races occurred.

is

In

in the sense that

produced

execution

are guaranteed

this

of interest

synchronization

races

[23].

on the type

it is sufficient

of debugging

are race-free

browsing

drawn.

to

programs since weaker synchroExhaustively locating all appar-

NP-hard.

depends

with Race Condition

the execution

such

and

using

apparent

programs

for such sections.

only a certain subset of apparent requires exhaustive detection.

that

are feasible

mutual exclusion, races is NP-hard

all

of such

that data races nization cannot

An

of

be extended

F~ ~~c is efficiently computable only for weaker synchronization of implementing mutual exclusion (such as Post/Wait style syn-

chronization

4.4

85

feasibility

can

executions

powerful enough to implement two-process membership in F~ YNC and locating apparent ship in incapable

the potential

detector

.

that

(which

introduce

critical

to detect races.

if

making

sections

to

the presence In

contrast,

to

debug executions containing general races, it is necessary to perform exhaustive apparent general race detection. Data races can be viewed as a local property of the execution which can be determined directly from the actual program execution, P. Because an intended

critical

section

can

execute

conflicting events are concurrently detected directly from P. Definition exists. 6 6A

data

race

4.5.

An

actual

in p ~xi~t~ iff a data ACM

Letters

data

nonatomically executing,

an

race (a, b) exists

race exists

on Programming

over

{P},

Languages

only

when

actual

data

iff a data

the set containing and Systems,

Vol.

other race

datacan be

race (a, b) in

P

OnlY p. 1, No. 1, March

1992.

86

R. H. Netzer and B. P. Miller

.

An actual data race indicates the possibility that the atomicity of a critical section may have actually failed. In contrast, general races are a global property of the program which can be determined only by computing alternative event orderings. In general, determining if two events could have occurred entire

in a different execution;

order

there

requires

analyzing

is no notion

the synchronization

of an actual

general

race.

over the Thus,

unlike

general races, actual data races can be easily located if the temporal ing, ~, is known; computing alternative orderings is unnecessary. This races

difference that

are

has important not

actual

implications

data

races

for

cannot

debugging.

produce

order-

Apparent

inconsistent

data

data (be-

cause no critical sections fail), but any apparent general race indicates such a possibility (because two shared-memory accesses could have executed in the incorrect order). The absence of an actual data race therefore indicates that all intended critical sections in P executed atomically, and the location of an actual race pinpoints places in the execution where inconsistent data should be expected. located,

Even

though

we can efficiently

Thus, we inconsistent

not

all

apparent

determine

can easily determine data which cannot

data

whether

races

any actual

can

be efficiently

data races occurred.

whether the observed execution be relied upon for debugging.

because there is no notion of an actual general race, we must locate all apparent general races to make this determination. apparent occurred These data

races

exist

can

in the expected results suggest

races by locating

can only apparent

apply

we

be

all actual

can

that

all

to programs

be efficiently

located.

shared-memory

data

containing As

powerful

types

of synchronization

(such

races. general

discussed

apparent general race detection is efficient only synchronization incapable of implementing mutual more

exhaustively Only if no references

order was possible). debug programs containing

and some apparent

such an approach

races

sure

order (because no other that we can efficiently

contains However,

above,

However, races

exhaustive

for programs that exclusion. However,

as semaphores),

we if all use

for

conservative

approximations that locate a superset of the apparent general races have been proposed [10, 11]. Such methods provide a means of debugging general of races in the programs using such synchronization, but have the potential misleading the programmer with potentially large numbers of spurious race reports.

5. CONCLUSION the nature of race conditions This paper explores memory parallel programs. By employing a formal

ously

hidden

issues

regarding

the

accuracy

and

that can arise in sharedmodel we uncover previ-

complexity

of dynamic

race

detection. We show that two fundamentally different types of races can occur: general races, pertaining to deterministic programs, and data races, pertaining to nondeterministic programs that use critical sections. We formally characterize these types of races. Previously, races have only been defined intuitively as occurring between data-conflicting blocks of code that “can potentially ACM

Letters

execute

concurrently”

on Programming

Languages

or whose and Systems,

Vol.

execution

order

1, No. 1, March

is not

1992.

“guaran-

What Are Race Conditions? teed. ” Our work orderings

that

properties

is novel

of the

detecting

in that

we explicitly

characterize

of occurring.

Doing

had the potential defined

them,

races,

depend

upon

such

which

as the sets

and

considered.

debugging

using

in practice.

the

of

uncover

two

notion of a race notion (the appar-

by most race detection methods. Since locating the feasible the less accurate apparent races must be relied upon for Moreover,

we uncover

complexity of debugging general races races requires exhaustively computing whether

because

complexity

We

variations of each type of race: one describes the intuitive (the feasible race) and the other describes a less accurate ent race) assumed races is NP-hard,

87

sets of alternative

so is important

accuracy

are

.

execution

fundamental

and data alternative

is nondeterministic),

synchronization

powerful

bugging data races requires fail), which can be efficiently

which

enough

is NP-hard

to implement

simpler analyses performed.

differences

in the

races. Debugging general orderings (to determine for programs

mutual

(to determine

exclusion.

if critical

De-

sections

REFERENCES 1. ALLEN,

T.

R.,

AND PADUA,

Proceedings

of the

Aug.

pp. 721-727.

1987),

2. BALASUNDARAM, parallel (Crete,

Greece,

C’omput. 4. CHOI,

V.,

program.

3. BERNSTEIN,

EC-15

J.-D.,

1989),

(Oct.

MILLER,

with

Debugging

K.

a shared

detection

International

memory

of

race

Conference

machine.

In

Charles,

IL,

(St.

Processing

conditions

in

a

on Supercomputing

175-185.

of programs

B.

in

on Parallel

Compile-time

of the 3rd

pp.

1966),

for

parallel

processing.

IEEE

Trans.

Electronic

for

debugging

757-763.

P.,

flowback

Fortran

Conference

KENNEDY,

Analysis

5

A.

Proceedings

June J.

D.

International

AND

In

A.

programs

1987

AND

analysis.

NETZER, ACM

R.

H.

‘Trans.

B.

Techniques

Program.

Lang.

Syst.

parallel

1991),

13, 4 (Oct.

491-530. 5. CHOI, J.-D., AND MIN, S. L. Race frontier: Reproducing data races in parallel program of the 3rd ACM Symposium on Principles and Practice of Parallel debugging. In Proceedings Programming 6. DINNING, lies

(Williamsburg,

on-the-fly.

7. DINNING, access

VA,

Apr.

A., AND SCHONBERG, E. IBM

A.,

Rep.

RC 15385, An

AND SCHONBERG, E.

anomaly

Practice

Tech.

detection.

of Parallel

1991),

The task

In

Jan.

145-154. technique

comparison

of the 2nd

(Seattle,

for detecting

WA, Mar.

of monitoring

ACM

Symposium

(Santa

Cruz,

CA,

P.

programs.

A.,

In

Debugging

May

1991),

(Madison,

D.

A.

Automatic

May

1988),

pp.

89-99.

(Jan. 1989). 10. EMRATH, P. A., GHOSH, S., AND PADUA, D. A. parallel

programs.

In

detection

of the SIGPLAN/SIGOPS

WI,

Charles,

R.,

12. HOOD, on-the-fly 1990),

IL,

Aug.

Proceedings

KENNEDY, anomaly

1990), K.,

detection.

in programs

with

and Distributed

critical

Debugging

of

of nondeterminacy

Workshop Also

Event

appears

’89

in

on Parallel in

and

SIGPLAN

synchronization

Supercomputing

580-588. 11. HEMLBOLD, D. P., MCDOWELL, C. E., AND WANG, J.-Z. of the 1990 International synchronization. In Proceedings

(St.

for and

pp. 79-90.

AND PADUA,

Proceedings

algorithms on Principles

1990), pp. 1-10.

8. DINNING, A., AND SCHONBERG, E. Detecting access anomalies of the ACM/ ONR Workshop on Parallel sections. In Proceedings 9. EMRATH,

access anoma-

1990.

empirical

Proceedings

Programming

pp.

recycling

Notices

analysis

(Reno,

Analyzing

NV,

24,

1

for debugging

NOV. 1989),

traces with

Conference

parallel

Distributed

on Parallel

PP.

anonymous Processing

pp. 70-77. AND In

MELLOR-CRUMMEY, Proceedings

J

Parallel

of Supercomputing

program

debugging

with

’90

York,

Nov.

(New

NY,

pp. 74-81. ACM

Letters

on Programming

Languages

and Systems,

Vol.

1, No. 1, March

1992.

88

R. H. Netzer and B. P. Miller

.

13. KARAM, G. M., STANCZYK, C. M., AND BOND, G, W. Trans.

Softw.

Eng.

14. LAMPORT, L. programs. tion.

How

IEEE

15. LAMPORT, J,

15, 11 (Nov.

L,

to make

Trans.

The

ACM

mutual

fork-join

J.

exclusion

M.

parallelism.

C-28

1986),

In

Critical

races in Ada programs.

IEEE

1471-1480.

a multiprocessor

Comput.

33, 2 (Apr.

16. MELLOR-CRUMMEY,

1989),

computer

9 (Sept.

problem:

that

1979), Part

correctly

executes

multiprocess

690-691.

I—A

theory

of interprocess

communica-

for

with

313-326.

On-the-fly

detection

Proceedings

of

data

races

of Supercomputing

programs

’91 (Albuquerquej

NM,

nested

Nov.

1991),

24-33. 17. MILLER, In

B. P., AND CHOI, J.-D.

Proceedings

mentation

A mechanism

for efficient

Conference

on Programming

of the SIGPLAN

(Atlanta,

GA, June

1988),

135 – 144. Also

debugging

of parallel

Language

appears

programs.

Design

and

Notices

23, 7 (July

in SIGPLAN

Imple-

1988). 18. MIN,

S. L.,

AND CHOI, J.-D.

Proceedings

of the 4th

Languages

and

An

Operating

20.

parallel

program (St.

NETZER,

R. H.

AND MILLER,

B.,

of the 3rd

(Williamsburg, 21.

VA,

NETZER,

R.

H.

B.

grams.

Computer

Aduances

T. Gross,

Apr.

1991),

Race

R,

with

I.,

NUDLER, programs.

1990),

detection

Support

1991),

scheme.

for

In

Programmmg

235-244.

of event

of the

1990

ordering

for shared-mem-

International

Conference

on

detection.

In

pp. II-93-II-97.

Improving

the

on Principles

accuracy and

of data

Practice

race

of Parallel

Programming

133-144. detection

for

Tech.

B. P.

debugging

Rep.

Eds.

Detecting

Compilers

MIT

AND GHOSH,

shared-memory

# 1039

Press S.

1991,

parallel

(Ph.D.

Thesis),

in parallel

program

pro-

Univ.

of

races

race

In IL,

L.

Tools

for

of the

Ist

Israeli

Processing,

A. Nicolau,

executions. D. Gelernter,

109-129.

Efficient

(St. Charles,

RUDOLPH,

Proceedings

data

for Parallel

synchronization.

Processing

AND

In

P.

Dept.

and

post/wait

ence on Parallel

B.

anomaly

1991.

D, Padua, B.,

Aug.

condition

Aug.

H,

IL,

pp.

CA, Apr. complexity

Proceedings

Symposium

in Languages

and

NETZER, programs

24.

ACM

NETZER, R. H. B., AND MILLER, In

23.

Charles,

access

on Architectural

Alto,

On the

In

Sciences

Wisconsin-Madison, 22.

executions.

Processing

Proceedings

(Palo

B. P.

Parallel

cache-based

Conference

Systems

19. NETZER, R. H. B., AND MILLER, ory

efficient

International

condition

Proceedings Aug.

the

detection

of the 1992

for

shared-memory

International

Confer-

1992), efficient

development

of

on

Computer

System

Reliability

issues

in

world.

In

Conference

efficient

parallel

Engineering

(1988). 25.

RANDELL, design.

26.

LEE,

STEELE, G. L.

P. A.,

Surv. Making

17th

Annual

Jan.

1990),

pp. 218-231.

April

1991;

Received

ACM

B.,

Comput.

Letters

ACM

AND TRELEAVEN,

10, 2 (June asynchronous

Symposium

revised

on Programming

1978),

parallelism

on Principles

October

Languages

P. C.

1991;

computing

system

123-165. safe for the

of Programming

accepted

and Systems,

February

Vol.

Languages

Proceedings (San Francisco,

1992

1, No. 1, March

1992.

of the CA,