Advertisement

Regression-Free Synthesis for Concurrency

  • Pavol Černý
  • Thomas A. Henzinger
  • Arjun Radhakrishna
  • Leonid Ryzhyk
  • Thorsten Tarrach
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8559)

Abstract

While fixing concurrency bugs, program repair algorithms may introduce new concurrency bugs. We present an algorithm that avoids such regressions. The solution space is given by a set of program transformations we consider in for repair process. These include reordering of instructions within a thread and inserting atomic sections. The new algorithm learns a constraint on the space of candidate solutions, from both positive examples (error-free traces) and counterexamples (error traces). From each counterexample, the algorithm learns a constraint necessary to remove the errors. From each positive examples, it learns a constraint that is necessary in order to prevent the repair from turning the trace into an error trace. We implemented the algorithm and evaluated it on simplified Linux device drivers with known bugs.

Keywords

Candidate Solution Program Constraint Concurrent Program Program Transformation Good Trace 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

References

  1. 1.
  2. 2.
    Alglave, J., Kroening, D., Tautschnig, M.: Partial Orders for Efficient Bounded Model Checking of Concurrent Software. In: Sharygina, N., Veith, H. (eds.) CAV 2013. LNCS, vol. 8044, pp. 141–157. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  3. 3.
    Alur, R., Bodík, R., Juniwal, G., Martin, M., Raghothaman, M., Seshia, S., Singh, R., Solar-Lezama, A., Torlak, E., Udupa, A.: Syntax-guided synthesis. In: FMCAD, pp. 1–17 (2013)Google Scholar
  4. 4.
    Černý, P., Henzinger, T.A., Radhakrishna, A., Ryzhyk, L., Tarrach, T.: Efficient synthesis for concurrency by semantics-preserving transformations. In: Sharygina, N., Veith, H. (eds.) CAV 2013. LNCS, vol. 8044, pp. 951–967. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  5. 5.
    Cherem, S., Chilimbi, T., Gulwani, S.: Inferring locks for atomic sections. In: PLDI 2008 (2008)Google Scholar
  6. 6.
    Deshmukh, J., Ramalingam, G., Ranganath, V.P., Vaswani, K.: Logical Concurrency Control from Sequential Proofs. In: LMCS (2010)Google Scholar
  7. 7.
    von Essen, C., Jobstmann, B.: Program repair without regret. In: Sharygina, N., Veith, H. (eds.) CAV 2013. LNCS, vol. 8044, pp. 896–911. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  8. 8.
    Farzan, A., Kincaid, Z., Podelski, A.: Inductive data flow graphs. In: POPL, pp. 129–142 (2013)Google Scholar
  9. 9.
    Griesmayer, A., Bloem, R., Cook, B.: Repair of boolean programs with an application to C. In: Ball, T., Jones, R.B. (eds.) CAV 2006. LNCS, vol. 4144, pp. 358–371. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  10. 10.
    Jin, G., Zhang, W., Deng, D., Liblit, B., Lu, S.: Automated Concurrency-Bug Fixing. In: OSDI 2012 (2012)Google Scholar
  11. 11.
    Jobstmann, B., Griesmayer, A., Bloem, R.: Program repair as a game. In: Etessami, K., Rajamani, S.K. (eds.) CAV 2005. LNCS, vol. 3576, pp. 226–238. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  12. 12.
    Samanta, R., Deshmukh, J., Emerson, A.: Automatic generation of local repairs for boolean programs. In: FMCAD, pp. 1–10 (2008)Google Scholar
  13. 13.
    Sen, K.: Race Directed Random Testing of Concurrent Programs. In: PLDI 2008 (2008)Google Scholar
  14. 14.
    Sinha, N., Wang, C.: On Interference Abstractions. In: POPL 2011 (2011)Google Scholar
  15. 15.
    Sinha, N., Wang, C.: Staged concurrent program analysis. In: FSE 2010 (2010)Google Scholar
  16. 16.
    Solar-Lezama, A., Jones, C., Bodík, R.: Sketching concurrent data structures. In: PLDI, pp. 136–148 (2008)Google Scholar
  17. 17.
    Solar-Lezama, A., Tancau, L., Bodík, R., Seshia, S.A., Saraswat, V.A.: Combinatorial sketching for finite programs. In: ASPLOS 2006 (2006)Google Scholar
  18. 18.
    Vechev, M., Yahav, E., Yorsh, G.: Abstraction-guided synthesis of synchronization. In: POPL 2010 (2010)Google Scholar

Copyright information

© Springer International Publishing Switzerland 2014

Authors and Affiliations

  • Pavol Černý
    • 1
  • Thomas A. Henzinger
    • 2
  • Arjun Radhakrishna
    • 2
  • Leonid Ryzhyk
    • 3
    • 4
  • Thorsten Tarrach
    • 2
  1. 1.University of Colorado BoulderUSA
  2. 2.ISTAustria
  3. 3.University of TorontoCanada
  4. 4.NICTASydneyAustralia

Personalised recommendations