Abstract
Discovering concurrency bugs is inherently hard due to the nondeterminism in multi-thread scheduling. Predictive analysis techniques have been successfully used to find such bugs by observing given test runs, and then searching for other interesting thread interleavings. For sequential code, concolic execution techniques have been used successfully to generate interesting test inputs to increase structural code coverage such as branch or statement coverage. In this paper, we propose the use of a concolic multi-trace analysis (CMTA) to efficiently increase code coverage in concurrent programs. We have implemented CMTA, and show encouraging results for some interesting benchmark programs.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Burnim, J., Sen, K.: Heuristics for scalable dynamic test generation. In: ASE. IEEE (2008)
Cadar, C., Dunbar, D., Engler, D.R.: KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In: OSDI. USENIX Association (2008)
Chen, F., Serbanuta, T.F., Roşu, G.: JPredictor: A predictive runtime analysis tool for Java. In: ICSE, pp. 221–230 (2008)
de Moura, L., Bjørner, N.: Z3: An Efficient SMT Solver. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 337–340. Springer, Heidelberg (2008)
Dutertre, B., de Moura, L.: A Fast Linear-Arithmetic Solver for DPLL(T). In: Ball, T., Jones, R.B. (eds.) CAV 2006. LNCS, vol. 4144, pp. 81–94. Springer, Heidelberg (2006)
Farzan, A., Madhusudan, P., Sorrentino, F.: Meta-analysis for Atomicity Violations under Nested Locking. In: Bouajjani, A., Maler, O. (eds.) CAV 2009. LNCS, vol. 5643, pp. 248–262. Springer, Heidelberg (2009)
Flanagan, C., Godefroid, P.: Dynamic partial-order reduction for model checking software. In: POPL. ACM (2005)
Godefroid, P., Klarlund, N., Sen, K.: DART: Directed automated random testing. In: PLDI, pp. 213–223 (2005)
Godefroid, P., Levin, M.Y., Molnar, D.A.: Active property checking. In: EMSOFT (2008)
Hong, S., Ahn, J., Park, S., Kim, M., Harrold, M.J.: Testing concurrent programs to achieve high synchronization coverage. In: ISSTA, pp. 210–220. ACM (2012)
Huang, J., Zhang, C.: Persuasive prediction of concurrency access anomalies. In: ISSTA, pp. 144–154 (2011)
Joshi, S., Lahiri, S.K., Lal, A.: Underspecified harnesses and interleaved bugs. In: POPL, pp. 19–30. ACM (2012)
Lee, J., Padua, D.A., Midkiff, S.P.: Basic compiler algorithms for parallel programs. In: PPOPP. ACM (1999)
Lu, S., Li, Z., Qin, F., Tan, L., Zhou, P., Zhou, Y.: BugBench: Benchmarks for evaluating bug detection tools. In: Workshop on the Evaluation of Software Defect Detection Tools (2005)
Musuvathi, M., Qadeer, S.: CHESS: Systematic Stress Testing of Concurrent Software. In: Puebla, G. (ed.) LOPSTR 2006. LNCS, vol. 4407, pp. 15–16. Springer, Heidelberg (2007)
Qadeer, S., Wu, D.: KISS: Keep it simple and sequential. In: PLDI. ACM (2004)
Said, M., Wang, C., Yang, Z., Sakallah, K.: Generating Data Race Witnesses by an SMT-Based Analysis. In: Bobaru, M., Havelund, K., Holzmann, G.J., Joshi, R. (eds.) NFM 2011. LNCS, vol. 6617, pp. 313–327. Springer, Heidelberg (2011)
Sen, K.: Scalable automated methods for dynamic program analysis (2006)
Sen, K., Marinov, D., Agha, G.: CUTE: A concolic unit testing engine for C. In: ESEC/FSE. ACM (2005)
Sen, K., Roşu, G., Agha, G.: Detecting Errors in Multithreaded Programs by Generalized Predictive Analysis of Executions. In: Steffen, M., Zavattaro, G. (eds.) FMOODS 2005. LNCS, vol. 3535, pp. 211–226. Springer, Heidelberg (2005)
Shacham, O., Bronson, N., Aiken, A., Sagiv, M., Vechev, M., Yahav, E.: Testing atomicity of composed concurrent operations. SIGPLAN Not. 46(10), 51–64 (2011)
Shi, Y., Park, S., Yin, Z., Lu, S., Zhou, Y., Chen, W., Zheng, W.: Do I use the wrong definition? DeFuse: Definition-use invariants for detecting concurrency and sequential bugs. In: OOPSLA (2010)
Smaragdakis, Y., Evans, J., Sadowski, C., Yi, J., Flanagan, C.: Sound predictive race detection in polynomial time. In: POPL. ACM (2012)
Sorrentino, F., Farzan, A., Madhusudan, P.: PENELOPE: Weaving threads to expose atomicity violations. In: FSE, pp. 37–46 (2010)
Wang, C., Kundu, S., Ganai, M., Gupta, A.: Symbolic Predictive Analysis for Concurrent Programs. In: Cavalcanti, A., Dams, D.R. (eds.) FM 2009. LNCS, vol. 5850, pp. 256–272. Springer, Heidelberg (2009)
Wang, C., Said, M., Gupta, A.: Coverage guided systematic concurrency testing. In: ICSE. ACM (2011)
Yu, J., Narayanasamy, S.: A case for an interleaving constrained shared-memory multi-processor. In: ISCA (2009)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2012 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Razavi, N., Ivančić, F., Kahlon, V., Gupta, A. (2012). Concurrent Test Generation Using Concolic Multi-trace Analysis. In: Jhala, R., Igarashi, A. (eds) Programming Languages and Systems. APLAS 2012. Lecture Notes in Computer Science, vol 7705. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-35182-2_17
Download citation
DOI: https://doi.org/10.1007/978-3-642-35182-2_17
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-35181-5
Online ISBN: 978-3-642-35182-2
eBook Packages: Computer ScienceComputer Science (R0)