Abstract
Static deadlock analyses might be able to verify the absence of deadlock. However, they are usually not able to detect its presence. Moreover, when a potential deadlock is detected, they provide little (and often no) information that can help the user in finding the source of the anomalous behaviour. This paper proposes a testing methodology that combines static analysis and symbolic execution for effective deadlock detection in asynchronous programs. When the program features a deadlock, our testing methodology provides an effective technique to catch deadlock traces. While if the program does not have deadlock, but the static deadlock analysis inaccurately spotted it, our approach is able to prove deadlock freedom (up to the limit of the performed symbolic exploration).
Highlights
A deadlock occurs when a concurrent program reaches a state in which a set of processes or tasks are waiting for some event or condition and they are all unable to change the state, do not allowing the program to make any progress
GUIDING TESTING USING STATIC DEADLOCK ANALYSIS we present our new methodology, a combination of static analysis and systematic/symbolic execution for effective deadlock detection that works as follows
GOALS OF THE EXPERIMENTAL EVALUATION we show our experimental evaluation whose goals are the following: G1 Show that systematic/symbolic execution based testing complements static deadlock analysis
Summary
A deadlock occurs when a concurrent program reaches a state in which a set of processes or tasks are waiting for some event or condition and they are all unable to change the state, do not allowing the program to make any progress. [12] is the extension, implementation and experimental evaluation of our deadlockguided approach to the static testing setting with symbolic execution This allows applying our approach to find deadlock traces to contexts where the input data is unknown. The practical impact of such extension is important as we can use it to prove deadlock freeness, i.e., if we are able to symbolically execute the whole program without finding any deadlock trace, nor termination problem, the program is proven to be deadlock free This allows applying our approach for performing test-case generation via symbolic execution [13], [14]. The original research was part of the Master thesis of one of the authors [15] where we explored a proof-of-concept of the approach in the Constraint Logic Programming setting
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.