Runtime exception detection in Java programs using symbolic execution

István Kádár, Péter Hegedus, R. Ferenc

Research output: Contribution to journalArticle

4 Citations (Scopus)

Abstract

Most of the runtime failures of a software system can be revealed during test execution only, which has a very high cost. In Java programs, runtime failures are manifested as unhandled runtime exceptions. In this paper we present an approach and tool for detecting runtime exceptions in Java programs without having to execute tests on the software. We use the symbolic execution technique to implement the approach. By executing the methods of the program symbolically we can determine those execution branches that throw exceptions. Our algorithm is able to generate concrete test inputs also that cause the program to fail in runtime. We used the Symbolic PathFinder extension of the Java PathFinder as the symbolic execution engine. Besides small example codes we evaluated our algorithm on three open source systems: jEdit, ArgoUML, and log4j. We found multiple errors in the log4j system that were also reported as real bugs in its bug tracking system.

Original languageEnglish
Pages (from-to)331-352
Number of pages22
JournalActa Cybernetica
Volume21
Issue number3
Publication statusPublished - 2014

Fingerprint

Symbolic Execution
Exception
Java
Concretes
Engines
Tracking System
Open Source
Software System
Costs
Branch
Engine
Software

Keywords

  • Java runtime exception
  • Rule checking
  • Symbolic execution

ASJC Scopus subject areas

  • Computational Theory and Mathematics
  • Theoretical Computer Science

Cite this

Runtime exception detection in Java programs using symbolic execution. / Kádár, István; Hegedus, Péter; Ferenc, R.

In: Acta Cybernetica, Vol. 21, No. 3, 2014, p. 331-352.

Research output: Contribution to journalArticle

Kádár, István ; Hegedus, Péter ; Ferenc, R. / Runtime exception detection in Java programs using symbolic execution. In: Acta Cybernetica. 2014 ; Vol. 21, No. 3. pp. 331-352.
@article{ac5667198e5b4733aa400b9a881e4c9e,
title = "Runtime exception detection in Java programs using symbolic execution",
abstract = "Most of the runtime failures of a software system can be revealed during test execution only, which has a very high cost. In Java programs, runtime failures are manifested as unhandled runtime exceptions. In this paper we present an approach and tool for detecting runtime exceptions in Java programs without having to execute tests on the software. We use the symbolic execution technique to implement the approach. By executing the methods of the program symbolically we can determine those execution branches that throw exceptions. Our algorithm is able to generate concrete test inputs also that cause the program to fail in runtime. We used the Symbolic PathFinder extension of the Java PathFinder as the symbolic execution engine. Besides small example codes we evaluated our algorithm on three open source systems: jEdit, ArgoUML, and log4j. We found multiple errors in the log4j system that were also reported as real bugs in its bug tracking system.",
keywords = "Java runtime exception, Rule checking, Symbolic execution",
author = "Istv{\'a}n K{\'a}d{\'a}r and P{\'e}ter Hegedus and R. Ferenc",
year = "2014",
language = "English",
volume = "21",
pages = "331--352",
journal = "Acta Cybernetica",
issn = "0324-721X",
publisher = "University of Szeged",
number = "3",

}

TY - JOUR

T1 - Runtime exception detection in Java programs using symbolic execution

AU - Kádár, István

AU - Hegedus, Péter

AU - Ferenc, R.

PY - 2014

Y1 - 2014

N2 - Most of the runtime failures of a software system can be revealed during test execution only, which has a very high cost. In Java programs, runtime failures are manifested as unhandled runtime exceptions. In this paper we present an approach and tool for detecting runtime exceptions in Java programs without having to execute tests on the software. We use the symbolic execution technique to implement the approach. By executing the methods of the program symbolically we can determine those execution branches that throw exceptions. Our algorithm is able to generate concrete test inputs also that cause the program to fail in runtime. We used the Symbolic PathFinder extension of the Java PathFinder as the symbolic execution engine. Besides small example codes we evaluated our algorithm on three open source systems: jEdit, ArgoUML, and log4j. We found multiple errors in the log4j system that were also reported as real bugs in its bug tracking system.

AB - Most of the runtime failures of a software system can be revealed during test execution only, which has a very high cost. In Java programs, runtime failures are manifested as unhandled runtime exceptions. In this paper we present an approach and tool for detecting runtime exceptions in Java programs without having to execute tests on the software. We use the symbolic execution technique to implement the approach. By executing the methods of the program symbolically we can determine those execution branches that throw exceptions. Our algorithm is able to generate concrete test inputs also that cause the program to fail in runtime. We used the Symbolic PathFinder extension of the Java PathFinder as the symbolic execution engine. Besides small example codes we evaluated our algorithm on three open source systems: jEdit, ArgoUML, and log4j. We found multiple errors in the log4j system that were also reported as real bugs in its bug tracking system.

KW - Java runtime exception

KW - Rule checking

KW - Symbolic execution

UR - http://www.scopus.com/inward/record.url?scp=84948976814&partnerID=8YFLogxK

UR - http://www.scopus.com/inward/citedby.url?scp=84948976814&partnerID=8YFLogxK

M3 - Article

AN - SCOPUS:84948976814

VL - 21

SP - 331

EP - 352

JO - Acta Cybernetica

JF - Acta Cybernetica

SN - 0324-721X

IS - 3

ER -