I've been getting some failures after an immediate shutdown or crash, during severe IO stress, with the message:
LOG: XX000: select() failed in postmaster: Invalid argument
LOCATION: ServerLoop, postmaster.c:1560
It is trying to sleep for -1 seconds.
I think the problem is here, where there should be a Max rather than a Min:
commit 82233ce7ea42d6ba519aaec63008aff49da6c7af
Date: Fri Jun 28 17:20:53 2013 -0400
Send SIGKILL to children if they don't die quickly in immediate shutdown
...
+ /* remaining time, but at least 1 second */
+ timeout->tv_sec = Min(SIGKILL_CHILDREN_AFTER_SECS -
+ (time(NULL) - AbortStartTime), 1);
But I don't understand the logic behind this anyway. Why sleep at least 1 second? If time is up, it is up, why not use zero as the minimum?
Cheers,
Jeff