{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,11,12]],"date-time":"2025-11-12T03:14:36Z","timestamp":1762917276166,"version":"3.41.0"},"reference-count":43,"publisher":"Association for Computing Machinery (ACM)","issue":"5","license":[{"start":{"date-parts":[[2008,5,24]],"date-time":"2008-05-24T00:00:00Z","timestamp":1211587200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/100000143","name":"Division of Computing and Communication Foundations","doi-asserted-by":"publisher","award":["CNS-0751961CNS-0751949CNS-0810906CCF-0753470"],"award-info":[{"award-number":["CNS-0751961CNS-0751949CNS-0810906CCF-0753470"]}],"id":[{"id":"10.13039\/100000143","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000144","name":"Division of Computer and Network Systems","doi-asserted-by":"publisher","award":["CNS-0751961CNS-0751949CNS-0810906CCF-0753470"],"award-info":[{"award-number":["CNS-0751961CNS-0751949CNS-0810906CCF-0753470"]}],"id":[{"id":"10.13039\/100000144","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2010,5]]},"abstract":"<jats:p>By studying the behavior of several programs that crash due to memory errors, we observed that locating the errors can be challenging because significant propagation of corrupt memory values can occur prior to the point of the crash. In this article, we present an automated approach for locating memory errors in the presence of memory corruption propagation. Our approach leverages the information revealed by a program crash: when a crash occurs, this reveals a subset of the memory corruption that exists in the execution. By suppressing (nullifying) the effect of this known corruption during execution, the crash is avoided and any remaining (hidden) corruption may then be exposed by subsequent crashes. The newly exposed corruption can then be suppressed in turn. By iterating this process until no further crashes occur, the first point of memory corruption\u2014and the likely root cause of the program failure\u2014can be identified. However, this iterative approach may terminate prematurely, since programs may not crash even when memory corruption is present during execution. To address this, we show how crashes can be exposed in an execution by manipulating the relative ordering of particular variables within memory. By revealing crashes through this variable re-ordering, the effectiveness and applicability of the execution suppression approach can be improved. We describe a set of experiments illustrating the effectiveness of our approach in consistently and precisely identifying the first points of memory corruption in executions that fail due to memory errors. We also discuss a baseline software implementation of execution suppression that incurs an average overhead of 7.2x, and describe how to reduce this overhead to 1.8x through hardware support.<\/jats:p>","DOI":"10.1145\/1745312.1745314","type":"journal-article","created":{"date-parts":[[2010,5,25]],"date-time":"2010-05-25T13:08:17Z","timestamp":1274792897000},"page":"1-36","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":7,"title":["Execution suppression"],"prefix":"10.1145","volume":"32","author":[{"given":"Dennis","family":"Jeffrey","sequence":"first","affiliation":[{"name":"The University of California, Riverside, CA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Vijay","family":"Nagarajan","sequence":"additional","affiliation":[{"name":"The University of California, Riverside, CA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Rajiv","family":"Gupta","sequence":"additional","affiliation":[{"name":"The University of California, Riverside, CA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2008,5,24]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/93542.93576"},{"volume-title":"Proceedings of the IEEE International Conference on Software Maintenance. IEEE Computer Society Press","author":"Agrawal H.","key":"e_1_2_1_2_1","unstructured":"Agrawal , H. , Horgan , J. R. , Krauser , E. W. , and London , S . 1993. Incremental regression testing . In Proceedings of the IEEE International Conference on Software Maintenance. IEEE Computer Society Press , Los Alamitos, CA, 348--357. Agrawal, H., Horgan, J. R., Krauser, E. W., and London, S. 1993. Incremental regression testing. In Proceedings of the IEEE International Conference on Software Maintenance. IEEE Computer Society Press, Los Alamitos, CA, 348--357."},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1109\/SP.2008.30"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1109\/12.2185"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/1133981.1134000"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1449764.1449774"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/1508244.1508277"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1109\/ISCA.2008.18"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/1062455.1062522"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/1062455.1062533"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/1250662.1250722"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.908957"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/512529.512558"},{"volume-title":"Proceedings of the Symposium ACM\/SIGSOFT Foundations of Software Engineering. ACM","author":"Gyimothy T.","key":"e_1_2_1_15_1","unstructured":"Gyimothy , T. , Beszedes , A. , and Forgacs , I . 1999. An efficient relevant slicing method for debugging . In Proceedings of the Symposium ACM\/SIGSOFT Foundations of Software Engineering. ACM , New York, 303--321. Gyimothy, T., Beszedes, A., and Forgacs, I. 1999. An efficient relevant slicing method for debugging. In Proceedings of the Symposium ACM\/SIGSOFT Foundations of Software Engineering. ACM, New York, 303--321."},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/581339.581377"},{"volume-title":"Proceedings of the USENIX Winter Technical Conference. USENIX","author":"Hastings R.","key":"e_1_2_1_17_1","unstructured":"Hastings , R. and Joyce , B . 1992. Purify: Fast detection of memory leaks and access errors . In Proceedings of the USENIX Winter Technical Conference. USENIX , Berkeley, CA, 125--136. Hastings, R. and Joyce, B. 1992. Purify: Fast detection of memory leaks and access errors. In Proceedings of the USENIX Winter Technical Conference. USENIX, Berkeley, CA, 125--136."},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1390630.1390652"},{"volume-title":"Proceedings of the IEEE International Conference on Software Maintenance. IEEE Computer Society Press","author":"Jeffrey D.","key":"e_1_2_1_19_1","unstructured":"Jeffrey , D. , Gupta , N. , and Gupta , R . 2008b. Identifying the root causes of memory bugs using corrupted memory location suppression . In Proceedings of the IEEE International Conference on Software Maintenance. IEEE Computer Society Press , Los Alamitos, CA, 356--365. Jeffrey, D., Gupta, N., and Gupta, R. 2008b. Identifying the root causes of memory bugs using corrupted memory location suppression. In Proceedings of the IEEE International Conference on Software Maintenance. IEEE Computer Society Press, Los Alamitos, CA, 356--365."},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/581339.581397"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1016\/0020-0190(88)90054-3"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2006.28"},{"volume-title":"Proceedings of the Workshop on the Evaluation of Software Defect Detection Tools Co-located with PLDI.","author":"Lu S.","key":"e_1_2_1_23_1","unstructured":"Lu , S. , Li , Z. , Qin , F. , Tan , L. , Zhou , P. , and Zhou , Y . 2005. BugBench: Benchmarks for evaluating bug detection tools . In Proceedings of the Workshop on the Evaluation of Software Defect Detection Tools Co-located with PLDI. Lu, S., Li, Z., Qin, F., Tan, L., Zhou, P., and Zhou, Y. 2005. BugBench: Benchmarks for evaluating bug detection tools. In Proceedings of the Workshop on the Evaluation of Software Defect Detection Tools Co-located with PLDI."},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2006.40"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/1346281.1346296"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1109\/ISCA.2005.16"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/503272.503286"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/1250734.1250746"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/1250734.1250736"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/1542476.1542521"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1007\/11531142_22"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/1352592.1352616"},{"volume-title":"Proceedings of the 18th IEEE International Conference on Automated Software Engineering. IEEE Computer Society Press","author":"Renieris M.","key":"e_1_2_1_33_1","unstructured":"Renieris , M. and Reiss , S . 2003. Fault localization with nearest neighbor queries . In Proceedings of the 18th IEEE International Conference on Automated Software Engineering. IEEE Computer Society Press , Los Alamitos, CA, 30--39. Renieris, M. and Reiss, S. 2003. Fault localization with nearest neighbor queries. In Proceedings of the 18th IEEE International Conference on Automated Software Engineering. IEEE Computer Society Press, Los Alamitos, CA, 30--39."},{"volume-title":"Proceedings of the 11th Annual Network and Distributed System Security Symposium, 159--169","author":"Ruwase O.","key":"e_1_2_1_34_1","unstructured":"Ruwase , O. and Lam , M . 2004. A practical dynamic buffer overflow detector . In Proceedings of the 11th Annual Network and Distributed System Security Symposium, 159--169 . Ruwase, O. and Lam, M. 2004. A practical dynamic buffer overflow detector. In Proceedings of the 11th Annual Network and Distributed System Security Symposium, 159--169."},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1147\/rd.502.0261"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1109\/COMPSAC.2008.23"},{"volume-title":"Proceedings of the 14th IEEE International Symposium on High-Performance Computer Architecture. IEEE Computer Society Press","author":"Venkataramani G.","key":"e_1_2_1_37_1","unstructured":"Venkataramani , G. , Doudalis , I. , Solihin , Y. , and Prvulovic , M . 2008. FlexiTaint: A programmable accelerator for dynamic taint propagation . In Proceedings of the 14th IEEE International Symposium on High-Performance Computer Architecture. IEEE Computer Society Press , Los Alamitos, CA. Venkataramani, G., Doudalis, I., Solihin, Y., and Prvulovic, M. 2008. FlexiTaint: A programmable accelerator for dynamic taint propagation. In Proceedings of the 14th IEEE International Symposium on High-Performance Computer Architecture. IEEE Computer Society Press, Los Alamitos, CA."},{"key":"e_1_2_1_38_1","first-page":"4","article-title":"Program slicing","volume":"10","author":"Weiser M.","year":"1984","unstructured":"Weiser , M. 1984 . Program slicing . IEEE Trans. Softw. Eng. 10 , 4 (July), 352--357. Weiser, M. 1984. Program slicing. IEEE Trans. Softw. Eng. 10, 4 (July), 352--357.","journal-title":"IEEE Trans. Softw. Eng."},{"volume-title":"Proceedings of the 7th Symposium on Operating Systems Design and Implementation, 131--146","author":"Yang J.","key":"e_1_2_1_39_1","unstructured":"Yang , J. , Sar , C. , and Engler , D. R . 2006. EXPLODE: A lightweight, general system for finding serious storage system errors . In Proceedings of the 7th Symposium on Operating Systems Design and Implementation, 131--146 . Yang, J., Sar, C., and Engler, D. R. 2006. EXPLODE: A lightweight, general system for finding serious storage system errors. In Proceedings of the 7th Symposium on Operating Systems Design and Implementation, 131--146."},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/587051.587053"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.988498"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/1134285.1134324"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/1133981.1134002"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2004.3"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1745312.1745314","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1745312.1745314","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T20:26:16Z","timestamp":1750278376000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1745312.1745314"}},"subtitle":["An automated iterative technique for locating memory errors"],"short-title":[],"issued":{"date-parts":[[2008,5,24]]},"references-count":43,"journal-issue":{"issue":"5","published-print":{"date-parts":[[2010,5]]}},"alternative-id":["10.1145\/1745312.1745314"],"URL":"https:\/\/doi.org\/10.1145\/1745312.1745314","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"type":"print","value":"0164-0925"},{"type":"electronic","value":"1558-4593"}],"subject":[],"published":{"date-parts":[[2008,5,24]]},"assertion":[{"value":"2008-11-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2009-10-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2008-05-24","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}