Javascript must be enabled to continue!
Veritesting Challenges in Symbolic Execution of Java
View through CrossRef
Scaling symbolic execution to industrial-sized programs is an important open research problem. Veritesting is a promising technique that improves scalability by combining the advantages of static symbolic execution with those of dynamic symbolic execution. The goal of veritesting is to reduce the number of paths to explore in symbolic execution by creating formulas describing regions of code using disjunctive formulas. In previous work, veritesting was applied to binary-level symbolic execution.
Integrating veritesting with Java bytecode presents unique challenges: notably, incorporating non-local control jumps caused by runtime polymorphism, exceptions, native calls, and dynamic class loading. If these language features are not accounted for, we hypothesize that the static code regions described by veritesting are often small and may not lead to substantial reduction in paths. We examine this hypothesis by running a Soot-based static analysis on six large open-source projects used in the Defects4J collection. We find that while veritesting can be applied in thousands of regions, allowing static symbolic execution involving non-local control jumps amplifies the performance improvement obtained from veritesting. We hope to use these insights to support efficient veritesting in Symbolic PathFinder in the near future. Toward this end, we brie y address some engineering challenges to add veritesting into SPF.
Association for Computing Machinery (ACM)
Title: Veritesting Challenges in Symbolic Execution of Java
Description:
Scaling symbolic execution to industrial-sized programs is an important open research problem.
Veritesting is a promising technique that improves scalability by combining the advantages of static symbolic execution with those of dynamic symbolic execution.
The goal of veritesting is to reduce the number of paths to explore in symbolic execution by creating formulas describing regions of code using disjunctive formulas.
In previous work, veritesting was applied to binary-level symbolic execution.
Integrating veritesting with Java bytecode presents unique challenges: notably, incorporating non-local control jumps caused by runtime polymorphism, exceptions, native calls, and dynamic class loading.
If these language features are not accounted for, we hypothesize that the static code regions described by veritesting are often small and may not lead to substantial reduction in paths.
We examine this hypothesis by running a Soot-based static analysis on six large open-source projects used in the Defects4J collection.
We find that while veritesting can be applied in thousands of regions, allowing static symbolic execution involving non-local control jumps amplifies the performance improvement obtained from veritesting.
We hope to use these insights to support efficient veritesting in Symbolic PathFinder in the near future.
Toward this end, we brie y address some engineering challenges to add veritesting into SPF.
Related Results
THE GENUS Cnidoscolus Pohl (EUPHORBIACEAE) IN JAVA
THE GENUS Cnidoscolus Pohl (EUPHORBIACEAE) IN JAVA
AbstrakInformasi mengenai suku Euphorbiaceae di Pulau Jawa telah direkam dalam buku Flora of Java Volume 1 oleh C.A. Backer and R.C. Bakhuizen van den Brink Jr. Meskipun demikian, ...
ANALYSIS OF ECONOMIC PERFORMANCE AND ECONOMIC POTENTIAL OF EAST JAVA PROVINCE
ANALYSIS OF ECONOMIC PERFORMANCE AND ECONOMIC POTENTIAL OF EAST JAVA PROVINCE
This study aimed to investigate economic growth, regional economic pattern and structure of East Java Province. Other than that, this study also identified anddetermined superior s...
Genetic Programming for Symbolic Regression on Incomplete Data
Genetic Programming for Symbolic Regression on Incomplete Data
<p><b>Symbolic regression is the process of constructing mathematical expressions that best fit given data sets, where a target variable is expressed in terms of input ...
Modèles, outils et plate-forme d’exécution pour les applications à service dynamiques
Modèles, outils et plate-forme d’exécution pour les applications à service dynamiques
L'essor de l'Internet et l'évolution des dispositifs communicants ont permis l'intégration du monde informatique et du monde réel, ouvrant ainsi la voie à de nouveaux types d'appli...
Deterministic state space exploration
Deterministic state space exploration
Abstract
Symbolic execution is a very active research area due to its automatic test-case generation, bug finding, and many more applications. Despite the many recent pro...
Challenges in Execution of Brownfield Projects Without Production Shutdown – Case Study
Challenges in Execution of Brownfield Projects Without Production Shutdown – Case Study
Abstract
Oil producing companies are targeting minimal modifications to existing facilities in an attempt to increase oil production with minimal capital investment ...
BejaGNN: Behavior-based Java Malware Detection via Graph Neural Network
BejaGNN: Behavior-based Java Malware Detection via Graph Neural Network
AbstractAs a popular platform-independent language, Java is widely used in enterprise applications. In the past few years, language vulnerabilities exploited by Java malware have b...
Market orientations, product innovation and organizational performance: A case study on selected beer factories found in Ethiopia
Market orientations, product innovation and organizational performance: A case study on selected beer factories found in Ethiopia
Abstract
Overview was led to explore the relationship between advertise direction, creation process, item execution, authoritative execution and budgetary execution. The mo...

