apache が Segmentation fault で落ちる件。

自作 mod が原因かと思って、すげー悩んでしまっていた件。

[Tue Feb 10 16:42:55 2009] [notice] child pid 19967 exit signal Segmentation fault (11), possible coredump in /tmp
[Tue Feb 10 16:42:55 2009] [notice] child pid 19968 exit signal Segmentation fault (11), possible coredump in /tmp
[Tue Feb 10 16:42:55 2009] [notice] child pid 19969 exit signal Segmentation fault (11), possible coredump in /tmp
...

と延々出ているのだが、これが原因だった。。。

DSAS開発者の部屋:なぜ apache module を更新すると Segmentation fault するのか
要するに、「動作中は mod の .so ファイルを cp とかで上書きしたらダメ。絶対。」ということなんだけど、mod 開発中なので、デプロイを動作中に気軽にやっていたのだ。

# /usr/local/apache2/bin/apxs -i -a -c mod_q4m.c
/usr/local/apr/build-1/libtool --silent --mode=compile gcc -prefer-pic -DFD_SETSIZE=65534  -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -g -O2 -pthread -I/usr/local/apache2/include  -I/usr/local/apr/include/apr-1   -I/usr/local/apr-util/include/apr-1   -c -o mod_q4m.lo mod_q4m.c && touch mod_q4m.slo
/usr/local/apr/build-1/libtool --silent --mode=link gcc -o mod_q4m.la  -rpath /usr/local/apache2/modules -module -avoid-version    mod_q4m.lo
/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apr/build-1/libtool' mod_q4m.la /usr/local/apache2/modules
/usr/local/apr/build-1/libtool --mode=install cp mod_q4m.la /usr/local/apache2/modules/
cp .libs/mod_q4m.so /usr/local/apache2/modules/mod_q4m.so
cp .libs/mod_q4m.lai /usr/local/apache2/modules/mod_q4m.la
cp .libs/mod_q4m.a /usr/local/apache2/modules/mod_q4m.a
chmod 644 /usr/local/apache2/modules/mod_q4m.a
ranlib /usr/local/apache2/modules/mod_q4m.a
...

ばっちりと動作中の so に対して cp で上書きしてしまっていた。あたたた。。。