strerror(errno) is not thread-safe, use %m