I'm not sure what the difference is...but i could see a leap in logic to state that by cutting off the socket creation with a connection timeout would support my theory of the thread being left in a state unable to create further sockets?
Internet is full of recommendations to use SIG ALARM while socket connect, and as far as I remember, socket "Timeout" option was not working right for connection stage (and/or for DNS timeouts). (not sure about current IO::Socket versions, through)
Also SIG ALARM is not affecting socket read/write timeouts happened after alarm(0)
thread being left in a state unable to create further sockets?
Need probably to see more code, what happening after/before eval?