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

Runtime prevention of concurrency related type-state violations in multithreaded applications

Abstract: We propose a new method for runtime prevention of type state violations in multithreaded applications due to erroneous thread interleavings. The new method employs a combination of static and dynamic program analysis techniques to control the execution order of the method calls to suppress illegal call sequences. The legal behavior of a shared object is specified by a type-state automaton, which serves as the guidance for our method to delay certain method calls at run time. Our main contribution is a new theo… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
8
0

Year Published

2014
2014
2021
2021

Publication Types

Select...
5
3
1

Relationship

2
7

Authors

Journals

citations
Cited by 12 publications
(8 citation statements)
references
References 47 publications
0
8
0
Order By: Relevance
“…A key barrier to sound typestate analyses is the need to reason about aliasing. Consider the classic example [137,325,287,129,138,302,320,275,324,318,6,243,80,184,10,75,328,101,102] of a File object, whose typestate is specified in fig. 3.1, and the following program in a Java-like imperative language: File f = new File(...); f.open(); File g = f; // f and g are aliases after this line is executed g.close(); f.read(); // an error occurs when this line is executed On line 3, the shared object-which both aliases f and g refer to-is in the open typestate.…”
Section: Motivationmentioning
confidence: 99%
See 1 more Smart Citation
“…A key barrier to sound typestate analyses is the need to reason about aliasing. Consider the classic example [137,325,287,129,138,302,320,275,324,318,6,243,80,184,10,75,328,101,102] of a File object, whose typestate is specified in fig. 3.1, and the following program in a Java-like imperative language: File f = new File(...); f.open(); File g = f; // f and g are aliases after this line is executed g.close(); f.read(); // an error occurs when this line is executed On line 3, the shared object-which both aliases f and g refer to-is in the open typestate.…”
Section: Motivationmentioning
confidence: 99%
“…The need to call a distinguished initialization method on an object after its constructor finishes but before using it appears 7 times across 4 papers [123,81,275,324]. For example, when using a Socket object, one must call connect() before using it to send data (fig.…”
Section: Papers Containing Examplesmentioning
confidence: 99%
“…Runtime enforcement is related to, but also different from, the various software techniques for error avoidance. For example, failure-oblivious computing [25], [38] was used to allow software applications to execute through memory errors; temporal properties [26], [46] were leveraged to control thread schedules to avoid runtime failures of concurrent software. However, these techniques are not designed to target cyberphysical systems with real-valued signals, where corrections are expected to be made instantaneously, i.e., in the same time step when errors occur.…”
Section: Related Workmentioning
confidence: 99%
“…Thus, recent works have being introduced the techniques of healing data races rather than detecting the bugs. Existing techniques that heal data races [7][8][9][10][11] can be categorized into three approaches: always-on, failure-recovery, and post-mortem. Always-on approach constrains program execution all the time to prevent potential manifestations of some concurrency bugs [10].…”
Section: Techniques For Healing Data Racesmentioning
confidence: 99%