Proceedings of the 2011 International Symposium on Software Testing and Analysis 2011
DOI: 10.1145/2001420.2001436
|View full text |Cite
|
Sign up to set email alerts
|

Testing concurrent programs on relaxed memory models

Abstract: High-performance concurrent libraries, such as lock-free data structures and custom synchronization primitives, are notoriously difficult to write correctly. Such code is often implemented without locks, instead using plain loads and stores and low-level operations like atomic compare-and-swaps and explicit memory fences. Such code must run correctly despite the relaxed memory model of the underlying compiler, virtual machine, and/or hardware. These memory models may reorder the reads and writes issued by a th… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
33
0

Year Published

2011
2011
2018
2018

Publication Types

Select...
7
3

Relationship

0
10

Authors

Journals

citations
Cited by 68 publications
(33 citation statements)
references
References 32 publications
(61 reference statements)
0
33
0
Order By: Relevance
“…There exist several techniques for program testing and verification under relaxed memory models, and tools have been developed that implement these techniques (cf. [6,7,9,8,22].) To utilize a verification tool (e.g.…”
Section: Related Workmentioning
confidence: 99%
“…There exist several techniques for program testing and verification under relaxed memory models, and tools have been developed that implement these techniques (cf. [6,7,9,8,22].) To utilize a verification tool (e.g.…”
Section: Related Workmentioning
confidence: 99%
“…Existing approaches avoid solving the general problem by considering under-approximations, over-approximations, restricted classes of programs, forbidding sequential inconsistent behavior, or by proposing exact algorithms for which termination is not guaranteed. Under-approximations of the program behavior can be achieved through testing [9], bounded model checking [7,6], or by restricting the behavior of the program, e.g., through bounding the sizes of the buffers [18] or the number of switches [5]. Such techniques are useful in practice for finding errors.…”
Section: Contributionmentioning
confidence: 99%
“…Existing Approaches Existing approaches either employ underapproximations such as bounded checking [5] and testing [8], or side-step the problem by focusing on a restricted class of programs. For instance, [32] considers data-race free programs, and [28] focuses on programs free from a particular ("triangular") type of data races.…”
Section: Program Verification and Fence Inferencementioning
confidence: 99%