Yes, I asked this on #win32 with a slightly different example. The problem is the same in both. As you showed in the traces, the blocking recv() blocks the duplication of the socket for the new thread t2. So I have to avoid this order of execution.
Thanks for the hints, hopefully I can modify the program in the correct way to make it work :)