OSDN Git Service

Fix kill() call in elog() so that it gets its own pid by calling getpid().
authorTatsuo Ishii <ishii@postgresql.org>
Fri, 16 Apr 1999 06:38:17 +0000 (06:38 +0000)
committerTatsuo Ishii <ishii@postgresql.org>
Fri, 16 Apr 1999 06:38:17 +0000 (06:38 +0000)
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.

src/backend/utils/error/elog.c

index 5909bed..3704f45 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * 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,...)
                ProcReleaseSpins(NULL); /* get rid of spinlocks we hold */
                if (!InError)
                {
-                       kill(MyProcPid, SIGQUIT);       /* abort to traffic cop */
+                       if (MyProcPid == 0) {
+                               kill(getpid(), SIGQUIT);
+                       } else {
+                               kill(MyProcPid, SIGQUIT);       /* abort to traffic cop */
+                       }
                        pause();
                }