|Summary:||pid file may get corrupted and prevent httpd from starting|
|Product:||Apache httpd-2||Reporter:||Nicolas Carrier <carrier.nicolas0>|
|Component:||Core||Assignee:||Apache HTTPD Bugs Mailing List <bugs>|
|Attachments:||Avoids pid file creation race condition by using a temporary file.|
Description Nicolas Carrier 2019-02-04 10:59:23 UTC
If a power outage occurs at the wrong moment, subsequent attempts to start httpd may fail with the following error: ``` Error retrieving pid file ... Remove it before continuing if it is corrupted. ``` The way pid files are created in apache is racy. The file is created, then it's content is written to it. If a power outage happens between the two steps, the pid file may stay empty. A temporary file should be created instead and renamed after it has been written to and flushed.
Comment 1 Nicolas Carrier 2019-02-04 11:00:58 UTC
Created attachment 36417 [details] Avoids pid file creation race condition by using a temporary file. The original pattern for creating the pid file was: open_create(pid_file) write(pid_file, pid) close(pid_file) But if a power outage occurs between open_create and write, the file will be empty and httpd will refuse to start afterwards unless the corrupt pid file is removed. This patch uses the pattern: open_create(temp_pid_file) write(temp_pid_file) close(temp_pid_file) rename(temp_pid_file, pid_file) which is guaranteed to be atomic, provided that temp_pid_file and pid_file are located in the same file system, which this patch does by creating a temporary file name with the pattern: pid_file_name + random_suffix
Comment 2 Nicolas Carrier 2019-05-22 14:58:57 UTC
There has been no progress with this issue for more than 3 month. Is this issue invalid somehow? Is the patch not acceptable?