Dynamic patch generation for null pointer exceptions using metaprogramming

@article{Durieux2017DynamicPG,
  title={Dynamic patch generation for null pointer exceptions using metaprogramming},
  author={Thomas Durieux and B. Cornu and L. Seinturier and Monperrus Martin},
  journal={2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER)},
  year={2017},
  pages={349-358}
}
Null pointer exceptions (NPE) are the number one cause of uncaught crashing exceptions in production. In this paper, we aim at exploring the search space of possible patches for null pointer exceptions with metaprogramming. Our idea is to transform the program under repair with automated code transformation, so as to obtain a metaprogram. This metaprogram contains automatically injected hooks, that can be activated to emulate a null pointer exception patch. This enables us to perform a fine… Expand
An Automatic Localization Tool for Null Pointer Exceptions
TLDR
An automatically null pointer exception localization approach guided by stack trace, from the null pointer dereference to the null value assignment point is proposed, and an empirical study is designed to evaluate the effectiveness of the tool on eight open source projects. Expand
Towards Decoupling Nullability Semantics from Indirect Access in Pointer Use
TLDR
An automated analysis tool is devised that marks potentially redundant pointer variables, lowering the number of visible local symbols in the local scope, not only for indirect access. Expand
VFix: Value-Flow-Guided Precise Program Repair for Null Pointer Dereferences
TLDR
VFIX is presented, a new value-flow-guided APR approach, to fix null pointer exception (NPE) bugs by considering a substantially reduced solution space in order to greatly increase the number of correct patches generated. Expand
MemFix: static analysis-based repair of memory deallocation errors for C
TLDR
The key insight behind MemFix is that finding such a set of deallocation statements corresponds to solving an exact cover problem derived from a variant of typestate static analysis. Expand
SAVER: Scalable, Precise, and Safe Memory-Error Repair
TLDR
SAVER is presented, a new memory-error repair technique for C programs based on a novel representation of the program called object flow graph, which summarizes the program's heap-related behavior using static analysis and shows that fixing memory errors can be formulated as a graph labeling problem over object flowgraph and present an efficient algorithm. Expand
Production-Driven Patch Generation
  • Thomas Durieux, Y. Hamadi, Monperrus Martin
  • Engineering, Computer Science
  • 2017 IEEE/ACM 39th International Conference on Software Engineering: New Ideas and Emerging Technologies Results Track (ICSE-NIER)
  • 2017
TLDR
This work proposes to generate patches on-the-fly based on automated analysis of the failure context directly in production, by feeding a sandboxed version of the application with a copy of the production traffic, the 'shadow traffic'. Expand
On the Efficiency of Test Suite based Program Repair A Systematic Assessment of 16 Automated Repair Systems for Java Programs
TLDR
A large-scale empirical study on the efficiency, in terms of quantity of generated patch candidates of the 16 open-source repair tools for Java programs, and notes that current template-based repair systems are actually least efficient as they tend to generate majoritarily irrelevant patch candidates. Expand
BEARS: An Extensible Java Bug Benchmark for Automatic Program Repair Studies
TLDR
BEARS, a project for collecting and storing bugs into an extensible bug benchmark for automatic repair studies in Java, is presented, and the version 1.0 of BEARS is delivered, which contains 251 reproducible bugs collected from 72 projects that use the Travis CI and Maven build environment. Expand
iFixR: bug report driven program repair
TLDR
This work investigates a new repair pipeline, iFixR, driven by bug reports, where bug reports are fed to an IR-based fault localizer; patches are generated from fix patterns and validated via regression testing; and a prioritized list of generated patches is proposed to developers. Expand
Repairnator patches programs automatically
TLDR
Repairnator has been able to produce patches that were accepted by the human developers and permanently merged into the code base, a milestone for human-competitiveness in software engineering research on automatic program repair. Expand
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 21 REFERENCES
NPEFix: Automatic Runtime Repair of Null Pointer Exceptions in Java
TLDR
This paper proposes 9 alternative execution semantics when a null pointer exception is about to happen and implements those alternative execution strategies using code transformation in a tool called NPEfix, which is able to repair at runtime 10/11 and 318/519 failures. Expand
Changing Java's Semantics for Handling Null Pointer Exceptions
  • K. Dobolyi, Westley Weimer
  • Computer Science
  • 2008 19th International Symposium on Software Reliability Engineering (ISSRE)
  • 2008
TLDR
This work proposes to transform programs so that null pointer dereferences are handled automatically without a large runtime overhead, and increases robustness by replacing code that raises null pointer exceptions with error-handling code, allowing the program to continue execution. Expand
Dynamic Error Remediation : A Case Study with Null Pointer Exceptions
Managed programming languages have improved the robustness of software by reducing some classes of errors. Despite these improvements, programs still contain errors. Even with help from existingExpand
Automatic repair of buggy if conditions and missing preconditions with SMT
TLDR
Nopol repairs object oriented code and allows the patches to contain nullness checks as well as specific method calls. Expand
Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs
TLDR
Empirical analysis on Nopol shows that the approach can effectively fix bugs with buggy if conditions and missing preconditions on two large open-source projects, namely Apache Commons Math and Apache Commons Lang. Expand
SemFix: Program repair via semantic analysis
TLDR
This paper presents an automated repair method based on symbolic execution, constraint solving and program synthesis, which reports a higher success-rate than genetic programming based repair, and produces a repair faster. Expand
Automatic runtime error repair and containment via recovery shepherding
TLDR
A system, RCV, for enabling software applications to survive divide-by-zero and null-dereference errors and performs a manual analysis of the source code relevant to the benchmark errors, which indicates that for 11 of the 18 errors the RCV and later patched versions produce identical or equivalent results on all inputs. Expand
Automatic Software Repair
TLDR
This article considers behavioral repair where test suites, contracts, models, and crashing inputs are taken as oracle, and state repair, also known as runtime repair or runtime recovery, with techniques such as checkpoint and restart, reconfiguration, and invariant restoration. Expand
Automatic Error Correction of Java Programs
TLDR
A technique for automatically detecting and correcting software bugs is presented, implemented on top of the Java Pathfinder Framework, to find a combination of alternatives yielding a correct program. Expand
Enhancing Server Availability and Security Through Failure-Oblivious Computing
TLDR
Failure-oblivious computing is presented, a new technique that enables servers to execute through memory errors without memory corruption and enables the servers to continue to operate successfully to service legitimate requests and satisfy the needs of their users even after attacks trigger their memory errors. Expand
...
1
2
3
...