02-Aug-2012: KernelStrider 0.1 alpha 1 is out
KernelStrider provides tools to collect data about operation of Linux kernel modules (device drivers, file system modules, etc.) in runtime on x86 systems. Information about the memory accesses, function calls and some other events is collected and passed to the user space for further processing.
For example, KernelStrider can provide data for offline data race detectors (like the "offline" variant of ThreadSanitizer, http://code.google.com/p/data-race-test/).
This version can already be used to analyze real-world kernel modules and help reveal data races there. Still it is not fully automatic yet. It needs the user to mark ("annotate") the constructs in the code of the kernel module that define ordering rules (e.g. the rule stating that execution of a file operation callback cannot start before the callback is properly registered).
In the future versions, the system will be improved to be able to detect more synchronization primitives and ordering rules automatically.
Downloads as well as other useful information can be found at the project home page: http://code.google.com/p/kernel-strider/
A step-by-step guide on how to build and install KernelStrider and how use it with ThreadSanitizer to reveal data races in a kernel module is available here:
http://code.google.com/p/kernel-strider/wiki/KernelStrider_Tutorial
In the future, KernelStrider may be incorporated into KEDR framework (http://code.google.com/p/kedr/).