{"publication_identifier":{"issn":["0302-9743"],"isbn":["9783031377051"],"eissn":["1611-3349"]},"intvolume":" 13964","tmp":{"name":"Creative Commons Attribution 4.0 International Public License (CC-BY 4.0)","short":"CC BY (4.0)","image":"/images/cc_by.png","legal_code_url":"https://creativecommons.org/licenses/by/4.0/legalcode"},"related_material":{"record":[{"status":"public","relation":"research_data","id":"14995"}]},"author":[{"id":"2F4DB10C-F248-11E8-B48F-1D18A9856A87","last_name":"Koval","first_name":"Nikita","full_name":"Koval, Nikita"},{"first_name":"Alexander","last_name":"Fedorov","id":"2e711909-896a-11ed-bdf8-eb0f5a2984c6","full_name":"Fedorov, Alexander"},{"full_name":"Sokolova, Maria","first_name":"Maria","last_name":"Sokolova"},{"last_name":"Tsitelov","first_name":"Dmitry","full_name":"Tsitelov, Dmitry"},{"orcid":"0000-0003-3650-940X","full_name":"Alistarh, Dan-Adrian","first_name":"Dan-Adrian","last_name":"Alistarh","id":"4A899BFC-F248-11E8-B48F-1D18A9856A87"}],"type":"conference","publication_status":"published","quality_controlled":"1","alternative_title":["LNCS"],"date_updated":"2024-02-27T07:46:52Z","date_published":"2023-07-17T00:00:00Z","day":"17","has_accepted_license":"1","article_processing_charge":"Yes (in subscription journal)","publisher":"Springer Nature","oa":1,"doi":"10.1007/978-3-031-37706-8_8","file":[{"success":1,"file_name":"2023_LNCS_Koval.pdf","content_type":"application/pdf","file_id":"14275","checksum":"c346016393123a0a2338ad4d976f61bc","relation":"main_file","access_level":"open_access","creator":"dernst","date_created":"2023-09-06T08:16:25Z","file_size":421408,"date_updated":"2023-09-06T08:16:25Z"}],"file_date_updated":"2023-09-06T08:16:25Z","abstract":[{"text":"This paper presents Lincheck, a new practical and user-friendly framework for testing concurrent algorithms on the Java Virtual Machine (JVM). Lincheck provides a simple and declarative way to write concurrent tests: instead of describing how to perform the test, users specify what to test by declaring all the operations to examine; the framework automatically handles the rest. As a result, tests written with Lincheck are concise and easy to understand. The framework automatically generates a set of concurrent scenarios, examines them using stress-testing or bounded model checking, and verifies that the results of each invocation are correct. Notably, if an error is detected via model checking, Lincheck provides an easy-to-follow trace to reproduce it, significantly simplifying the bug investigation.\r\n\r\nTo the best of our knowledge, Lincheck is the first production-ready tool on the JVM that offers such a simple way of writing concurrent tests, without requiring special skills or expertise. We successfully integrated Lincheck in the development process of several large projects, such as Kotlin Coroutines, and identified new bugs in popular concurrency libraries, such as a race in Java’s standard ConcurrentLinkedDeque and a liveliness bug in Java’s AbstractQueuedSynchronizer framework, which is used in most of the synchronization primitives. We believe that Lincheck can significantly improve the quality and productivity of concurrent algorithms research and development and become the state-of-the-art tool for checking their correctness.","lang":"eng"}],"date_created":"2023-09-03T22:01:16Z","language":[{"iso":"eng"}],"department":[{"_id":"DaAl"},{"_id":"GradSch"}],"title":"Lincheck: A practical framework for testing concurrent data structures on JVM","user_id":"2DF688A6-F248-11E8-B48F-1D18A9856A87","_id":"14260","citation":{"ama":"Koval N, Fedorov A, Sokolova M, Tsitelov D, Alistarh D-A. Lincheck: A practical framework for testing concurrent data structures on JVM. In: 35th International Conference on Computer Aided Verification . Vol 13964. Springer Nature; 2023:156-169. doi:10.1007/978-3-031-37706-8_8","ista":"Koval N, Fedorov A, Sokolova M, Tsitelov D, Alistarh D-A. 2023. Lincheck: A practical framework for testing concurrent data structures on JVM. 35th International Conference on Computer Aided Verification . CAV: Computer Aided Verification, LNCS, vol. 13964, 156–169.","ieee":"N. Koval, A. Fedorov, M. Sokolova, D. Tsitelov, and D.-A. Alistarh, “Lincheck: A practical framework for testing concurrent data structures on JVM,” in 35th International Conference on Computer Aided Verification , Paris, France, 2023, vol. 13964, pp. 156–169.","short":"N. Koval, A. Fedorov, M. Sokolova, D. Tsitelov, D.-A. Alistarh, in:, 35th International Conference on Computer Aided Verification , Springer Nature, 2023, pp. 156–169.","chicago":"Koval, Nikita, Alexander Fedorov, Maria Sokolova, Dmitry Tsitelov, and Dan-Adrian Alistarh. “Lincheck: A Practical Framework for Testing Concurrent Data Structures on JVM.” In 35th International Conference on Computer Aided Verification , 13964:156–69. Springer Nature, 2023. https://doi.org/10.1007/978-3-031-37706-8_8.","apa":"Koval, N., Fedorov, A., Sokolova, M., Tsitelov, D., & Alistarh, D.-A. (2023). Lincheck: A practical framework for testing concurrent data structures on JVM. In 35th International Conference on Computer Aided Verification (Vol. 13964, pp. 156–169). Paris, France: Springer Nature. https://doi.org/10.1007/978-3-031-37706-8_8","mla":"Koval, Nikita, et al. “Lincheck: A Practical Framework for Testing Concurrent Data Structures on JVM.” 35th International Conference on Computer Aided Verification , vol. 13964, Springer Nature, 2023, pp. 156–69, doi:10.1007/978-3-031-37706-8_8."},"month":"07","page":"156-169","ddc":["000"],"volume":13964,"year":"2023","scopus_import":"1","oa_version":"Published Version","status":"public","conference":{"name":"CAV: Computer Aided Verification","location":"Paris, France","end_date":"2023-07-22","start_date":"2023-07-17"},"publication":"35th International Conference on Computer Aided Verification "}