Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.5555/2818754.2818833acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

Regular property guided dynamic symbolic execution

Published: 16 May 2015 Publication History
  • Get Citation Alerts
  • Abstract

    A challenging problem in software engineering is to check if a program has an execution path satisfying a regular property. We propose a novel method of dynamic symbolic execution (DSE) to automatically find a path of a program satisfying a regular property. What makes our method distinct is when exploring the path space, DSE is guided by the synergy of static analysis and dynamic analysis to find a target path as soon as possible. We have implemented our guided DSE method for Java programs based on JPF and WALA, and applied it to 13 real-world open source Java programs, a total of 225K lines of code, for extensive experiments. The results show the effectiveness, efficiency, feasibility and scalability of the method. Compared with the pure DSE on the time to find the first target path, the average speedup of the guided DSE is more than 258X when analyzing the programs that have more than 100 paths.

    References

    [1]
    M. Das, S. Lerner, and M. Seigle, "ESP: Path-sensitive program verification in polynomial time," in PLDI, pp. 57--68, ACM, 2002.
    [2]
    S. Cherem, L. Princehouse, and R. Rugina, "Practical memory leak detection using guarded value-flow analysis," in PLDI, pp. 480--491, ACM, 2007.
    [3]
    G. V. Bochmann, "Finite state description of communication protocols," Computer Networks, vol. 2, no. 4, pp. 361--372, 1978.
    [4]
    G. Myers, C. Sandler, and T. Badgett, The art of software testing. Wiley, 2011.
    [5]
    S. J. Fink, E. Yahav, N. Dor, G. Ramalingam, and E. Geay, "Effective typestate verification in the presence of aliasing," in ISSTA, pp. 133--144, ACM, 2006.
    [6]
    M. Pradel and T. R. Gross, "Automatic generation of object usage specifications from large method traces," in ASE, pp. 371--382, IEEE, 2009.
    [7]
    D. R. Engler, B. Chelf, A. Chou, and S. Hallem, "Checking system rules using system-specific, programmer-written compiler extensions," in OSDI, pp. 1--16, USENIX Association, 2000.
    [8]
    C. Allan, P. Avgustinov, A. S. Christensen, L. J. Hendren, S. Kuzins, O. Lhoták, O. de Moor, D. Sereni, G. Sittampalam, and J. Tibbie, "Adding trace matching with free variables to AspectJ," in OOPSLA, pp. 345--364, ACM, 2005.
    [9]
    F. Chen and G. Rosu, "MOP: an efficient and generic runtime verification framework," in OOPSLA, pp. 569--588, ACM, 2007.
    [10]
    C. Artho, H. Barringer, A. Goldberg, K. Havelund, S. Khurshid, M. Lowry, C. Pasareanu, G. Roşu, K. Sen, W. Visser, et al., "Combining test case generation and runtime verification," Theoretical Computer Science, vol. 336, no. 2, pp. 209--234, 2005.
    [11]
    P. Godefroid, N. Klarlund, and K. Sen, "DART: directed automated random testing," in PLDI, pp. 213--223, ACM, 2005.
    [12]
    K. Sen, D. Marinov, and G. Agha, "CUTE: a concolic unit testing engine for C," in FSE, pp. 263--272, ACM, 2005.
    [13]
    J. King, "Symbolic execution and program testing," Communications of the ACM, vol. 19, no. 7, pp. 385--394, 1976.
    [14]
    K. Jayaraman, D. Harvison, V. Ganesh, and A. Kiezun, "jFuzz: A concolic whitebox fuzzer for java," in NFM, pp. 121--125, Springer, 2009.
    [15]
    IBM, "T.J. Watson Libraries for Analysis (WALA)". http://wala.sf.net/.
    [16]
    F. Nielson, H. R. Nielson, and C. Hankin, Principles of program analysis. Springer, 1999.
    [17]
    E. Bodden, "Efficient hybrid typestate analysis by determining continuation-equivalent states," in ICSE, pp. 5--14, ACM, 2010.
    [18]
    M. Leucker and C. Schallhart, "A brief account of runtime verification," J. Log. Algebr. Program., vol. 78, no. 5, pp. 293--303, 2009.
    [19]
    J. E. Hopcroft, R. Motwani, and J. D. Ullman, Introduction to automata theory, languages, and computation. Addison-Wesley, 2003.
    [20]
    T. Reps, S. Horwitz, and M. Sagiv, "Precise interprocedural dataflow analysis via graph reachability," in POPL, pp. 49--61, ACM, 1995.
    [21]
    Jesse Wilson, "Glazed Lists Library". http://www.glazedlists.com/, 2014.
    [22]
    N. Shafiei and F. van Breugel, "Automatic handling of native methods in java pathfinder," in SPIN, pp. 97--100, Springer, 2014.
    [23]
    C. S. Păsăreanu and N. Rungta, "Symbolic PathFinder: symbolic execution of java bytecode," in ASE, pp. 179--180, ACM, 2010.
    [24]
    C. Păsăreanu, P. Mehlitz, D. Bushnell, K. Gundy-Burlet, M. Lowry, S. Person, and M. Pape, "Combining unit-level symbolic execution and system-level concrete execution for testing nasa software," in ISSTA, pp. 15--26, ACM, 2008.
    [25]
    Metrics. http://metrics.sourceforge.net, 2014.
    [26]
    AOST, "Tellurium UID Description Language (UDL)". http://code.google.com/p/aost/wiki/TelluriumUIDDescriptionLanguage, 2014.
    [27]
    S. M. Blackburn and et al., "The dacapo benchmarks: java benchmarking development and analysis," in OOPSLA, pp. 169--190, ACM, 2006.
    [28]
    Jamm, "Java agent for memory measurements". https://github.com/jbellis/jamm, 2014.
    [29]
    C. Cadar, D. Dunbar, and D. Engler, "KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs," in OSDI, pp. 209--224, USENIX Association, 2008.
    [30]
    J. Burnim and K. Sen, "Heuristics for scalable dynamic test generation," in ASE, pp. 443--446, IEEE, 2008.
    [31]
    T. Xie, N. Tillmann, J. de Halleux, and W. Schulte, "Fitness-guided path exploration in dynamic symbolic execution," in DSN, pp. 359--368, IEEE, 2009.
    [32]
    Y. Li, Z. Su, L. Wang, and X. Li, "Steering symbolic execution to less traveled paths," in OOPSLA, pp. 19--32, ACM, 2013.
    [33]
    H. Seo and S. Kim, "How we get there: A context-guided search strategy in concolic testing," in FSE, ACM, 2014.
    [34]
    K.-K. Ma, Y. P. Khoo, J. S. Foster, and M. Hicks, "Directed symbolic execution," in SAS, pp. 95--111, Springer, 2011.
    [35]
    D. Babic, L. Martignoni, S. McCamant, and D. Song, "Statically-directed dynamic automated test generation," in ISSTA, pp. 12--22, 2011.
    [36]
    C. Zamfir and G. Candea, "Execution synthesis: a technique for automated software debugging," in EuroSys, pp. 321--334, 2010.
    [37]
    S. Chandra, S. J. Fink, and M. Sridharan, "Snugglebug: a powerful approach to weakest preconditions," in PLDI, pp. 363--374, 2009.
    [38]
    H. Cui, G. Hu, J. Wu, and J. Yang, "Verifying systems rules using rule-directed symbolic execution," in ASPLOS, pp. 329--342, ACM, 2013.
    [39]
    J. Slaby, J. Strejček, and M. Trtík, "Checking properties described by state machines: On synergy of instrumentation, slicing, and symbolic execution," in FMICS, pp. 207--221, Springer, 2012.
    [40]
    S. Person, G. Yang, N. Rungta, and S. Khurshid, "Directed incremental symbolic execution," in PLDI, pp. 504--515, ACM, 2011.
    [41]
    P. D. Marinescu and C. Cadar, "make test-zesti: A symbolic execution solution for improving regression testing," in ICSE, pp. 716--726, IEEE, 2012.
    [42]
    A. Lal, J. Lim, M. Polishchuk, and B. Liblit, "Path optimization in programs and its application to debugging," in ESOP, pp. 246--263, 2006.
    [43]
    H. Chen and D. Wagner, "MOPS: an infrastructure for examining security properties of software," in CCS, pp. 235--244, ACM, 2002.
    [44]
    P. Cousot and R. Cousot, "Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints," in POPL, pp. 238--252, ACM, 1977.
    [45]
    Y. Xie and A. Aiken, "Scalable error detection using boolean satisfiability," in POPL, pp. 351--363, ACM, 2005.
    [46]
    D. Babic and A. J. Hu, "Calysto: scalable and precise extended static checking," in ICSE, pp. 211--220, ACM, 2008.
    [47]
    T. Ball, R. Majumdar, T. D. Millstein, and S. K. Rajamani, "Automatic predicate abstraction of C programs," in PLDI, pp. 203--213, ACM, 2001.
    [48]
    B. S. Gulavani, T. A. Henzinger, Y. Kannan, A. V. Nori, and S. K. Rajamani, "Synergy: a new algorithm for property checking," in FSE, pp. 117--127, ACM, 2006.
    [49]
    N. E. Beckman, A. V. Nori, S. K. Rajamani, and R. J. Simmons, "Proofs from tests," in ISSTA, pp. 3--14, ACM, 2008.
    [50]
    P. Godefroid, A. V. Nori, S. K. Rajamani, and S. Tetali, "Compositional may-must program analysis: unleashing the power of alternation," in POPL, pp. 43--56, 2010.
    [51]
    A. V. Nori and S. K. Rajamani, "An empirical study of optimizations in YOGI," in ICSE, pp. 355--364, 2010.
    [52]
    Q. Zhang, M. R. Lyu, H. Yuan, and Z. Su, "Fast algorithms for Dyck-CFL-reachability with applications to alias analysis," in PLDI, pp. 435--446, 2013.
    [53]
    Y. Lu, L. Shang, X. Xie, and J. Xue, "An incremental points-to analysis with CFL-reachability," in CC, pp. 61--81, 2013.

    Cited By

    View all
    • (2022)Linear-time temporal logic guided greybox fuzzingProceedings of the 44th International Conference on Software Engineering10.1145/3510003.3510082(1343-1355)Online publication date: 21-May-2022
    • (2020)Multiplex symbolic executionProceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering10.1145/3324884.3416645(846-857)Online publication date: 21-Dec-2020
    • (2019)Type-guided worst-case input generationProceedings of the ACM on Programming Languages10.1145/32903263:POPL(1-30)Online publication date: 2-Jan-2019
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    ICSE '15: Proceedings of the 37th International Conference on Software Engineering - Volume 1
    May 2015
    999 pages
    ISBN:9781479919345

    Sponsors

    Publisher

    IEEE Press

    Publication History

    Published: 16 May 2015

    Check for updates

    Qualifiers

    • Research-article

    Conference

    ICSE '15
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 276 of 1,856 submissions, 15%

    Upcoming Conference

    ICSE 2025

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)20
    • Downloads (Last 6 weeks)8

    Other Metrics

    Citations

    Cited By

    View all
    • (2022)Linear-time temporal logic guided greybox fuzzingProceedings of the 44th International Conference on Software Engineering10.1145/3510003.3510082(1343-1355)Online publication date: 21-May-2022
    • (2020)Multiplex symbolic executionProceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering10.1145/3324884.3416645(846-857)Online publication date: 21-Dec-2020
    • (2019)Type-guided worst-case input generationProceedings of the ACM on Programming Languages10.1145/32903263:POPL(1-30)Online publication date: 2-Jan-2019
    • (2018)A Survey of Symbolic Execution TechniquesACM Computing Surveys10.1145/318265751:3(1-39)Online publication date: 23-May-2018
    • (2018)Symbolic verification of regular propertiesProceedings of the 40th International Conference on Software Engineering10.1145/3180155.3180227(871-881)Online publication date: 27-May-2018
    • (2018)Automatically generating search heuristics for concolic testingProceedings of the 40th International Conference on Software Engineering10.1145/3180155.3180166(1244-1254)Online publication date: 27-May-2018
    • (2017)RGSE: a regular property guided symbolic executor for JavaProceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering10.1145/3106237.3122830(954-958)Online publication date: 21-Aug-2017
    • (2017)Practical symbolic verification of regular propertiesProceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering10.1145/3106237.3121275(1053-1055)Online publication date: 21-Aug-2017
    • (2017)Dependence Guided Symbolic ExecutionIEEE Transactions on Software Engineering10.1109/TSE.2016.258406343:3(252-271)Online publication date: 1-Mar-2017
    • (2016)Finding the needle in the heapProceedings of the 6th Workshop on Software Security, Protection, and Reverse Engineering10.1145/3015135.3015137(1-12)Online publication date: 5-Dec-2016
    • Show More Cited By

    View Options

    Get Access

    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