better EINTR handling