Thread: BUG #4522: autovacuum working send SIGUSR1 to the wrong pid

BUG #4522: autovacuum working send SIGUSR1 to the wrong pid

From
"Zou Yong"
Date:
The following bug has been logged online:

Bug reference:      4522
Logged by:          Zou Yong
Email address:      springwell@gmail.com
PostgreSQL version: 8.3.4
Operating system:   Linux 2.6.24
Description:        autovacuum working send SIGUSR1 to the wrong pid
Details:

I was running postgres on a Linux with busybox. The autovacuum feature is
turned on. I noticed that the autovacuum worker sent SIGUSR1 to pid 1 which
is the init process and caused the system halt.

I did some debugging and found that the root cause is the constant
AutoVacNumSignals is not defined correctly. It should be (AutoVacRebalance +
1).

Re: BUG #4522: autovacuum working send SIGUSR1 to the wrong pid

From
Heikki Linnakangas
Date:
Zou Yong wrote:
> Bug reference:      4522
> Logged by:          Zou Yong
> Email address:      springwell@gmail.com
> PostgreSQL version: 8.3.4
> Operating system:   Linux 2.6.24
> Description:        autovacuum working send SIGUSR1 to the wrong pid
> Details:
>
> I was running postgres on a Linux with busybox. The autovacuum feature is
> turned on. I noticed that the autovacuum worker sent SIGUSR1 to pid 1 which
> is the init process and caused the system halt.

Hmm. The postgres user shouldn't have permission to halt the system,
methinks.

> I did some debugging and found that the root cause is the constant
> AutoVacNumSignals is not defined correctly. It should be (AutoVacRebalance +
> 1).

Yeah, that's clearly a bug. Fixed, thanks.

--
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com

Re: BUG #4522: autovacuum working send SIGUSR1 to the wrong pid

From
Alvaro Herrera
Date:
Heikki Linnakangas escribió:
> Zou Yong wrote:

>> I was running postgres on a Linux with busybox. The autovacuum feature is
>> turned on. I noticed that the autovacuum worker sent SIGUSR1 to pid 1 which
>> is the init process and caused the system halt.
>
> Hmm. The postgres user shouldn't have permission to halt the system,
> methinks.

Yeah, the reason this hasn't ever been seen is that normally we don't
have permissions to signal init.  My guess is that Zou Yang is running a
system without users where everything runs as root.  This fits the fact
that it's running busybox: I guess it's an embedded system of some sort.

>> I did some debugging and found that the root cause is the constant
>> AutoVacNumSignals is not defined correctly. It should be (AutoVacRebalance +
>> 1).
>
> Yeah, that's clearly a bug. Fixed, thanks.

My fault.  Thanks for the patch.

--
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

Re: BUG #4522: autovacuum working send SIGUSR1 to the wrong pid

From
Tom Lane
Date:
Alvaro Herrera <alvherre@commandprompt.com> writes:
> Yeah, the reason this hasn't ever been seen is that normally we don't
> have permissions to signal init.

... and that the only consequence of the failed kill() would be that the
launcher doesn't get the signal to rebalance costs after a worker
launch, which I guess doesn't have any obvious bad effects.

            regards, tom lane