From ebb618bc5d0db1f7006365c98df2283c0bffbafa Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Mon, 27 Sep 1999 18:32:58 +0000
Subject: [PATCH] Update README.NT with patch.

---
 doc/README.NT | 164 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 164 insertions(+)

diff --git a/doc/README.NT b/doc/README.NT
index 0a69e09ba27..e83e326cffa 100644
--- a/doc/README.NT
+++ b/doc/README.NT
@@ -67,3 +67,167 @@ Also, the cygnus-bindir has to be placed in the path before the
 NT-directories, because the sort.exe has to be take for cygnus, not
 NT.
 
+---------------------------------------------------------------------------
+
+FIX FOR POSTGRESQL FREEZING ON NT MACHINES
+
+
+From: "Hiroshi Inoue" <Inoue@tpf.co.jp>
+To: "Horak Daniel" <horak@mmp.plzen-city.cz>, "'Tom Lane'" <tgl@sss.pgh.pa.us>
+Cc: <pgsql-hackers@postgreSQL.org>
+Subject: RE: [HACKERS] backend freezeing on win32 fixed (I hope ;-) ) 
+Date: Wed, 18 Aug 1999 08:45:28 +0900
+Message-ID: <000301bee90a$95d40f00$2801007e@cadzone.tpf.co.jp>
+MIME-Version: 1.0
+Content-Type: text/plain;
+	charset="iso-8859-1"
+Content-Transfer-Encoding: 7bit
+X-Priority: 3 (Normal)
+X-MSMail-Priority: Normal
+X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0
+X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4
+In-reply-to: <2E7F82FAC1FCD2118E1500A024B3BF907DED3F@exchange.mmp.plzen-city.cz>
+Importance: Normal
+Sender: owner-pgsql-hackers@postgreSQL.org
+Precedence: bulk
+Status: RO
+
+> -----Original Message-----
+> From: owner-pgsql-hackers@postgreSQL.org
+> [mailto:owner-pgsql-hackers@postgreSQL.org]On Behalf Of Horak Daniel
+> Sent: Tuesday, August 17, 1999 9:06 PM
+> To: 'Tom Lane'
+> Cc: 'pgsql-hackers@postgreSQL.org'
+> Subject: RE: [HACKERS] backend freezeing on win32 fixed (I hope ;-) )
+
+Yutaka Tanida [yutaka@marin.or.jp] and I have examined IPC
+library.
+
+We found that postmaster doesn't call exec() after fork() since v6.4.
+
+The value of static/extern variables which cygipc library holds may
+be different from their initial values when postmaster fork()s child
+backend processes.
+
+I made the following patch for cygipc library on trial.
+This patch was effective for Yutaka's test case.
+
+Regards.
+
+Hiroshi Inoue
+Inoue@tpf.co.jp
+
+*** sem.c.orig	Tue Dec 01 00:16:25 1998
+--- sem.c	Tue Aug 17 13:22:06 1999
+***************
+*** 58,63 ****
+--- 58,78 ----
+  static int		  GFirstSem	 = 0;		/*PCPC*/
+  static int		  GFdSem	    ;		/*PCPC*/
+
++ static pid_t	GProcessId = 0;
++
++ static void	init_globals(void)
++ {
++ 	pid_t pid;
++
++ 	if (pid=getpid(), pid != GProcessId)
++ 	{
++ 		GFirstSem = 0;
++ 		used_sems = used_semids = max_semid = 0;
++ 		sem_seq = 0;
++ 		GProcessId = pid;
++ 	}
++ }
++
+  /************************************************************************/
+  /* Demande d'acces a la zone partagee de gestion des semaphores		*/
+  /************************************************************************/
+***************
+*** 77,82 ****
+--- 92,98 ----
+  {
+      int LRet ;
+
++ 	init_globals();
+      if( GFirstSem == 0 )
+      {
+  	if( IsGSemSemExist() )
+*** shm.c.orig	Tue Dec 01 01:04:57 1998
+--- shm.c	Tue Aug 17 13:22:27 1999
+***************
+*** 59,64 ****
+--- 59,81 ----
+  static int		  GFirstShm	 = 0;		/*PCPC*/
+  static int		  GFdShm	    ;		/*PCPC*/
+
++ /*****************************************/
++ /*	Initialization of static variables   */
++ /*****************************************/
++ static pid_t GProcessId = 0;
++ static void init_globals(void)
++ {
++ 	pid_t pid;
++
++ 	if (pid=getpid(), pid != GProcessId)
++ 	{
++ 		GFirstShm = 0;
++ 		shm_rss = shm_swp = max_shmid = 0;
++ 		shm_seq = 0;
++ 		GProcessId = pid;
++ 	}
++ }
++
+  /************************************************************************/
+  /* Demande d'acces a la zone partagee de gestion des shm		*/
+  /************************************************************************/
+***************
+*** 82,87 ****
+--- 99,105 ----
+  {
+   int LRet ;
+
++  init_globals();
+   if( GFirstShm == 0 )
+   {
+    if( IsGSemShmExist() )
+*** msg.c.orig	Tue Dec 01 00:16:09 1998
+--- msg.c	Tue Aug 17 13:20:04 1999
+***************
+*** 57,62 ****
+--- 57,77 ----
+  static int		  GFirstMsg	 = 0;		/*PCPC*/
+  static int		  GFdMsg	    ;		/*PCPC*/
+
++ /*****************************************/
++ /*	Initialization of static variables   */
++ /*****************************************/
++ static pid_t GProcessId = 0;
++ static void init_globals(void)
++ {
++ 	pid_t pid;
++
++ 	if (pid=getpid(), pid != GProcessId)
++ 	{
++ 		GFirstMsg = 0;
++ 		msgbytes = msghdrs = msg_seq = used_queues = max_msqid = 0;
++ 		GProcessId = pid;
++ 	}
++ }
+  /************************************************************************/
+  /* Demande d'acces a la zone partagee de gestion des semaphores		*/
+  /************************************************************************/
+***************
+*** 79,84 ****
+--- 94,100 ----
+  {
+   int LRet ;
+
++  init_globals();
+   if( GFirstMsg == 0 )
+   {
+    if( IsGSemMsgExist() )
+
+
+
+
-- 
GitLab