Bump back to Linux. I can't figure why sometimes writes aren't happening ... is it something Windows only?
Fixed a miscomparison bugs in torture test. Windows seems to be okay if and only if you transfer one buffer at a time and that buffer is <= 64Kb. Definitely a Boost.ASIO bug.
Wasn't trapping vector read/write early terminations.
Ok, done for tonight. Why the exact same failure happens at the exact same place on Linux as Windows suggests it can't purely be Boost.ASIO, because on Linux I myself do preadv() and pwritev() directly and he still fails with more than one buffer (on Linux there is no 64Kb transfer limit though, that *is* working). Something with more than one buffer must be introducing some sort of failure somewhere somehow :(
After two weeks of head scratching and working until 1am, torture tests now pass and are fully functional on POSIX. Hallelujah! God I'm tired. Now just need to figure out why Boost.ASIO is breaking on Windows.