In recent months we have been transitioning from Fedora Core systems to Debian ones. Our standard install is Debian stable "Etch", and the standard slate of packages serves almost all our needs admirably.
With one exception.
CiviCRM 2.1, which is (barely) still in alpha requires PHP version 5.2.1+, and the version that comes with Debian stable is 5.2.0. The way around this is to install the Debian packages from the testing distribution, which currently offers the latest 5.2.6 version of PHP.
I am a huge fan of package management systems, and like Debian's APT quite a lot. So in order to keep things all nicely under control, I set up a 'mixed' system that defaults to packages from the stable distribution, but allows access to the testing packages and all their dependencies.
The basic instructions to set this up can be found in the APT HOWTO. I would add that it's also usually necessary to up the size of apt's cache to avoid out-of-memory errors. Also, I add my local settings file in the /etc/apt/apt.conf.d/ directory instead of /etc/apt/apt.conf just to keep all the settings files together.
So, my /etc/apt/apt.conf.d/local file looks like this:
APT::Default-Release "stable"; APT::Cache-Limit "16777216";
At this point it becomes possible to upgrade PHP to the sexy new testing version:
apt-get update apt-get -t testing install php5-common php5-cgi php5-gd php5-mysql [...]
All well and good.
Except that now Apache won't shut down or restart properly. On shutdown using apache2ctl or the apache init script, the parent (root-owned) apache process remains open but nonresponsive, and can only be killed with a 'kill -9 [PID]' as root.
Tracing the output of both child and parent processes was unhelpful, showing only variations on this:
futex(0xb6c234e0, FUTEX_WAIT, 2, NULL)
And the following lines show up in the apache error log:
[Fri Aug 22 15:02:48 2008] [error] child process 3422 still did not exit, sending a SIGKILL [Fri Aug 22 15:02:48 2008] [error] child process 3423 still did not exit, sending a SIGKILL [Fri Aug 22 15:02:48 2008] [error] child process 3424 still did not exit, sending a SIGKILL [Fri Aug 22 15:02:48 2008] [error] child process 3425 still did not exit, sending a SIGKILL [Fri Aug 22 15:02:48 2008] [error] child process 3426 still did not exit, sending a SIGKILL
Some searching based on these various crumbs of information led me to this bug report.
Apparently php5-mysql assumes a higher version of MySQL than is provided by Etch, but doesn't require it. And apparently the Lenny version of MySQL assumes an updated libmysqlclient15off but *also* doesn't require it.
So if you run a mixed Etch/Lenny system and are still seeing this problem, upgrade both the mysql-server and libmysqlclient15off packages.