When we switched the Windows build to release with symbols (RelWithDebInfo), we started hitting an apparent race condition at test shutdown that's blocking the release. What happens is, apparently:
- Test case starts running
- Cache is closed and deleted
- Stats thread wakes up, and tries to do something with stats
- Stats code calls a method on DataOutput that attempts to refer to this (now dead) cache object
- Test code crashes due to unhandled exception in stats code
- Test framework hangs, because it's waiting forever for child process to call ExitProcess explicitly (in a nutshell)
We need to ensure that either a) the stats code never attempts to reference a dead cache, or b) when we hit the exception in the stats code, we catch it and exit gracefully.