Check out the new USENIX Web site. next up previous
Next: Checking Implementation Robustness Up: Specifying Correctness Properties Previous: Checking Protocol Conformance

Checking for Resource Leaks

A TCP implementation should release all kernel resources at the end of the connection. Failure to do so can result in resource lockup, which subsequently reduces the performance and the availability of the machine. The resource leaks are not necessarily memory leaks, as these resources can still have valid references to them. To check for such resource leaks, CMC requires that the entire kernel eventually reach the initial state after completing a TCP connection. CMC reports any violation as a potential resource leak.

There are, however, valid situations when the kernel might not reach the initial state. First, some resources can be cached either by the TCP implementation or by the Linux kernel. To account for this fact, CMC traces through a few complete TCP connections to generate a state in which the resources are already cached. CMC performs the state space exploration from this state. Second, the initial and final states of a TCP connection can still differ due to the various statistics the protocol maintains. During the initial model checking iterations, CMC progressively learns to factor out these variables from the state (after simple manual inspection).


next up previous
Next: Checking Implementation Robustness Up: Specifying Correctness Properties Previous: Checking Protocol Conformance
Madanlal Musuvathi 2004-03-03