Input Repair via Synthesis and Lightweight Error Feedback

08/17/2022
by   Lukas Kirschner, et al.
0

Often times, input data may ostensibly conform to a given input format, but cannot be parsed by a conforming program, for instance, due to human error or data corruption. In such cases, a data engineer is tasked with input repair, i.e., she has to manually repair the corrupt data such that it follows a given format, and hence can be processed by the conforming program. Such manual repair can be time-consuming and error-prone. In particular, input repair is challenging without an input specification (e.g., input grammar) or program analysis. In this work, we show that incorporating lightweight failure feedback (e.g., input incompleteness) to parsers is sufficient to repair any corrupt input data with maximal closeness to the semantics of the input data. We propose an approach (called FSYNTH) that leverages lightweight error-feedback and input synthesis to repair invalid inputs. FSYNTH is grammar-agnostic, and it does not require program analysis. Given a conforming program, and any invalid input, FSYNTH provides a set of repairs prioritized by the distance of the repair from the original input. We evaluate FSYNTH on 806 (real-world) invalid inputs using four well-known input formats, namely INI, TinyC, SExp, and cJSON. In our evaluation, we found that FSYNTH recovers 91 also highly effective and efficient in input repair: It repairs 77 inputs within four minutes. It is up to 35 previously best-known approach. Overall, our approach addresses several limitations of DDMax, both in terms of what it can repair, as well as in terms of the set of repairs offered.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
03/20/2018

Program Repair via Direct State Manipulation

The goal of program repair is to automatically fix programs to meet a sp...
research
11/12/2018

MR-RePair: Grammar Compression based on Maximal Repeats

We analyze the grammar generation algorithm of the RePair compression al...
research
05/20/2020

Graph-based, Self-Supervised Program Repair from Diagnostic Feedback

We consider the problem of learning to repair programs from diagnostic f...
research
07/14/2020

Longitudinal Analysis of the Applicability of Program Repair on Past Commits

The applicability of program repair in the real world is a little resear...
research
11/14/2018

The Remarkable Role of Similarity in Redundancy-based Program Repair

Recently, there have been original attempts to use the concept of simila...
research
03/28/2019

Connecting Program Synthesis and Reachability: Automatic Program Repair using Test-Input Generation

We prove that certain formulations of program synthesis and reachability...
research
06/03/2019

Rpair: Rescaling RePair with Rsync

Data compression is a powerful tool for managing massive but repetitive ...

Please sign up or login with your details

Forgot password? Click here to reset