Which doesn't make much sense considering the dtor is empty.
Hmm... there is the possibly that this is a problem with my implementation, since it appears that SoundRecorder::OnProcessSamples is the only abstract function in the class and that SoundRecorder is the root of that portion of the class hierarchy.
I don't know how or why this error would occur, though, since I've provided an override for the function within my class. Given the contents of the error and the fact that it occurs during cleanup, it seems that destroying the object somehow results in the processing thread calling the abstract SoundRecorder::OnProcessSamples instead of my override - I'm never calling the function outside the processing thread.
I'll begin working on a test case within an hour or so. If I'm unable to make one I'll put my code up somewhere, as it's nothing sensitive (just a little bulky due to the FFT logic).