Results 1 - 10
of
28
Context-Sensitive Synchronization-Sensitive Analysis is Undecidable
- ACM Transactions on Programming Languages and Systems
, 1999
"... This report has been submitted for publication outside of IBM and will probably be copyrighted if accepted for publication. It has been issued as a Research Report for early dissemination of its contents. In view of the transfer of copyright to the outside publisher, its distribution outside of IBM ..."
Abstract
-
Cited by 70 (0 self)
- Add to MetaCart
This report has been submitted for publication outside of IBM and will probably be copyrighted if accepted for publication. It has been issued as a Research Report for early dissemination of its contents. In view of the transfer of copyright to the outside publisher, its distribution outside of IBM prior to publication should be limited to peer communications and specific requests. After outside publication, requests should be filled only by reprints or legally obtained copies of the article (e.g., payment of royalties). Copies may be requested from IBM T. J. Watson Research Center [Publications 16-220 ykt] P. O. Box 218, Yorktown Heights, NY 10598. email: reports@us.ibm.com
A Generic Approach to the Static Analysis of Concurrent Programs with Procedures
, 2003
"... We present a generic aproach to the static analysis of concurrent programs with procedures. We model programs as communicating pushdown systems. It is known that typical dataow problems for this model are undecidable, because the emptiness problem for the intersection of context-free languages, w ..."
Abstract
-
Cited by 63 (13 self)
- Add to MetaCart
We present a generic aproach to the static analysis of concurrent programs with procedures. We model programs as communicating pushdown systems. It is known that typical dataow problems for this model are undecidable, because the emptiness problem for the intersection of context-free languages, which is undecidable, can be reduced to them. In this paper we propose an algebraic framework for de ning abstractions (upper approximations) of context-free languages. We consider two classes of abstractions: nite-chain abstractions, which are abstractions whose domains do not contain any in- nite chains, and commutative abstractions corresponding to classes of languages that contain a word if and only if they contain all its permutations. We show how to compute such approximations by combining automata theoretic techniques with algorithms for solving systems of polynomial inequations in Kleene algebras.
An Efficient Algorithm for Computing MHP Information for Concurrent Java Programs
, 1999
"... Abstract. Information about which statements in a concurrent program may happen in parallel (MHP) has a number of important applications. It can be used in program optimization, debugging, program understanding tools, improving the accuracy of data flow approaches, and detecting synchronization anom ..."
Abstract
-
Cited by 44 (7 self)
- Add to MetaCart
Abstract. Information about which statements in a concurrent program may happen in parallel (MHP) has a number of important applications. It can be used in program optimization, debugging, program understanding tools, improving the accuracy of data flow approaches, and detecting synchronization anomalies, such as data races. In this paper we propose a data flow algorithm for computing a conservative estimate of the MHP information for Java programs that has a worstcase time bound that is cubic in the size of the program. We present a preliminary experimental comparison between our algorithm and a reachability analysis algorithm that determines the ”ideal ” static MHP information for concurrent Java programs. This initial experiment indicates that our data flow algorithm precisely computed the ideal MHP information in the vast majority of cases we examined. In the two out of 29 cases where the MHP algorithm turned out to be less than ideally precise, the number of spurious pairs was small compared to the total number of ideal MHP pairs. 1
Data flow analysis for checking properties of concurrent Java programs
- In Proceedings of the 21st International Conference on Software Engineering
, 1999
"... In this paper we show how the FLAVERS data flow analysis technique, originally formulated for programs with the rendezvous model of concurrency, can be applied to concurrent Java programs. The general approach of FLAVERS is based on modeling a concurrent program as a flow graph and using a data flow ..."
Abstract
-
Cited by 39 (11 self)
- Add to MetaCart
In this paper we show how the FLAVERS data flow analysis technique, originally formulated for programs with the rendezvous model of concurrency, can be applied to concurrent Java programs. The general approach of FLAVERS is based on modeling a concurrent program as a flow graph and using a data flow analysis algorithm over this graph to check statically if a property holds on all executions of the program. The accuracy of this analysis can be improved by supplying additional information, represented as finite state automata, to the data flow analysis algorithm. In this paper we present a straightforward approach for modeling Java programs that uses the accuracy improving mechanism to represent the possible communications among threads in Java programs, instead of representing them directly in the flow graph model. We also discuss a number of error-prone thread communication patterns that can arise in Java and describe how FLAVERS can be used to check for the presence of these. 1
Isolating Failure-Inducing Thread Schedules
- In International Symposium on Software Testing and Analysis
, 2002
"... Consider a multi-threaded application that occasionally fails due to non-determinism. Using the DEJAVU capture/replay tool, it is possible to record the thread schedule and replay the application in a deterministic way. By systematically narrowing down the difference between a thread schedule that m ..."
Abstract
-
Cited by 31 (1 self)
- Add to MetaCart
Consider a multi-threaded application that occasionally fails due to non-determinism. Using the DEJAVU capture/replay tool, it is possible to record the thread schedule and replay the application in a deterministic way. By systematically narrowing down the difference between a thread schedule that makes the program pass and another schedule that makes the program fail, the Delta Debugging approach can pinpoint the error location automatically -- namely, the location(s) where a thread switch causes the program to fail. In a case study, Delta Debugging isolated the failure-inducing schedule difference from 3.8 billion differences in only 50 tests.
FLAVERS: a Finite State Verification Technique for Software Systems
- IBM Systems Journal
, 2001
"... Software systems are increasing in size and complexity and, subsequently, are becoming ever more difficult to validate. Finite State Verification (FSV) has been gaining credibility and attention as an alternative to testing and to formal verification approaches based on theorem proving. There has re ..."
Abstract
-
Cited by 24 (2 self)
- Add to MetaCart
Software systems are increasing in size and complexity and, subsequently, are becoming ever more difficult to validate. Finite State Verification (FSV) has been gaining credibility and attention as an alternative to testing and to formal verification approaches based on theorem proving. There has recently been a great deal of excitement about the potential for FSV approaches to prove properties about hardware descriptions but, for the most part, these approaches do not scale adequately to handle the complexity usually found in software. In this paper, we describe an FSV approach that creates a compact and conservative, but imprecise, model of the system being analyzed, and then assists the analyst in adding additional details as guided by previous analysis results. This paper describes this approach and a prototype implementation, called FLAVERS, presents a detailed example, and then provides some experimental results demonstrating scalability.
The Right Algorithm at the Right Time: Comparing Data Flow Analysis Algorithms for Finite State Verification
- In Proceedings of the 23rd International Conference on Software Engineering
, 2001
"... Finite state verification is emerging as an important technology for proving properties about software. In our experience, we have found that analysts have different expectations at different times. When an analyst is in an exploratory mode, initially formulating and verifying properties, analyses u ..."
Abstract
-
Cited by 17 (3 self)
- Add to MetaCart
Finite state verification is emerging as an important technology for proving properties about software. In our experience, we have found that analysts have different expectations at different times. When an analyst is in an exploratory mode, initially formulating and verifying properties, analyses usually find inconsistencies because of flaws in the properties or in the software artifacts being analyzed. Once an inconsistency is found, the analyst begins to operate in a fault finding mode, during which meaningful counter example traces are needed to help determine the cause of the inconsistency. Eventually systems become relatively stable, but still require re-verification as evolution occurs. During such periods, the analyst is operating in a maintenance mode and would expect re-verification to usually report consistent results. Although it could be that one algorithm suits all three of these modes of use, the hypothesis explored here is that each would be best served by an algorithm optimized for the expectations of the analyst.
Static Datarace Analysis for Multithreaded Object-Oriented Programs
- IBM Research Division, Thomas J. Watson Research Centre
, 2001
"... This paper presents a novel analysis framework and algorithm for statically identifying dataraces in multithreaded object-oriented programs. The framework shows how datarace analysis can be formulated as a conjunction of interthread control flow analysis and points-to analysis of thread objects, syn ..."
Abstract
-
Cited by 15 (1 self)
- Add to MetaCart
This paper presents a novel analysis framework and algorithm for statically identifying dataraces in multithreaded object-oriented programs. The framework shows how datarace analysis can be formulated as a conjunction of interthread control flow analysis and points-to analysis of thread objects, synchronization objects and access objects. This formulation can be used to identify a spectrum of dataraces depending on the precision of points-to and control flow information received as input. The framework can be used for datarace analysis of programs written in any multithreaded object-oriented language that supports creation of thread objects, monitor-like synchronization of threads via object-based locking, and global memory accesses via static and instance fields.
Context-Sensitive Slicing of Concurrent Programs
, 2003
"... Program slicing is a technique to identify statements that may influence the computations at other statements. Precise slicing has been shown to be undecidable for concurrent programs. This work presents the first context-sensitive approach to slice concurrent programs accurately. It extends the wel ..."
Abstract
-
Cited by 14 (1 self)
- Add to MetaCart
Program slicing is a technique to identify statements that may influence the computations at other statements. Precise slicing has been shown to be undecidable for concurrent programs. This work presents the first context-sensitive approach to slice concurrent programs accurately. It extends the well known structures of the control flow graph and the (interprocedural) program dependence graph for concurrent programs with interference. This new technique does not require serialization or inlining.
Breaking Up is Hard to Do: An Investigation of Decomposition for Assume-Guarantee Reasoning
, 2004
"... Finite-state verification techniques, such as model checking, are often hampered by the state explosion problem, where the number of reachable states to be explored is exponential in the number of concurrent processes in a system. One proposed approach for addressing this problem is assume-guarantee ..."
Abstract
-
Cited by 13 (3 self)
- Add to MetaCart
Finite-state verification techniques, such as model checking, are often hampered by the state explosion problem, where the number of reachable states to be explored is exponential in the number of concurrent processes in a system. One proposed approach for addressing this problem is assume-guarantee reasoning in which a system is decomposed into subsystems and, after appropriate assumptions are selected about the behavior of these subsystems, the verification of the original system is accomplished via the verification of these smaller subsystems. Recent advances in assume-guarantee reasoning allow the assumptions to be automatically generated. An outstanding problem, however, is how to find good decompositions. To explore this problem, we undertook a study that considered all two-way decompositions for a set of systems and properties. By increasing the number of repeated tasks for a system, we evaluated the decompositions as the systems were scaled to larger sizes. Our results show that, in most cases, we were able to find a decomposition that led to memory savings at the cost of additional time. Surprisingly, our use of assume-guarantee reasoning did not usually produce a large enough savings in memory to allow us to verify a larger configuration than monolithic verification. This negative result casts doubt on the usefulness of assume-guarantee reasoning as an effective compositional approach for increasing the size of systems that can be analyzed by finite-state verification.

