[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:83075] Apache+PHP3でsegmentation fault


小寺@テクストです

 PHP3-3.0.18-i18n-ja2をdebianパッケージにしようと思い、以下のことを試
しましたが、最後の最後でひっかかっています。この現象について何かご存じ
の方がいらしたら、ご教示お願いします。


(1)debian potato(一部woody)のデスクトップ機で、PHP3-i18nをパッケージ化。
 これは成功。

・環境: debian potatoベースで、libc6まわりをwoodyに上げたマシン。
------------------------------
ii  libc6-dev        2.2.2-4
ii  gcc              2.95.2-13
ii  binutils         2.9.5.0.22-3
ii  apache-dev       1.3.12-2.1
------------------------------

・やったこと:
 PHP3-i18nを展開し、dh_make、debian/rulesを調整して、debuild。
 (途中、gdの新しいバージョンが必要なことに気づき、gd-1.8.4のtar-ball
をパッケージ化してインストール)。


(2)debian potatoのサーバーに、作成したソースパッケージをコピーしてバイ
ナリ作成、インストール。

・結果:
 apacheが起動せず。apachectlで起動してもエラーメッセージは出ない。ど
うやら最初の子プロセスの起動に失敗している模様。


(3)libc6をアップグレードしたサーバーで、バイナリ構築のテスト
 このあとさまざまな試行錯誤をしたのですが、原因をつかまえるにいたらず、
思い切ってlibc6をwoodyに上げることにしました。
(PHP-i18nにdebianソースパッケージのdiffを当てたり、その逆をしたり、
PHP4+jstringを試したりしました。apacheも、1.3.9、1.3.12、1.3.14、
1.3.19などと試しました)

 そして、先ほどのPHP3-i18nの自作ソースパッケージをdebuild -bしてイン
ストール。

・結果:
 今度はapacheがsegmentation faultで起動しなくなりました(もちろん
libphp3.soをhttpd.confから外せば起動します)。

 今度のサーバーの環境は次のようなものです。
------------------------------
ii  libc6-dev       2.2.2-4
ii  gcc             2.95.3-7
ii  binutils        2.11.90.0.5-1
ii  apache-dev      1.3.9-13.2
------------------------------

・ログ
 libphp3.soを読み込ませる状態でstarce apacheしたところ、次のようなログが取れました(最後のほうを抜粋)。

----------------------------------------
open("/lib/libnss_dns.so.2", O_RDONLY)  = 4
read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260\20"..., 1024) = 1024
fstat(4, {st_mode=S_IFREG|0644, st_size=13016, ...}) = 0
brk(0x80d5000)                          = 0x80d5000
old_mmap(NULL, 15868, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0x40527000
mprotect(0x4052a000, 3580, PROT_NONE)   = 0
old_mmap(0x4052a000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0x2000) = 0x4052a000
close(4)                                = 0
munmap(0x4035c000, 28615)               = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4
connect(4, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}}, 16) = 0
send(4, "\275\263\1\0\0\1\0\0\0\0\0\0\3www\4text\2co\2jp\0\0\1\0"..., 32, 0) = 32
gettimeofday({988354012, 201979}, NULL) = 0
rt_sigprocmask(SIG_SETMASK, NULL, [], 8) = 0
select(5, [4], NULL, NULL, {5, 0})      = 1 (in [4], left {5, 0})
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
recvfrom(4, "\275\263\205\200\0\1\0\2\0\2\0\2\3www\4text\2co\2jp\0\0"..., 1024, 0, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}}, [16]) = 143
close(4)                                = 0
close(889192450)                        = -1 EBADF (Bad file descriptor)
close(16777343)                         = -1 EBADF (Bad file descriptor)
close(0)                                = 0
close(0)                                = -1 EBADF (Bad file descriptor)
close(889192450)                        = -1 EBADF (Bad file descriptor)
close(343976128)                        = -1 EBADF (Bad file descriptor)
close(0)                                = -1 EBADF (Bad file descriptor)
                      (以下、延々と続く)
close(1179403647)                       = -1 EBADF (Bad file descriptor)
--- SIGSEGV (Segmentation fault) ---
+++ killed by SIGSEGV +++
----------------------------------------

 ちなみにlibphp3.soのopen,read,closeはうまく行っているようです。


(4)PHP3-i18nのmake,make installのテスト

 パッケージ化の過程に問題があるかもしれないと思い、PHP3-3.0.18-i18n-ja2を、
tar-ballからmake,make installしてみました。
 configureのオプションをいろいろ変えて試しましたが、やはりsegmentation 
faultになります。


(5)PHP3-3.0.18(potatoパッケージ)のインストールテスト

 今度はpotatoのソースパッケージ(非i18n)を入れてみました。

・debパッケージからバイナリインストール     → 問題なく起動
・ソースパッケージをdebuildしてインストール → segfault

 この段階で、うーむ、とうなってしまいました。要するにサーバー側のmake
作業自体に問題があるようなのです。

 ここでapxsを検証するために、以前lib_davをパッケージ化したものをバイ
ナリ構築し直し、インストールしてみましたが、これはOKでした。つまりapxs
はおかしくないようです。そして、make作業自体が、必ずしも失敗するわけで
はないこともわかりました。
 どうやらliphp3.soを作る過程で関わってくるライブラリに特有の問題のよ
うです。

 とりあえずヘッダファイルのバージョン不整合を疑い、主なxxx-devパッケー
ジなどをアップグレードしました。全部はメモっていませんが、

 zlib1g、libgdbm1、libdbmg1、libdb2

あたりです。

 そして、相変わらず segmentation fault を食らっています :-)

-----

 いろいろと頑張ってみましたが、私の貧弱な知識では、これ以上打つ手がな
さそうです。

 ヒントだけでも結構です。何か助言がありましたらお願いいたします m(.'.)m

---*---*---*---*---*---*---
テクスト 小寺
E-mail: odera _at_ text.co.jp
  or  : odera _at_ homemail.com
---*---*---*---*---*---*---

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」