We have two Windows Server, one in 2012 R2 and the other in 2008 R2 which uses Apache HTTP Server (httpd
) 2.4 in proxy/reverse-proxy mode (usage of ProxyPass
, ProxyPassReverse
and Virtual Hosts configuration). Both servers uses Apache 2.4.27 x64 binary build from Apache Haus.
We have some backup scripts running on both servers. They stop all the services (including Apache) then do the backup and restart all services again.
These scripts are working fine since several years (almost 4 years). But starting from July 12, 2018
, the behaviour is now strange. The backup scripts are doing their jobs, stopping all services, making the backup but now, all services are restarted except Apache.
After investigating, I found that Apache 2.4.27 service can't be stopped. When using the Services console and trying to manually stop the service, the console shows "Stopping" and nothing happens.
So I checked the running processes and seen that a httpd.exe
process is running. I tried to kill that process but with no luck.
So, I tried:
taskkill /im "httpd.exe" /f /t
And the output is:
ERROR: The process with PID 560 (child process of PID 480) could not be terminated.
Reason: There is no running instance of the task.
So I tested to kill the process with pskill
from Sysinternals:
pskill -t 560
And the output is:
Copyright (C) 1999-2016 Mark Russinovich
Sysinternals - www.sysinternals.com
Process 5956 killed.
But this is false, as the httpd
process is always running!
So I've updated Apache from 2.4.27 to 2.4.34, but the problem remains. The only thing to do to unblock the situation is to reboot the whole server.
I checked the installed updates, and some of them were installed the July 11, 2018
so one day before:
- KB4338420
- KB4338818
- KB4339093
- KB4338423
So I presume the problem is from one of these updates. So before uninstalling all of them, is there someone which have the same problem as I, I mean Apache 2.4 becomes unkillable and can't be stopped on Windows Server?
The big issue is, if that httpd
process can't be killed, Apache can't be restarted as the port 80 is already bound.