Top: An Infrastructure for detecting Application-Specific Program Errors by Binary Runtime Instrumentation

dc.contributor.authorGopal, Prasaden
dc.contributor.committeechairBack, Godmar V.en
dc.contributor.committeememberEdwards, Stephen H.en
dc.contributor.committeememberRamakrishnan, Narenen
dc.contributor.departmentComputer Scienceen
dc.date.accessioned2014-03-14T20:49:09Zen
dc.date.adate2007-01-12en
dc.date.available2014-03-14T20:49:09Zen
dc.date.issued2006-06-15en
dc.date.rdate2007-01-12en
dc.date.sdate2006-12-08en
dc.description.abstractFinding errors in applications has been achieved using a wide variety of techniques. Some tools instrument the application to check for program properties dynamically whereas others analyze the program statically. We use a technique that analyzes a program's execution by binary runtime instrumentation. Unlike tools that work on a particular language or an intermediate representation of a language, our approach works directly on binaries and hence it is not bound to any language. In order to instrument binaries, we use a binary instrumentation system called Pin, which provides APIs to instrument the application at runtime. We have built an infrastructure using Pin called Top that allows program entities like variables and events to be traced. Using finite automata we can check if certain events take place during the execution of the program. Top consists of a Tracing System that can trace movement of pointers to memory locations or 32-bit data values and keeps track of all their copies. It also provides an Event Framework that reports the occurrence of events such as function calls or returns. Top provides a programming interface which allows querying for particular events. The query is compiled with Top to produce a customized analysis tool, also called client. Running the analysis tool with the application, under Pin, results in events of interest being detected and reported. Using Top, we built a Memory Checker that checks for incorrect usage of dynamic memory allocation APIs and semantically incorrect accesses to dynamically allocated memory. Since we perform fine-grained checking by tracing references, our memory checker found some errors that a popular memory checker called valgrind did not. We have also built an MPI Checker which is used to check if programs use MPI's asynchronous communication primitives properly. This checker can detect errors related to illegal data buffer accesses and errors where the programmer inadvertently overwrote a handle needed to finish the processing of a request.en
dc.description.degreeMaster of Scienceen
dc.identifier.otheretd-12082006-025336en
dc.identifier.sourceurlhttp://scholar.lib.vt.edu/theses/available/etd-12082006-025336/en
dc.identifier.urihttp://hdl.handle.net/10919/36014en
dc.publisherVirginia Techen
dc.relation.haspartPrasadThesis_12-21-2006.pdfen
dc.rightsIn Copyrighten
dc.rights.urihttp://rightsstatements.org/vocab/InC/1.0/en
dc.subjectProgram analysisen
dc.subjectdebuggingen
dc.subjectapplication-specific errorsen
dc.titleTop: An Infrastructure for detecting Application-Specific Program Errors by Binary Runtime Instrumentationen
dc.typeThesisen
thesis.degree.disciplineComputer Scienceen
thesis.degree.grantorVirginia Polytechnic Institute and State Universityen
thesis.degree.levelmastersen
thesis.degree.nameMaster of Scienceen

Files

Original bundle
Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
PrasadThesis_12-21-2006.pdf
Size:
1.73 MB
Format:
Adobe Portable Document Format

Collections