853 research outputs found
Finding Regressions in Projects under Version Control Systems
Version Control Systems (VCS) are frequently used to support development of
large-scale software projects. A typical VCS repository of a large project can
contain various intertwined branches consisting of a large number of commits.
If some kind of unwanted behaviour (e.g. a bug in the code) is found in the
project, it is desirable to find the commit that introduced it. Such commit is
called a regression point. There are two main issues regarding the regression
points. First, detecting whether the project after a certain commit is correct
can be very expensive as it may include large-scale testing and/or some other
forms of verification. It is thus desirable to minimise the number of such
queries. Second, there can be several regression points preceding the actual
commit; perhaps a bug was introduced in a certain commit, inadvertently fixed
several commits later, and then reintroduced in a yet later commit. In order to
fix the actual commit it is usually desirable to find the latest regression
point.
The currently used distributed VCS contain methods for regression
identification, see e.g. the git bisect tool. In this paper, we present a new
regression identification algorithm that outperforms the current tools by
decreasing the number of validity queries. At the same time, our algorithm
tends to find the latest regression points which is a feature that is missing
in the state-of-the-art algorithms. The paper provides an experimental
evaluation of the proposed algorithm and compares it to the state-of-the-art
tool git bisect on a real data set
Fonte: Finding Bug Inducing Commits from Failures
A Bug Inducing Commit (BIC) is a commit that introduces a software bug into
the codebase. Knowing the relevant BIC for a given bug can provide valuable
information for debugging as well as bug triaging. However, existing BIC
identification techniques are either too expensive (because they require the
failing tests to be executed against previous versions for bisection) or
inapplicable at the debugging time (because they require post hoc artefacts
such as bug reports or bug fixes). We propose Fonte, an efficient and accurate
BIC identification technique that only requires test coverage. Fonte combines
Fault Localisation (FL) with BIC identification and ranks commits based on the
suspiciousness of the code elements that they modified. Fonte reduces the
search space of BICs using failure coverage as well as a filter that detects
commits that are merely style changes. Our empirical evaluation using 130
real-world BICs shows that Fonte significantly outperforms state-of-the-art BIC
identification techniques based on Information Retrieval as well as neural code
embedding models, achieving at least 39% higher MRR. We also report that the
ranking scores produced by Fonte can be used to perform weighted bisection,
further reducing the cost of BIC identification. Finally, we apply Fonte to a
large-scale industry project with over 10M lines of code, and show that it can
rank the actual BIC within the top five commits for 87% of the studied real
batch-testing failures, and save the BIC inspection cost by 32% on average.Comment: accepted to ICSE'23 (not the final version
Parallelizing tests with pessimistic speculative execution
Fuzzy testing or fuzzing is a technique for finding software vulnerabilities. Fuzzing works by feeding quasi-random, auto-generated input sequences to a target program and searching for failures. Fuzzers find inputs that trigger bugs; however, understanding those bugs is easier when extraneous data is removed to the extent possible. Extraneous data is removed by bisection, which is typically a serial procedure, e.g., doesn’t advance without knowing the result of the previous step. This makes test case optimization slow, sometimes taking hours to complete while CPU cores sit idle.
This disclosure describes techniques that parallelize the bisection procedure, e.g., by speculatively executing test cases steps ahead of the current position of the bisection procedure. Test results often become known by the time the bisection procedure reaches a certain step, which substantially accelerates testing
Visualization of pentatopic meshes
We propose a simple tool to visualize 4D unstructured
pentatopic meshes. The method slices unstructured 4D
pentatopic meshes (fields) with an arbitrary 3D hyperplane and
obtains a conformal 3D unstructured tetrahedral representation
of the mesh (field) slice ready to explore with standard 3D
visualization tools. The results show that the method is suitable
to visually explore 4D unstructured meshes. This capability has
facilitated devising our 4D bisection method, and thus, we think
it might be useful when devising new 4D meshing methods.
Furthermore, it allows visualizing 4D scalar fields, which is a
crucial feature for our space-time application
- …