I am running a raw socket based communication between two computers (one is a device, but the same thing). I poll for a large (1K) packet several times a second, then send an ACK when I get it. This seems to work from several hours to days, then it blows up and locks up Windows. (XP, Vista, Win7, doesn't seem to matter)

I am rejecting bad packets (determined by mismatched size and/or missing sync bytes). I am also using select() to dynamically wait for responses.

Anyone seen this before or with an idea?