{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,11]],"date-time":"2026-03-11T01:45:13Z","timestamp":1773193513246,"version":"3.50.1"},"reference-count":48,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2017,5,29]],"date-time":"2017-05-29T00:00:00Z","timestamp":1496016000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"name":"ERC","award":["280053"],"award-info":[{"award-number":["280053"]}]},{"name":"SRC","award":["2269.002"],"award-info":[{"award-number":["2269.002"]}]},{"DOI":"10.13039\/501100000266","name":"EPSRC","doi-asserted-by":"crossref","award":["H017585\/1"],"award-info":[{"award-number":["H017585\/1"]}],"id":[{"id":"10.13039\/501100000266","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2017,6,30]]},"abstract":"<jats:p>Modern architectures rely on memory fences to prevent undesired weakenings of memory consistency. As the fences\u2019 semantics may be subtle, the automation of their placement is highly desirable. But precise methods for restoring consistency do not scale to deployed systems\u2019 code. We choose to trade some precision for genuine scalability: our technique is suitable for large code bases. We implement it in our new musketeer tool and report experiments on more than 700 executables from packages found in Debian GNU\/Linux 7.1, including memcached with about 10,000 LoC.<\/jats:p>","DOI":"10.1145\/2994593","type":"journal-article","created":{"date-parts":[[2017,5,31]],"date-time":"2017-05-31T19:32:40Z","timestamp":1496259160000},"page":"1-38","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":26,"title":["Don\u2019t Sit on the Fence"],"prefix":"10.1145","volume":"39","author":[{"given":"Jade","family":"Alglave","sequence":"first","affiliation":[{"name":"Microsoft Research, University College London, London, UK"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-6681-5283","authenticated-orcid":false,"given":"Daniel","family":"Kroening","sequence":"additional","affiliation":[{"name":"University of Oxford, Parks Road, Oxford, UK"}]},{"given":"Vincent","family":"Nimal","sequence":"additional","affiliation":[{"name":"Microsoft Research, Cambridge, UK"}]},{"given":"Daniel","family":"Poetzl","sequence":"additional","affiliation":[{"name":"University of Oxford, Parks Road, Oxford, UK"}]}],"member":"320","published-online":{"date-parts":[[2017,5,29]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-36742-7_37"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-26850-7_3"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-46669-8_13"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1109\/2.546611"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-25318-8_21"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-37036-6_28"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.5555\/2032305.2032311"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-14295-6_25"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/2627752"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","unstructured":"John Bender Mohsen Lesani and Jens Palsberg. 2015. Declarative fence insertion. In Object-Oriented Programming Systems Languages and Applications (OOPSLA\u201915). ACM 367--385. 10.1145\/2814270.2814318","DOI":"10.1145\/2814270.2814318"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-37036-6_29"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","unstructured":"Ahmed Bouajjani R. Meyer and E. Moehlmann. 2011. Deciding robustness against total store ordering. In Automata Languages and Programming (ICALP\u201911) (LNCS) Vol. 6756. Springer 428--440.","DOI":"10.5555\/2027223.2027267"},{"key":"e_1_2_1_13_1","first-page":"2011","article-title":"Information technology -- Programming languages -- C","volume":"9899","year":"2011","unstructured":"C11. 2011. Information technology -- Programming languages -- C. In BS ISO\/IEC 9899:2011.","journal-title":"BS ISO\/IEC"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/1073970.1073974"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.5555\/645957.758425"},{"key":"e_1_2_1_16_1","unstructured":"David Dice. 2009. A race in LockSuport park() arising from weak memory models. Retrieved from https:\/\/blogs.oracle.com\/dave\/entry\/a_race_in_locksupport_park."},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/365559.365617"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/782814.782854"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/277650.277725"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","unstructured":"Maurice Herlihy and Nir Shavit. 2008. The Art of Multiprocessor Programming. Morgan and Kaufmann Burlington.","DOI":"10.5555\/1734069"},{"key":"e_1_2_1_21_1","unstructured":"IBM. 2009. Power ISA Version 2.06 Revision B."},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-19249-9_19"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/1595696.1595701"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1006\/jpdc.1996.0136"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-14896-0_3"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.5555\/1998496.1998518"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","unstructured":"Michael Kuperstein Martin T. Vechev and Eran Yahav. 2011. Partial-coherence abstractions for relaxed memory models. In Programming Language Design and Implementation (PLDI\u201911). 187--198. 10.1145\/1993498.1993521","DOI":"10.1145\/1993498.1993521"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1109\/12.599898"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/7351.7352"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1109\/12.947002"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-36742-7_24"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","unstructured":"Feng Liu Nayden Nedev Nedyalko Prisadnikov Martin T. Vechev and Eran Yahav. 2012. Dynamic synthesis for relaxed memory models. In Programming Language Design and Implementation (PLDI\u201912). ACM 429--440. 10.1145\/2254064.2254115","DOI":"10.1145\/2254064.2254115"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/2749469.2750378"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","unstructured":"Daniel Marino Abhayendra Singh Todd D. Millstein Madanlal Musuvathi and Satish Narayanasamy. 2011. A case for an SC-preserving compiler. In Programming Language Design and Implementation (PLDI\u201911). ACM 199--210. 10.1145\/1993498.1993522","DOI":"10.1145\/1993498.1993522"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-10936-7_15"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/248052.248106"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/1504176.1504186"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","unstructured":"Brian Norris and Brian Demsky. 2013. CDSchecker: Checking concurrent data structures written with C\/C++ atomics. In Object Oriented Programming Systems Languages & Applications (OOPSLA\u201913). 131--150. 10.1145\/2509136.2509514","DOI":"10.1145\/2509136.2509514"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-03359-9_27"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1016\/0020-0190(81)90106-X"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/42190.42277"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","unstructured":"SPARC. 1994. SPARC Architecture Manual Version 9.","DOI":"10.5555\/174556"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2009.30"},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/1065944.1065947"},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/55364.55425"},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1137\/0202017"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.5555\/2041552.2041566"},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.5555\/647422.757083"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2994593","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2994593","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T03:39:48Z","timestamp":1750217988000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2994593"}},"subtitle":["A Static Analysis Approach to Automatic Fence Insertion"],"short-title":[],"issued":{"date-parts":[[2017,5,29]]},"references-count":48,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2017,6,30]]}},"alternative-id":["10.1145\/2994593"],"URL":"https:\/\/doi.org\/10.1145\/2994593","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"value":"0164-0925","type":"print"},{"value":"1558-4593","type":"electronic"}],"subject":[],"published":{"date-parts":[[2017,5,29]]},"assertion":[{"value":"2015-06-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2016-09-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2017-05-29","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}