1
0
mirror of https://github.com/postgres/postgres.git synced 2025-05-03 22:24:49 +03:00

Treat exit code 128 (ERROR_WAIT_NO_CHILDREN) as non-fatal on Win32,

since it can happen when a process fails to start when the system
is under high load.

Per several bug reports and many peoples investigation.

Back-patch to 8.2, since testing shows no issues even though the
"deadman-switch" does not exist  in this version.
This commit is contained in:
Magnus Hagander 2010-09-16 20:37:18 +00:00
parent 2c875a1dea
commit 9c2ba6ad09

View File

@ -2273,6 +2273,19 @@ CleanupBackend(int pid,
* assume everything is all right and simply remove the backend from the
* active backend list.
*/
#ifdef WIN32
/*
* On win32, also treat ERROR_WAIT_NO_CHILDREN (128) as nonfatal
* case, since that sometimes happens under load when the process fails
* to start properly (long before it starts using shared memory).
*/
if (exitstatus == ERROR_WAIT_NO_CHILDREN)
{
LogChildExit(LOG, _("server process"), pid, exitstatus);
exitstatus = 0;
}
#endif
if (!EXIT_STATUS_0(exitstatus) && !EXIT_STATUS_1(exitstatus))
{
HandleChildCrash(pid, exitstatus, _("server process"));