Our system is currently under heavy load due to increased usage. We're actively working on upgrades to improve performance. Thank you for your patience.
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
7
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
7
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%