At the end of a successful test, the test process itself ends normally, but ct kills any remaining child of the test process with SIGKILL. This is a problem if that child is executing code under test, because it means gcov has no chance to write coverage data for that process.
In #12 there's some discussion of how gcov writes coverage data.