Thread: Bad interaction between elog and postmaster.c (6.4.2)
Hi there, The bug that I reported which was causing the backend and all its children to hang when an accept() on an incoming connection fails turns out to because of elog()'s side effect of sending SIGQUIT to the backend. This causes the children to be sent signals while SIGCHLD is blocked (to prevent race's). This seems to hang the backend forever. I was going to check 6.5 before I sent this but I don't have enough time just now, my aplogies for this. A simple hack around is to remove the elog() when an accept fails. Cheers Shez -- NSL (Internet) Ltd, 26 Forth Street, Edinburgh, EH1 3LH, UK tel + 44 (0)131 477 8215 fax + 44 (0)131 477 8223 http://www.nsl.net
> Hi there, > The bug that I reported which was causing the backend and all its > children to hang when an accept() on an incoming connection fails turns out to > because of elog()'s side effect of sending SIGQUIT to the backend. This causes > the children to be sent signals while SIGCHLD is blocked (to prevent race's). > This seems to hang the backend forever. > > I was going to check 6.5 before I sent this but I don't have enough time just > now, my aplogies for this. > > A simple hack around is to remove the elog() when an accept fails. This is redesigned in 6.5. -- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026