Practical program analysis using general purpose logic programming systems—a case study
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Efficient and precise modeling of exceptions for the analysis of Java programs
Proceedings of the 1999 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Type-based analysis of uncaught exceptions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Analysis and Testing of Programs with Exception Handling Constructs
IEEE Transactions on Software Engineering
Complexity of Points-To Analysis of Java in the Presence of Exceptions
IEEE Transactions on Software Engineering
Towards a Cost-Effective Estimation of Uncaught Exceptions in SML Programs
SAS '97 Proceedings of the 4th International Symposium on Static Analysis
Exception Analysis for Multithreaded Java Programs
APAQS '01 Proceedings of the Second Asia-Pacific Conference on Quality Software
Static analysis to support the evolution of exception structure in object-oriented systems
ACM Transactions on Software Engineering and Methodology (TOSEM)
Cloning-based context-sensitive pointer alias analysis using binary decision diagrams
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Jedd: a BDD-based relational extension of Java
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
An uncaught exception analysis for Java
Journal of Systems and Software
Testing of java web services for robustness
ISSTA '04 Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis
Robustness Testing of Java Server Applications
IEEE Transactions on Software Engineering
Exception-Chain Analysis: Revealing Exception Handling Architecture in Java Server Applications
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Thread-Sensitive Pointer Analysis for Inter-Thread Dataflow Detection
FTDCS '07 Proceedings of the 11th IEEE International Workshop on Future Trends of Distributed Computing Systems
Defining and continuous checking of structural program dependencies
Proceedings of the 30th international conference on Software engineering
Automatic documentation inference for exceptions
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Evaluating the benefits of context-sensitive points-to analysis using a BDD-based implementation
ACM Transactions on Software Engineering and Methodology (TOSEM)
Strictly declarative specification of sophisticated points-to analyses
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Scaling Java points-to analysis using SPARK
CC'03 Proceedings of the 12th international conference on Compiler construction
Using datalog with binary decision diagrams for program analysis
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
CodeQuest: scalable source code queries with datalog
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Strictly declarative specification of sophisticated points-to analyses
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
SecureBlox: customizable secure distributed data processing
Proceedings of the 2010 ACM SIGMOD International Conference on Management of data
Pick your contexts well: understanding object-sensitivity
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Interprocedural exception analysis for C++
Proceedings of the 25th European conference on Object-oriented programming
Using datalog for fast and easy program analysis
Datalog'10 Proceedings of the First international conference on Datalog Reloaded
Optimizing inequality joins in datalog with approximated constraint propagation
PADL'12 Proceedings of the 14th international conference on Practical Aspects of Declarative Languages
Distributed deductive databases, declaratively: the L10 logic programming language
Proceedings of the 2011 ACM SIGPLAN X10 Workshop
Proceedings of the 10th international conference on Mobile systems, applications, and services
LogicBlox, platform and language: a tutorial
Datalog 2.0'12 Proceedings of the Second international conference on Datalog in Academia and Industry
Efficient and effective handling of exceptions in java points-to analysis
CC'13 Proceedings of the 22nd international conference on Compiler Construction
New exception interfaces for Java-like languages
Proceedings of the 28th Annual ACM Symposium on Applied Computing
Set-based pre-processing for points-to analysis
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Sound and precise malware analysis for android via pushdown reachability and entry-point saturation
Proceedings of the Third ACM workshop on Security and privacy in smartphones & mobile devices
Hi-index | 0.00 |
Exception analysis and points-to analysis are typically done in complete separation. Past algorithms for precise exception analysis (e.g., pairing throw clauses with catch statements) use pre-computed points-to information. Past points-to analyses either unsoundly ignore exceptions, or conservatively compute a crude approximation of exception throwing (e.g., considering an exception throw as an assignment to a global variable, accessible from any catch clause). We show that this separation results in significant slowdowns or vast imprecision. The two kinds of analyses are interdependent: neither can be performed accurately without the other. The interdependency leads us to propose a joint handling for performance and precision. We show that our exception analysis is expressible highly elegantly in a declarative form, and can apply to points-to analyses of varying precision. In fact, our specification of exception analysis is "fully precise", as it models closely the Java exception handling semantics. The necessary approximation is provided only through whichever abstractions are used for contexts and objects in the base points-to analysis. Our combined approach achieves similar precision relative to exceptions (exception-catch links) as the best past precise exception analysis, with a runtime of seconds instead of tens of minutes. At the same time, our analysis achieves much higher precision of points-to information (an average of half as many values for each reachable variable for most of the DaCapo benchmarks) than points-to analyses that treat exceptions conservatively, all at a fraction of the execution time.