[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
research-article

A Case Study on Executing Instrumented Code in Java PathFinder

Published: 11 November 2015 Publication History

Abstract

Dynamic program analysis is widely used for detecting faults in software systems. Dynamic analysis tools conceptually either use a modified execution environment or inject instrumentation code into the system under test (SUT). Tools based on a modified environment, such as Java PathFinder (JPF), have full access to the state of the SUT but at the cost of a higher runtime overhead. Instrumentation-based tools have lower overhead but at the cost of less convenient control of runtime such as thread schedules. Combinations of these two approaches are largely unexplored, and to our knowledge, have never been done in JPF. We present a case study of adapting an existing instrumentation-based tool to run inside JPF. To keep the instrumentation unchanged, we limited our changes to the code invoked by the instrumentation. Ultimately, the required changes were few and essentially reduce to properly dividing the analysis-related state and logic between the JPF and host JVM levels. Others can benefit from our experience to quicker adapt their instrumentation-based tools to run in JPF.

References

[1]
C. Artho. Combining Static and Dynamic Analysis to Find Multithreading Faults Beyond Data Races. PhD thesis, ETH Zürich, 2005.
[2]
M. d'Amorim, A. Sobeih, and D. Marinov. Optimized execution of deterministic blocks in Java PathFinder. In ICFEM, 2006.
[3]
P. Dinges, M. Charalambides, and G. Agha. Automated inference of atomic sets for safe concurrent execution. In PASTE, 2013.
[4]
K. Havelund and G. Roşu. An overview of the runtime verification tool Java PathExplorer. Form. Methods Syst. Des., 24(2):189--215, Mar. 2004.
[5]
N. Nethercote and J. Seward. Valgrind: A framework for heavyweight dynamic binary instrumentation. In PLDI, 2007.
[6]
N. Shafiei and F. van Breugel. Automatic handling of native methods in Java PathFinder. In SPIN, 2014.
[7]
S. D. Stoller. Testing concurrent Java programs using randomized scheduling. ENTCS, 70(4):142--157, 2002.
[8]
W. Visser, K. Havelund, G. Brat, S. Park, and F. Lerda. Model checking programs. Autom. Softw. Eng., 10(2):203--232, 2003.

Cited By

View all
  • (2018)Transforming Threads into Actors: Learning Concurrency Structure from Execution TracesPrinciples of Modeling10.1007/978-3-319-95246-8_2(16-37)Online publication date: 20-Jul-2018

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM SIGSOFT Software Engineering Notes
ACM SIGSOFT Software Engineering Notes  Volume 40, Issue 6
November 2015
77 pages
ISSN:0163-5948
DOI:10.1145/2830719
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 11 November 2015
Published in SIGSOFT Volume 40, Issue 6

Check for updates

Author Tags

  1. Java PathFinder
  2. dynamic analysis
  3. instrumentation

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 11 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2018)Transforming Threads into Actors: Learning Concurrency Structure from Execution TracesPrinciples of Modeling10.1007/978-3-319-95246-8_2(16-37)Online publication date: 20-Jul-2018

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media