Bad interaction between elog and postmaster.c (6.4.2)

Started by Shezalmost 27 years ago2 messagesbugs
Jump to latest
#1Shez
shez@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.

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

#2Bruce Momjian
bruce@momjian.us
In reply to: Shez (#1)
Re: [BUGS] 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.

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