{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,25]],"date-time":"2026-02-25T17:22:18Z","timestamp":1772040138960,"version":"3.50.1"},"reference-count":59,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2018,11,30]],"date-time":"2018-11-30T00:00:00Z","timestamp":1543536000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/501100002858","name":"China Postdoctoral Science Foundation","doi-asserted-by":"crossref","award":["2019T120093"],"award-info":[{"award-number":["2019T120093"]}],"id":[{"id":"10.13039\/501100002858","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Comput. Syst."],"published-print":{"date-parts":[[2018,11,30]]},"abstract":"<jats:p>Atomic context is an execution state of the Linux kernel in which kernel code monopolizes a CPU core. In this state, the Linux kernel may only perform operations that cannot sleep, as otherwise a system hang or crash may occur. We refer to this kind of concurrency bug as a sleep-in-atomic-context (SAC) bug. In practice, SAC bugs are hard to find, as they do not cause problems in all executions.<\/jats:p>\n          <jats:p>In this article, we propose a practical static approach named DSAC to effectively detect SAC bugs in the Linux kernel. DSAC uses three key techniques: (1) a summary-based analysis to identify the code that may be executed in atomic context, (2) a connection-based alias analysis to identify the set of functions referenced by a function pointer, and (3) a path-check method to filter out repeated reports and false bugs. We evaluate DSAC on Linux 4.17 and find 1,159 SAC bugs. We manually check all the bugs and find that 1,068 bugs are real. We have randomly selected 300 of the real bugs and sent them to kernel developers. 220 of these bugs have been confirmed, and 51 of our patches fixing 115 bugs have been applied.<\/jats:p>","DOI":"10.1145\/3381990","type":"journal-article","created":{"date-parts":[[2020,5,4]],"date-time":"2020-05-04T07:09:33Z","timestamp":1588576173000},"page":"1-30","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":5,"title":["Effective Detection of Sleep-in-atomic-context Bugs in the Linux Kernel"],"prefix":"10.1145","volume":"36","author":[{"given":"Jia-Ju","family":"Bai","sequence":"first","affiliation":[{"name":"Tsinghua University, Beijing, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7507-6542","authenticated-orcid":false,"given":"Julia","family":"Lawall","sequence":"additional","affiliation":[{"name":"Sorbonne University\/Inria\/LIP6, Paris, France"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7507-6542","authenticated-orcid":false,"given":"Shi-Min","family":"Hu","sequence":"additional","affiliation":[{"name":"Tsinghua University, Beijing, China"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2020,4,17]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"Allocation 2018. Linux kernel documentation for memory allocation. Retrieved from https:\/\/www.kernel.org\/doc\/htmldocs\/kernel-api\/API-kmalloc.html.  Allocation 2018. Linux kernel documentation for memory allocation. Retrieved from https:\/\/www.kernel.org\/doc\/htmldocs\/kernel-api\/API-kmalloc.html."},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/2626401.2626424"},{"key":"e_1_2_1_4_1","volume-title":"Proceedings of the 11th International Workshop on Hot Topics in Operating Systems (HotOS\u201907)","author":"Anderson Zachary R.","year":"2007","unstructured":"Zachary R. Anderson , Eric A. Brewer , Jeremy Condit , Robert Ennals , David Gay , Matthew Harren , George C. Necula , and Feng Zhou . 2007 . Beyond bug-finding: Sound program analysis for Linux . In Proceedings of the 11th International Workshop on Hot Topics in Operating Systems (HotOS\u201907) . 1--6. Zachary R. Anderson, Eric A. Brewer, Jeremy Condit, Robert Ennals, David Gay, Matthew Harren, George C. Necula, and Feng Zhou. 2007. Beyond bug-finding: Sound program analysis for Linux. In Proceedings of the 11th International Workshop on Hot Topics in Operating Systems (HotOS\u201907). 1--6."},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/3297858.3304065"},{"key":"e_1_2_1_6_1","volume-title":"Proceedings of the 21st Asia-Pacific Software Engineering Conference (APSEC\u201914)","author":"Bai Jia-Ju","year":"2014","unstructured":"Jia-Ju Bai , Hu-Qiu Liu , Yu-Ping Wang Wang , and Hu Shi-Min . 2014 . aComment: Mining annotations from comments and code to detect interrupt related concurrency bugs . In Proceedings of the 21st Asia-Pacific Software Engineering Conference (APSEC\u201914) . 407--414. Jia-Ju Bai, Hu-Qiu Liu, Yu-Ping Wang Wang, and Hu Shi-Min. 2014. aComment: Mining annotations from comments and code to detect interrupt related concurrency bugs. In Proceedings of the 21st Asia-Pacific Software Engineering Conference (APSEC\u201914). 407--414."},{"key":"e_1_2_1_7_1","volume-title":"Proceedings of the USENIX ATC Conference (USENIX ATC\u201918)","author":"Bai Jia-Ju","year":"2018","unstructured":"Jia-Ju Bai , Yu-Ping Wang , Julia Lawall , and Shi-Min Hu . 2018 . DSAC: Effective static analysis of sleep-in-atomic-context bugs in kernel modules . In Proceedings of the USENIX ATC Conference (USENIX ATC\u201918) . 587--600. Jia-Ju Bai, Yu-Ping Wang, Julia Lawall, and Shi-Min Hu. 2018. DSAC: Effective static analysis of sleep-in-atomic-context bugs in kernel modules. In Proceedings of the USENIX ATC Conference (USENIX ATC\u201918). 587--600."},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.infsof.2016.01.018"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1109\/TDSC.2010.38"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/1217935.1217943"},{"key":"e_1_2_1_11_1","unstructured":"BlockLock 2014. Website for \u201cFaults in Linux: ten years later.\u201d Retrieved from http:\/\/faultlinux.lip6.fr\/.  BlockLock 2014. Website for \u201cFaults in Linux: ten years later.\u201d Retrieved from http:\/\/faultlinux.lip6.fr\/."},{"key":"e_1_2_1_12_1","volume-title":"Proceedings of the 8th International Conference on Operating Systems Design and Implementation (OSDI\u201908)","author":"Cadar Cristian","year":"2008","unstructured":"Cristian Cadar , Daniel Dunbar , and Dawson Engler . 2008 . KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs . In Proceedings of the 8th International Conference on Operating Systems Design and Implementation (OSDI\u201908) . 209--224. Cristian Cadar, Daniel Dunbar, and Dawson Engler. 2008. KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In Proceedings of the 8th International Conference on Operating Systems Design and Implementation (OSDI\u201908). 209--224."},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/2950290.2950310"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/1755913.1755945"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/502034.502042"},{"key":"e_1_2_1_16_1","unstructured":"Clang 2018. Clang compiler. Retrieved from http:\/\/clang.llvm.org\/.  Clang 2018. Clang compiler. Retrieved from http:\/\/clang.llvm.org\/."},{"key":"e_1_2_1_17_1","unstructured":"CLOC 2018. CLOC: counting lines of code. Retrieved from https:\/\/github.com\/AlDanial\/cloc.  CLOC 2018. CLOC: counting lines of code. Retrieved from https:\/\/github.com\/AlDanial\/cloc."},{"key":"e_1_2_1_18_1","unstructured":"Jonathan Corbet. 2008. Atomic context and kernel API design. Retrieved from https:\/\/lwn.net\/Articles\/274695\/.  Jonathan Corbet. 2008. Atomic context and kernel API design. Retrieved from https:\/\/lwn.net\/Articles\/274695\/."},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1109\/SRDS.2009.26"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1109\/ASE.2015.30"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1109\/ASE.2009.14"},{"key":"e_1_2_1_22_1","volume-title":"Proceedings of the International Conference on Programming Language Design and Implementation (PLDI\u201994)","author":"Emami Maryam","unstructured":"Maryam Emami , Rakesh Ghiya , and Laurie J. Hendren . 1994. Context-sensitive interprocedural points-to analysis in the presence of function pointers . In Proceedings of the International Conference on Programming Language Design and Implementation (PLDI\u201994) . 242--256. Maryam Emami, Rakesh Ghiya, and Laurie J. Hendren. 1994. Context-sensitive interprocedural points-to analysis in the presence of function pointers. In Proceedings of the International Conference on Programming Language Design and Implementation (PLDI\u201994). 242--256."},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/945445.945468"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.21236\/ADA419626"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.5555\/1924943.1924954"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/1966445.1966465"},{"key":"e_1_2_1_27_1","volume-title":"Proceedings of the 11th International Conference on Operating Systems Design and Implementation (OSDI\u201914)","author":"Fonseca Pedro","unstructured":"Pedro Fonseca , Rodrigo Rodrigues , and Bj\u00f6rn B. Brandenburg . 2014. SKI: Exposing kernel concurrency bugs through systematic schedule exploration . In Proceedings of the 11th International Conference on Operating Systems Design and Implementation (OSDI\u201914) . 415--431. Pedro Fonseca, Rodrigo Rodrigues, and Bj\u00f6rn B. Brandenburg. 2014. SKI: Exposing kernel concurrency bugs through systematic schedule exploration. In Proceedings of the 11th International Conference on Operating Systems Design and Implementation (OSDI\u201914). 415--431."},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/1346281.1346303"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2011.5764696"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/378795.378855"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/1363686.1363890"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/1250734.1250766"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1109\/DSN.2009.5270354"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1007\/s11390-005-0654-4"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1109\/APSEC.2016.038"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/1081706.1081755"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/3037697.3037735"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2016.02.007"},{"key":"e_1_2_1_39_1","unstructured":"LLVM 2018. LLVM compiler infrastructure. Retrieved from https:\/\/llvm.org\/.  LLVM 2018. LLVM compiler infrastructure. Retrieved from https:\/\/llvm.org\/."},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/2872362.2872389"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1023\/B:AUSE.0000008666.56394.a1"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/2815400.2815422"},{"key":"e_1_2_1_43_1","unstructured":"MySQL 2018. MYSQL database. Retrieved from https:\/\/www.mysql.com\/.  MySQL 2018. MYSQL database. Retrieved from https:\/\/www.mysql.com\/."},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/1133981.1134018"},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/1352592.1352618"},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/2619090"},{"key":"e_1_2_1_47_1","volume-title":"Proceedings of the USENIX Annual Technical Conference (USENIX ATC\u201909)","author":"Matthew","unstructured":"Matthew J. Renzelmann and Michael M. Swift. 2009. Decaf: Moving device drivers to a modern language . In Proceedings of the USENIX Annual Technical Conference (USENIX ATC\u201909) . 1--14. Matthew J. Renzelmann and Michael M. Swift. 2009. Decaf: Moving device drivers to a modern language. In Proceedings of the USENIX Annual Technical Conference (USENIX ATC\u201909). 1--14."},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/1851276.1851283"},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1109\/DSN.2013.6575307"},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/3062341.3062361"},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/237721.237727"},{"key":"e_1_2_1_52_1","volume-title":"Proceedings of the 19th International Symposium on Operating Systems Principles (SOSP\u201903)","author":"Swift Michael M.","unstructured":"Michael M. Swift , Brian N. Bershad , and Henry M. Levy . 2003. Improving the reliability of commodity operating systems . In Proceedings of the 19th International Symposium on Operating Systems Principles (SOSP\u201903) . 207--222. Michael M. Swift, Brian N. Bershad, and Henry M. Levy. 2003. Improving the reliability of commodity operating systems. In Proceedings of the 19th International Symposium on Operating Systems Principles (SOSP\u201903). 207--222."},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/1985793.1985796"},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/2970276.2970337"},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/1831708.1831740"},{"key":"e_1_2_1_56_1","volume-title":"Proceedings of the 19th European Conference on Object-Oriented Programming (ECOOP\u201905)","author":"Williams Amy","unstructured":"Amy Williams , William Thies , and Michael D. Ernst . 2005. Static deadlock detection for Java libraries . In Proceedings of the 19th European Conference on Object-Oriented Programming (ECOOP\u201905) . 602--629. Amy Williams, William Thies, and Michael D. Ernst. 2005. Static deadlock detection for Java libraries. In Proceedings of the 19th European Conference on Object-Oriented Programming (ECOOP\u201905). 602--629."},{"key":"e_1_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/1321631.1321719"},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/1134285.1134325"},{"key":"e_1_2_1_59_1","volume-title":"Proceedings of the USENIX Security Symposium. 363--378","author":"Yun Insu","year":"2016","unstructured":"Insu Yun , Changwoo Min , Xujie Si , Yeongjin Jang , Taesoo Kim , and Mayur Naik . 2016 . APISan: Sanitizing API usages through semantic cross-checking . In Proceedings of the USENIX Security Symposium. 363--378 . Insu Yun, Changwoo Min, Xujie Si, Yeongjin Jang, Taesoo Kim, and Mayur Naik. 2016. APISan: Sanitizing API usages through semantic cross-checking. In Proceedings of the USENIX Security Symposium. 363--378."},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1109\/ISSRE.2012.12"}],"container-title":["ACM Transactions on Computer Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3381990","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3381990","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T22:33:07Z","timestamp":1750199587000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3381990"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,11,30]]},"references-count":59,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2018,11,30]]}},"alternative-id":["10.1145\/3381990"],"URL":"https:\/\/doi.org\/10.1145\/3381990","relation":{},"ISSN":["0734-2071","1557-7333"],"issn-type":[{"value":"0734-2071","type":"print"},{"value":"1557-7333","type":"electronic"}],"subject":[],"published":{"date-parts":[[2018,11,30]]},"assertion":[{"value":"2018-10-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2019-12-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2020-04-17","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}