Thread: BUG #4522: autovacuum working send SIGUSR1 to the wrong pid
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).
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
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.
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