Tom Lane wrote:
> Oliver Jowett <oliver@opencloud.com> writes:
>
>>I think pqsignal should be passing SA_NOCLDSTOP in sa_flags,
>
>
> With that patch applied, the problem is indeed gone on my system.
> However, I would still like to know why 7.4 didn't show the same
> misbehavior, when it isn't using this flag.
It looks like the 7.4 code never unblocks signals in the collector
process, so that process never gets stopped by SIGTSTP.
On the 7.4.1 install I have to hand, from /proc/<pid>/status, the buffer
process reports:
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000001006a07
SigCgt: 0000000000010000
while the collector process has:
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: ffffffff3ff9fa07
SigIgn: 0000000001007a07
SigCgt: 0000000000000000
TSTP is signal 20 here which appears to be blocked (mask of 80000) in
the collector process.
A quick glance at the REL7_4_STABLE pgstat.c shows only one PG_SETMASK,
executed in the buffer process only.
-O