`ITextSnapshot` is safe to use from multiple threads but `ITextDocument` - not, that's why I'e suggested to capture snapshot + encoding instead of just snapshot in `OpenDocumentTracker`. Also interesting question is if reactor thread is alive - if not - then there is a possibility that unhandled exception on this thread has killed it