Commit 075dc252 authored by Tatsuo Ishii's avatar Tatsuo Ishii

Fix kill() call in elog() so that it gets its own pid by calling getpid().

MyProcPid global variable is set to 0 when postgres starts as a command
(not as a backend daemon). This leads issuing SIGQUIT to the process group,
not the process itself. As a result, parent sh gets core dumped in the
Wisconsin benchmark test.
parent e062a176
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.39 1999/02/13 23:19:47 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.40 1999/04/16 06:38:17 ishii Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -221,7 +221,11 @@ elog(int lev, const char *fmt,...) ...@@ -221,7 +221,11 @@ elog(int lev, const char *fmt,...)
ProcReleaseSpins(NULL); /* get rid of spinlocks we hold */ ProcReleaseSpins(NULL); /* get rid of spinlocks we hold */
if (!InError) if (!InError)
{ {
kill(MyProcPid, SIGQUIT); /* abort to traffic cop */ if (MyProcPid == 0) {
kill(getpid(), SIGQUIT);
} else {
kill(MyProcPid, SIGQUIT); /* abort to traffic cop */
}
pause(); pause();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment