The user experience of modern computing systems is greatly enriched by
I/O devices that provide a rich variety of functions including data
storage (e.g disk and flash drives), connection to the Internet (e.g
network cards, webcams), and entertainment (e.g. speakers, GPUs).  I/O
devices are quite popular in today's computing environments because they
are quite easy to setup for use.  In most cases, this involves no more
than installing a device driver---a piece of software that is often
implemented as an Operating System (OS) kernel module---to manage the
device.

However, defects in device drivers are a major source of system failures,
either by crashing the driver (and consequently the whole system) or by
corrupting the OS or applications.  In the Linux kernel, the error
rates of drivers are several times that of any other subsystem, while up
to 85% of Windows XP failures are caused by driver errors.

This thesis investigates the use of log based dynamic binary analysis for
detecting defects in production drivers, towards improving the reliability
of computing systems.