R>Это минимальный репродьюсер проблемы из большой программы.
R>И, да, ошибка не в этом. Я видел, что потоки висят в WSAGetOverlappedResult.
По логике вызов CancelIoEx должен происходить только тогда, когда поле Internal структуры OVERLAPPED содержит 997 (WSA_IO_PENDING).
В вашем же когда это условие не выполняется.