{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:35:15Z","timestamp":1750307715547,"version":"3.41.0"},"reference-count":33,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2009,6,1]],"date-time":"2009-06-01T00:00:00Z","timestamp":1243814400000},"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":["CCF-0429802CCF-0447783CCF-0541080CCF-034725CCF-0541108"],"award-info":[{"award-number":["CCF-0429802CCF-0447783CCF-0541080CCF-034725CCF-0541108"]}],"id":[{"id":"10.13039\/100000143","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Archit. Code Optim."],"published-print":{"date-parts":[[2009,6]]},"abstract":"<jats:p>Memory bugs are a broad class of bugs that is becoming increasingly common with increasing software complexity, and many of these bugs are also security vulnerabilities. Existing software and hardware approaches for finding and identifying memory bugs have a number of drawbacks including considerable performance overheads, target only a specific type of bug, implementation cost, and inefficient use of computational resources.<\/jats:p>\n          <jats:p>This article describes MemTracker, a new hardware support mechanism that can be configured to perform different kinds of memory access monitoring tasks. MemTracker associates each word of data in memory with a few bits of state, and uses a programmable state transition table to react to different events that can affect this state. The number of state bits per word, the events to which MemTracker reacts, and the transition table are all fully programmable. MemTracker's rich set of states, events, and transitions can be used to implement different monitoring and debugging checkers with minimal performance overheads, even when frequent state updates are needed. To evaluate MemTracker, we map three different checkers onto it, as well as a checker that combines all three. For the most demanding (combined) checker with 8 bits state per memory word, we observe performance overheads of only around 3%, on average, and 14.5% worst-case across different benchmark suites. Such low overheads allow continuous (always-on) use of MemTracker-enabled checkers, even in production runs.<\/jats:p>","DOI":"10.1145\/1543753.1543754","type":"journal-article","created":{"date-parts":[[2009,7,8]],"date-time":"2009-07-08T17:28:33Z","timestamp":1247074113000},"page":"1-33","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":17,"title":["MemTracker"],"prefix":"10.1145","volume":"6","author":[{"given":"Guru","family":"Venkataramani","sequence":"first","affiliation":[{"name":"Georgia Institute of Technology, Atlanta, GA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Ioannis","family":"Doudalis","sequence":"additional","affiliation":[{"name":"Georgia Institute of Technology, Atlanta, GA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Yan","family":"Solihin","sequence":"additional","affiliation":[{"name":"North Carolina State University"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Milos","family":"Prvulovic","sequence":"additional","affiliation":[{"name":"Georgia Institute of Technology, Atlanta, GA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2009,7,6]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/SP.2008.30"},{"key":"e_1_2_1_2_1","unstructured":"]]Boletta J. 2002. Security Focus Newsletter &num;172. http:\/\/citadelle.intrinsec.com\/mailing\/current\/HTML\/ml_securityfocus_news\/0067.html.  ]]Boletta J. 2002. Security Focus Newsletter &num;172. http:\/\/citadelle.intrinsec.com\/mailing\/current\/HTML\/ml_securityfocus_news\/0067.html."},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1109\/ISCA.2008.20"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/859618.859660"},{"volume-title":"Proceedings of the 7th USENIX Security Conference. USENIX Association, 63--78","author":"Cowan C.","key":"e_1_2_1_5_1"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2004.26"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1353534.1346295"},{"key":"e_1_2_1_8_1","article-title":"The micro-architecture of the Pentium 4 Processor","author":"Hinton G.","year":"2001","journal-title":"Intel. Tech. J. First Quarter."},{"key":"e_1_2_1_9_1","unstructured":"]]IBM Corporation. 2005. IBM Rational Purify. http:\/\/www.ibm.com\/software\/awdtools\/purify\/.  ]]IBM Corporation. 2005. IBM Rational Purify. http:\/\/www.ibm.com\/software\/awdtools\/purify\/."},{"volume-title":"et al","year":"2006","author":"Jouppi N. P.","key":"e_1_2_1_10_1"},{"volume-title":"Proceedings of the ACM\/IEEE Conference on Super-computing. IEEE, 28--34","author":"Kuehn J. T.","key":"e_1_2_1_11_1"},{"key":"e_1_2_1_12_1","doi-asserted-by":"crossref","unstructured":"]]McDonald R. G. Burger D. and Keckler S. 2005. The design and implementation of the TRIPS prototype chip. http:\/\/www.hotchips.org\/archives\/hc17.  ]]McDonald R. G. Burger D. and Keckler S. 2005. The design and implementation of the TRIPS prototype chip. http:\/\/www.hotchips.org\/archives\/hc17.","DOI":"10.1109\/HOTCHIPS.2005.7476592"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/1254810.1254820"},{"volume-title":"Proceedings of the 12th Annual Network and Distributed System Security Symposium (NDSS). Internet Society.","author":"Newsome J.","key":"e_1_2_1_14_1"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1109\/HPCA.2005.29"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2006.29"},{"volume-title":"et al","year":"2006","author":"Renau J.","key":"e_1_2_1_17_1"},{"volume-title":"Valgrind: An open-source memory debugger for 86-GNU\/Linux","year":"2004","author":"Seward J.","key":"e_1_2_1_18_1"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1147\/rd.502.0261"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-71528-3_7"},{"key":"e_1_2_1_21_1","unstructured":"]]SPEC. 2006. Standard performance evaluation corporation benchmarks. http:\/\/www.spec.org.  ]]SPEC. 2006. Standard performance evaluation corporation benchmarks. http:\/\/www.spec.org."},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/1024393.1024404"},{"key":"e_1_2_1_23_1","unstructured":"]]Symantec. 2002. Microsoft IIS HTR chunked encoding heap overflow allows arbitrary code. http:\/\/securityresponse.symantec.com\/avcenter\/security\/Content\/2033.html.  ]]Symantec. 2002. Microsoft IIS HTR chunked encoding heap overflow allows arbitrary code. http:\/\/securityresponse.symantec.com\/avcenter\/security\/Content\/2033.html."},{"volume-title":"\u201ccode red","year":"2001","author":"Fed CIRC","key":"e_1_2_1_24_1"},{"key":"e_1_2_1_25_1","unstructured":"]]US-CERT. 2004. Buffer overflow in Microsoft Internet Explorer. http:\/\/www.us-cert.gov\/cas\/techalerts\/TA04315A.html.  ]]US-CERT. 2004. Buffer overflow in Microsoft Internet Explorer. http:\/\/www.us-cert.gov\/cas\/techalerts\/TA04315A.html."},{"key":"e_1_2_1_26_1","unstructured":"]]Valgrind Developers. 2005. The Valgrind Quick Start Guide. http:\/\/valgrind.org\/docs\/manual\/quickstart.html.  ]]Valgrind Developers. 2005. The Valgrind Quick Start Guide. http:\/\/valgrind.org\/docs\/manual\/quickstart.html."},{"volume-title":"Proceedings of the IEEE 14th International Symposium on High-performance Computer Architecture (HPCA'08)","author":"Venkataramani G.","key":"e_1_2_1_27_1"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1109\/HPCA.2007.346205"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/605397.605429"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/223982.223990"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2004.3"},{"volume-title":"Proceedings of the 31st Annual International Symposium on Computer Architecture (ISCA'04)","author":"Zhou P.","key":"e_1_2_1_32_1"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/1061267.1061269"}],"container-title":["ACM Transactions on Architecture and Code Optimization"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1543753.1543754","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1543753.1543754","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T13:30:20Z","timestamp":1750253420000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1543753.1543754"}},"subtitle":["An accelerator for memory debugging and monitoring"],"short-title":[],"issued":{"date-parts":[[2009,6]]},"references-count":33,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2009,6]]}},"alternative-id":["10.1145\/1543753.1543754"],"URL":"https:\/\/doi.org\/10.1145\/1543753.1543754","relation":{},"ISSN":["1544-3566","1544-3973"],"issn-type":[{"type":"print","value":"1544-3566"},{"type":"electronic","value":"1544-3973"}],"subject":[],"published":{"date-parts":[[2009,6]]},"assertion":[{"value":"2008-07-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2008-12-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2009-07-06","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}