https://issues.dlang.org/show_bug.cgi?id=14097
--- Comment #5 from Ketmar Dark <ket...@ketmar.no-ip.org> --- it is possible. 1. executing WaitForSingleObject(f->event, INFINITE); in `dispose()`. 2. last `f->result = f->file->read();` fires event 3. time slice goes to `dispose()`, it finishes and frees `aw`. 4. time slice returns to `startthread` (we are still in loop, right after `f->file->read()`. 5. `startthread` executes `i < aw->filesdim` in `for`… oops. --