skip to main content
10.1145/2737924.2738001acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Light: replay via tightly bounded recording

Published: 03 June 2015 Publication History

Abstract

Reproducing concurrency bugs is a prominent challenge. Existing techniques either rely on recording very fine grained execution information and hence have high runtime overhead, or strive to log as little information as possible but provide no guarantee in reproducing a bug. We present Light, a technique that features much lower overhead compared to techniques based on fine grained recording, and that guarantees to reproduce concurrent bugs. We leverage and formally prove that recording flow dependences is the necessary and sufficient condition to reproduce a concurrent bug. The flow dependences, together with the thread local orders that can be automatically inferred (and hence not logged), are encoded as scheduling constraints. An SMT solver is used to derive a replay schedule, which is guaranteed to exist even though it may be different from the original schedule. Our experiments show that Light has only 44% logging overhead, almost one order of magnitude lower than the state of the art techniques relying on logging memory accesses. Its space overhead is only 10% of those techniques. Light can also reproduce all the bugs we have collected whereas existing techniques miss some of them.

References

[1]
G. Altekar and I. Stoica. Odr: Output-deterministic replay for multicore debugging. In SOSP, 2009.
[2]
S. M. Blackburn, R. Garner, C. Hoffmann, A. M. Khang, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, A. Phansalkar, D. Stefanovi´c, T. VanDrunen, D. von Dincklage, and B. Wiedermann. The dacapo benchmarks: Java benchmarking development and analysis. In OOPSLA, 2006.
[3]
M. D. Bond and M. Kulkarni. Tracking conflicting accesses efficiently for software record and replay. Ohio State CSE Technical Report, OSU-CISRC-2/12-TR01, 2012.
[4]
M. D. Bond, M. Kulkarni, M. Cao, M. Zhang, M. Fathi Salmi, S. Biswas, A. Sengupta, and J. Huang. Octet: Capturing and controlling cross-thread dependences efficiently. In OOPSLA, 2013.
[5]
F. Chen and G. Ro¸su. Parametric and sliced causality. In CAV, 2007.
[6]
J.-D. Choi and H. Srinivasan. Deterministic replay of java multithreaded applications. In SPDT, 1998.
[7]
60% 70% 80% 90% 100% 0% 10% 20% 30% 40% 50% O1 O2 Light (a) 60% 70% 80% 90% 100% 10% 20% 30% 40% 50% 60% O1 O2 Light 0% (b) Figure 7. (1) Breakdown of Time Overhead (2) Breakdown of Space Overhead
[8]
T. ¸Serbănu¸tă, F. Chen, and G. Ro¸su. Maximal causal models for sequentially consistent systems. In Runtime Verification. 2013.
[9]
L. De Moura and N. Bjørner. Z3: An efficient smt solver. In TACAS, 2008.
[10]
D. Devecsery, M. Chow, X. Dou, J. Flinn, and P. M. Chen. Eidetic systems. In OSDI, 2014.
[11]
C. Flanagan and S. N. Freund. Fasttrack: Efficient and precise dynamic race detection. In PLDI, 2009.
[12]
A. Georges, M. Christiaens, M. Ronsse, and K. De Bosschere. Jarec: A portable record/replay environment for multi-threaded java applications. Software Practice and Experience, 34(6), May 2004.
[13]
P. B. Gibbons and E. Korach. Testing shared memories. SIAM J. Comput., 26(4), Aug. 1997.
[14]
C. Hammer, J. Dolby, M. Vaziri, and F. Tip. Dynamic detection of atomic-set-serializability violations. In ICSE, 2008.
[15]
J. Huang, P. Liu, and C. Zhang. LEAP: Lightweight deterministic multi-processor replay of concurrent java programs. In FSE, 2010.
[16]
J. Huang, C. Zhang, and J. Dolby. CLAP: Recording Local Executions to Reproduce Concurrency Failures. In PLDI, 2013.
[17]
J. Huang, P. O. Meredith, and G. Rosu. Maximal sound predictive race detection with control flow abstraction. In PLDI, 2014.
[18]
V. Kahlon and C. Wang. Universal causality graphs: A precise happensbefore model for detecting bugs in concurrent programs. In CAV, 2010.
[19]
Z. Lai, S. C. Cheung, and W. K. Chan. Detecting atomic-set serializability violations in multithreaded programs through active randomized testing. In ICSE, 2010.
[20]
T. J. LeBlanc and J. M. Mellor-Crummey. Debugging parallel programs with instant replay. IEEE Trans. Comput., 36(4), Apr. 1987.
[21]
D. Lee, M. Said, S. Narayanasamy, Z. Yang, and C. Pereira. Offline symbolic analysis for multi-processor execution replay. In MICRO, 2009.
[22]
D. Lee, P. M. Chen, J. Flinn, and S. Narayanasamy. Chimera: Hybrid program analysis for determinism. In PLDI, 2012.
[23]
K. H. Lee, D. Kim, and X. Zhang. Infrastructure-free logging and replay of concurrent execution on multiple cores. In PPoPP, 2014.
[24]
P. Liu and C. Zhang. Pert: The application-aware tailoring of java object persistence. TSE, 38(4), July 2012.
[25]
P. Liu, O. Tripp, and C. Zhang. Grail: Context-aware fixing of concurrency bugs. FSE, 2014.
[26]
C. C. Minh, J. Chung, C. Kozyrakis, and K. Olukotun. Stamp: Stanford transactional applications for multi-processing. In IEEE International Symposium on Workload Characterization, 2008.
[27]
M. Naik and A. Aiken. Conditional must not aliasing for static race detection. In POPL, 2007.
[28]
S. Owicki and D. Gries. Verifying properties of parallel programs: An axiomatic approach. Commun. ACM, 19(5), May 1976.
[29]
S. Park, Y. Zhou, W. Xiong, Z. Yin, R. Kaushik, K. H. Lee, and S. Lu. Pres: Probabilistic replay with execution sketching on multiprocessors. In SOSP, 2009.
[30]
H. Patil, C. Pereira, M. Stallcup, G. Lueck, and J. Cownie. Pinplay: A framework for deterministic replay and reproducible analysis of parallel programs. In CGO, 2010.
[31]
M. Ronsse and K. De Bosschere. Recplay: A fully integrated practical record/replay system. ACM Trans. Comput. Syst., 17(2), May 1999.
[32]
K. Sen, G. Ro¸su, and G. Agha. Detecting errors in multithreaded programs by generalized predictive analysis of executions. In FMOODS, 2005.
[33]
L. A. Smith, J. M. Bull, and J. Obdrzálek. A parallel java grande benchmark suite. In Proceedings of the 2001 ACM/IEEE Conference on Supercomputing, SC, 2001.
[34]
O. Tripp. Incorporating Data Abstractions into Concurrency Control. PhD thesis, Tel-Aviv University, 2014.
[35]
O. Tripp, G. Yorsh, J. Field, and M. Sagiv. Hawkeye: Effective discovery of dataflow impediments to parallelization. In OOPSLA, 2011.
[36]
R. Vallée-Rai, P. Co, E. Gagnon, L. Hendren, P. Lam, and V. Sundaresan. Soot - a java bytecode optimization framework. In CASCON, 1999.
[37]
K. Veeraraghavan, D. Lee, B. Wester, J. Ouyang, P. M. Chen, J. Flinn, and S. Narayanasamy. Doubleplay: Parallelizing sequential logging and replay. In ASPLOS XVI, 2011.
[38]
D. Weeratunge, X. Zhang, and S. Jagannathan. Analyzing multicore dumps to facilitate concurrency bug reproduction. In ASPLOS XV, 2010.
[39]
Yices. The yices smt solver. http://yices.csl.sri.com/.
[40]
C. Zamfir and G. Candea. Execution synthesis: A technique for automated software debugging. In EuroSys, 2010.
[41]
J. Zhou, X. Xiao, and C. Zhang. Stride: Search-based deterministic replay in polynomial time via bounded linkage. In ICSE, 2012.

Cited By

View all
  • (2024)Siesta: Synthesizing Proxy Applications for MPI Programs2024 IEEE International Conference on Cluster Computing (CLUSTER)10.1109/CLUSTER59578.2024.00009(14-26)Online publication date: 24-Sep-2024
  • (2023)Vidi: Record Replay for Reconfigurable HardwareProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 310.1145/3582016.3582040(806-820)Online publication date: 25-Mar-2023
  • (2021)Execution reconstruction: harnessing failure reoccurrences for failure reproductionProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454101(1155-1170)Online publication date: 19-Jun-2021
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation
June 2015
630 pages
ISBN:9781450334686
DOI:10.1145/2737924
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 50, Issue 6
    PLDI '15
    June 2015
    630 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/2813885
    • Editor:
    • Andy Gill
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 03 June 2015

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Concurrency
  2. Local Recording
  3. Replay
  4. Thread Determinism
  5. Tight Bound

Qualifiers

  • Research-article

Conference

PLDI '15
Sponsor:

Acceptance Rates

Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)28
  • Downloads (Last 6 weeks)2
Reflects downloads up to 30 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Siesta: Synthesizing Proxy Applications for MPI Programs2024 IEEE International Conference on Cluster Computing (CLUSTER)10.1109/CLUSTER59578.2024.00009(14-26)Online publication date: 24-Sep-2024
  • (2023)Vidi: Record Replay for Reconfigurable HardwareProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 310.1145/3582016.3582040(806-820)Online publication date: 25-Mar-2023
  • (2021)Execution reconstruction: harnessing failure reoccurrences for failure reproductionProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454101(1155-1170)Online publication date: 19-Jun-2021
  • (2019)Processor-Oblivious Record and ReplayACM Transactions on Parallel Computing10.1145/33656596:4(1-28)Online publication date: 17-Dec-2019
  • (2019)Sparse record and replay with controlled schedulingProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314635(576-593)Online publication date: 8-Jun-2019
  • (2018)Record-and-Replay Techniques for HPC Systems: A SurveySupercomputing Frontiers and Innovations: an International Journal10.14529/jsfi1801025:1(11-30)Online publication date: 15-Mar-2018
  • (2018)iReplayer: in-situ and identical record-and-replay for multithreaded applicationsACM SIGPLAN Notices10.1145/3296979.319238053:4(344-358)Online publication date: 11-Jun-2018
  • (2018)iReplayer: in-situ and identical record-and-replay for multithreaded applicationsProceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3192366.3192380(344-358)Online publication date: 11-Jun-2018
  • (2018)A Quick Deterministic Replay Method Based on Dependence Pair2018 Eighth International Conference on Information Science and Technology (ICIST)10.1109/ICIST.2018.8426126(110-113)Online publication date: Jun-2018
  • (2017)Processor-Oblivious Record and ReplayACM SIGPLAN Notices10.1145/3155284.301876452:8(145-161)Online publication date: 26-Jan-2017
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media