Alrighty, reran the tests with the new threads.xs file you sent me. The first time with the default thread stack size, and the second time with the value of 4k you suggested. The second time did take considerably longer to die, but as you said it would only make it less likely to occur (which seems to be the case).
I like your solution to limiting the number of connections. Had to make a slight tweak so threads would still be joined, but that seems to be working well..ish. The current VM I'm testing on has only 4GB of RAM, and doing my usual tests, the thing would still occasionally crash with the same message even reducing it to 50 threads. Tried 30, and it seems to be going ok. I was just wondering if there was any logic that went behind your suggestion of 100 threads for 8GB of memory if that was just a rough estimation?
Thanks again for all your help, I'll post again if I run into the same problem