Skip to content

Commit ec6fca1

Browse files
committed
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.4, which is as far back as the "deadman-switch" for shared memory access exists.
1 parent 765b69d commit ec6fca1

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/backend/postmaster/postmaster.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
*
3838
*
3939
* IDENTIFICATION
40-
* $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.614 2010/07/06 19:18:57 momjian Exp $
40+
* $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.614.2.1 2010/09/16 20:37:18 mha Exp $
4141
*
4242
* NOTES
4343
*
@@ -2587,6 +2587,19 @@ CleanupBackend(int pid,
25872587
* assume everything is all right and proceed to remove the backend from
25882588
* the active backend list.
25892589
*/
2590+
#ifdef WIN32
2591+
/*
2592+
* On win32, also treat ERROR_WAIT_NO_CHILDREN (128) as nonfatal
2593+
* case, since that sometimes happens under load when the process fails
2594+
* to start properly (long before it starts using shared memory).
2595+
*/
2596+
if (exitstatus == ERROR_WAIT_NO_CHILDREN)
2597+
{
2598+
LogChildExit(LOG, _("server process"), pid, exitstatus);
2599+
exitstatus = 0;
2600+
}
2601+
#endif
2602+
25902603
if (!EXIT_STATUS_0(exitstatus) && !EXIT_STATUS_1(exitstatus))
25912604
{
25922605
HandleChildCrash(pid, exitstatus, _("server process"));

0 commit comments

Comments
 (0)