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

Started by Zou Yongover 17 years ago4 messagesbugs
Jump to latest
#1Zou Yong
springwell@gmail.com

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).

#2Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Zou Yong (#1)
Re: BUG #4522: autovacuum working send SIGUSR1 to the wrong pid

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

#3Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Heikki Linnakangas (#2)
Re: BUG #4522: autovacuum working send SIGUSR1 to the wrong pid

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.

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#3)
Re: BUG #4522: autovacuum working send SIGUSR1 to the wrong pid

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