Studying Application–Library Interaction and Behavior with LibTracEric Bisolfati, Paul Marinescu, and George Candea Proc. Intl. Conf. on Dependable Systems and Networks (DSN), Chicago, IL, June 2010 [ PDF ] LibTrac is a tool for studying the program/library boundary and answering questions like: Which library functions are called most often? Are there library usage patterns that distinguish one class of applications from the others? Do programs generally retry failed I/O calls or not? The answers to these questions are essential to anyone employing library-level fault injection in software testing. On the one hand, the program–library boundary is an appealing location for injecting faults, because the cost of doing so is low, and one can emulate a wide range of real-world failures. On the other hand, developers must decide a priori which library calls to fail, when, and in what way. The space of possibilities is vast, so developers need tools like LibTrac to make informed choices for test scenarios. We used LibTrac to study 13 real-world systems; we report here some of the results. Compared to existing library tracers, LibTrac incurs one to two orders of magnitude less overhead, thus offering considerably more realistic study conditions. |
