• ベストアンサー

gdb出力結果について

質問があります。 Solaris10に、ApacheをSSLで起動し、IEで確認すると表示されず応答が 無い状態で、Apacheのエラーログで、child pid XXXX exit signal Segmentation fault (11)が大量に出力されている状態です。 Googleで調べて、とにかくデバックをしてみようと思い gdbコマンドで以下を実行しました。 gdb /usr/local/apache2/bin/httpd GNU gdb 6.8 Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i386-pc-solaris2.10"... (gdb) run -X -f /usr/local/apache2/conf/httpd.conf Starting program: /usr/local/apache2/bin/httpd -X -f /usr/local/apache2/conf/httpd.conf warning: Lowest section in /usr/lib/libpthread.so.1 is .dynamic at 00000074 httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.24.54 for ServerName この状態で、IEで確認すると正常に表示されました。 なぜ、gdbコマンドを実行したら、Apacheが正常にSSLで 起動できるのでしょうか??よくわかりません? ちなみに、(gdb) bt の結果は以下の通りです。 #0 0xd17f9a45 in _portfs () from /usr/lib/libc.so.1 #1 0xd1785c29 in port_getn () from /usr/lib/libc.so.1 #2 0xd19b9716 in call_port_getn (port=19, list=0x81a42f0, max=2, nget=0x80479c8, timeout=134511048) at poll/unix/port.c:103 #3 0xd19b9d3a in apr_pollset_poll (pollset=0x81a42b0, timeout=10000000, num=0xb6, descriptors=0x8047a1c) at poll/unix/port.c:367 #4 0x0808982a in child_main (child_num_arg=182) at prefork.c:596 #5 0x08089abc in make_child (s=0x2, slot=0) at prefork.c:702 #6 0x08089ffa in ap_mpm_run (_pconf=0x8047b60, plog=0x80e9fe8, s=0x8047b68) at prefork.c:978 #7 0x0806acd4 in main (argc=4, argv=0x8047c7c) at main.c:740 勉強不足で申し訳ありませんが、教えていただけたら幸いです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • entree
  • ベストアンサー率55% (405/735)
回答No.3

coreダンプしたのであれば、まずはその状態のバックトレースを 取得すべきだと思います。 第二引数に core ファイルを指定して % gdb /usr/local/apache2/bin/httpd core あとは、btすれば取得できるはずです。

hironona
質問者

お礼

entreeさん、 助言ありがとうございました。 これから、色々勉強してきます。

その他の回答 (2)

noname#227025
noname#227025
回答No.2

直接の回答ではありませんが、デバッガ経由で実行した場合と直接実行した場合で挙動が変化することがあります。 例えば、処理のタイミングに依存するようなバグだと、デバッガ経由と直接起動した場合で処理のタイミングが変化してしまい、挙動が異なってしまう場合があります。 直接起動すると Segmentation fault とのことで、core ファイルができているなら、そちらもデバッガで確認してみてください。

hironona
質問者

お礼

xinuさん、 助言ありがとうございました。 これから、勉強してきます。

noname#198419
noname#198419
回答No.1

デバッカはあるステートの状態を知りたいというときに使用します。 デバッカに読み込ませた段階では、まだプログラムは走っていませんので・・・ 観察するために止まってほしいステートに対応するソースコードの行にブレークポイントを設定してから実行するとか、ソースコード1行ごとにステップで実行させるとか、関数ごとにステップで実行させるとか、アセンブラ1ステートずつ実行させるとか、エラーが出るまで走らせるとか、そういったGDBのコマンドを入力します。 詳細はマニュアル(infoやman、印刷物)などを読んでみてください。

関連するQ&A

  • Apacheを複数のhttpd.confを用いてる場合の再起動

    Apacheを複数のhttpd.confファイルを用いて運用している場合、 個々のhttpd.confを指定してのApache再起動は可能なのでしょうか? 試しに、httpd_1.confとhttpd_2.confを用いて実施してみましたけど、 エラーになってしまいました。 手順を踏まえての詳細を以下に示します。 1./usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd_1.conf コマンドでApacheを起動。 2./usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd_2.conf コマンドでApacheを起動。 3.その後Apacheを停止したらプロセスが残ってしまいました。

  • Vine Linux 2.15 ではApache2を動かせないのでしょうか。

    古い ノートパソコン(PentiumMMX 233Mhz メモリ64MB)にVine Linux 2.15 をインストールして学習しています。 ---------------------------------------- Vineに付属していたApache1.1は、削除方法が今ひとつ良く分からないのでそのままとし、Apache2(httpd-2.0.53.tar.gz)を解凍しインストールして共存させました。 # /usr/local/apache2/bin/apachectl  start   とすると、 (98)アドレスは既に使用中です:・・・・と出るので、Apache1.1の /etc/httpd/conf/httpd.confファイル中のポート番号を80番から8888番 に変更してrebootしました。そして、Apache2.0を起動してlocalhostにアクセスしましたが、「サーバが見付かりません」とのメッセージが出ます。 # /usr/local/apache2/bin/apachectl  stop   としてみると、 httpd (pid 1029?) not running となり、Apache2が動いていない様子です。 ----------------------------------------- # vi /usr/local/apache2/conf/httpd.conf で開いてみると、Listen80 になっています。しかし、 # netstat -ln | grep 80   とすると、 tcp 0 .00.0.0.0:5680 0.0.0.0:* LISTEN となっており、Port80は見当たりません。 # ps aux | grep http   とすると、FedoraCoreの解説本には、 [・・・・・・/usr/local/apache2/bin/httpd -k start] になると書いてありますが、 root 689 0.0 2.0 3712 1296 ? S 14:33 0 /usr/sbin/http となっています。 ------------------------------------ どこが不具合でApache2が動かないのでしょうか。どのように修正すれば良いでしょうか。 Apache2を起動できないのは、そもそも、パソコンの能力が不足しているからでしょうか? Vine Linux 2.15ではApache2を使えないのでしょうか? 何かお気づきの点があれば教えて頂ければ有難いです。よろしくお願いします。

  • Apache起動時にエラー

    質問があります。 ApacheをSSLで起動し、IEからアクセスしようとしたら反応が遅く また、エラーログが大量に出ています。その後、表示ができませんと IEから出ています。 【ログ内容】 [notice] child pid XXXX exit signal Segmentation fault (11) また、Googleで調べたら、勘違いだったら申し訳ありません。 PHPからみで出るとかあったのですが、今回、とくにインストールしていません。知っている方が、いらっしゃったら教えてください。 環境としては、 OS Solaris10 Apache2.2.14とOpenSSL0.9.8lをソースでインストール 特に問題なくインストールできています。 切り分けで、OpenSSLをサンフリーからパッケージでインストールし Apacheをソースで再度、コンパイルしても現象は一緒でした。 OpenSSLの鍵・証明書の作成としては以下を実行 openssl genrsa -des3 -out server.key 1024 openssl rsa -in server.key -out server.key openssl req -new -key server.key -out server.csr -days 365  openssl x509 -in server.csr -out server.pem -req -signkey  server.key -days 365 httpd-ssl.confの設定 SSLCertificateFile /usr/local/apache2/conf/server.crt ↓ SSLCertificateFile /usr/local/apache2/conf/server.pem SSLCertificateKeyFile /usr/local/apache2/conf/server.key ↓(そのまま) SSLCertificateKeyFile /usr/local/apache2/conf/server.key http.confの設定 #Include conf/extra/httpd-ssl.conf ↓ Include conf/extra/httpd-ssl.conf 以上、よろしくお願いします。

  • APACHEで参照するhttpd.confの場所を変更する方法がわかり

    APACHEで参照するhttpd.confの場所を変更する方法がわかりません。 とある理由で以下のような変更をしたいのですが良くわからず行き詰ってしまいました。 /etc/http/httpd.conf⇒/usr/local/apache/httpd.conf としたいのですが、どこでhttpd.confのディレクトリを設定しているかわからず困っています。 参照するhttpd.confの場所を変更する方法を教えてください。

  • apache でバイナリのCGIを動かすには

    apache でバイナリのCGIを動かすにはどうすればよいのでしょうか? (なお、プログラム自体に問題は決してありません。『HTTPD』を使うと問題なく動作します) OS:WIN98 C++バイナリのCGIを呼び出すと下記エラーとなります。 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please .... the error. More ... log. - Apache/1.3.12 Server at http://127.0.0.2/ Port 80 最終アクセスログ 127.0.0.1 - - [12/Mar/2001:23:20:27 +0900] "GET /ab.cgi HTTP/1.1" 500 610 最終エラーログ [Mon Mar 12 23:20:25 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/www.homepage/kokucho81/ab.cgi apache の httpd.conf と httpd.conf.default との比較 ** httpd.conf ServerName http://127.0.0.2/ ** httpd.conf.default #ServerName new.host.name ** httpd.conf DocumentRoot "E:/WWW.HOMEPAGE/KOKUCHO81" ** httpd.conf.default DocumentRoot "C:/Apache/htdocs" ** httpd.conf <Directory /> Options FollowSymLinks ExecCGI AllowOverride None ** httpd.conf.default <Directory /> Options FollowSymLinks AllowOverride None ** httpd.conf <Directory "E:/WWW.HOMEPAGE/KOKUCHO81"> ** httpd.conf.default <Directory "C:/Apache/htdocs"> ** httpd.conf Options Indexes FollowSymLinks ExecCGI ** httpd.conf.default Options Indexes FollowSymLinks MultiViews ** httpd.conf AddHandler cgi-script .cgi ** httpd.conf.default #AddHandler cgi-script .cgi そもそも、設定が足りてないんでしょうか? apacheを良く使う方、よろしくお願いします。m(_ _)m

  • httpd.confの場所とphp.iniの設定

    いつもお世話になっております。 ps auxww で表示したapacheが、/usr/sbin/httpd となっていた場合、 ここで動いているapacheのhttpd.confを正確に導く方法は、どのようになりますでしょうか。 これまで、apacheを調べるときには、 ・rpm -qa | grep apache もしくは、 /usr/local周りを調べていましたが、 apacheが/usr/local/で、複数稼動している場合、 または、/etc/httpd で動いているのか不明な場合、 どのconfをいじるべきかわからないためです。 また、httpd.confの場所がわかった場合、 phpがモジュールとして動いていた場合、 httpd.confに、LoadModule php5_module ・・・ となりますが、そのphp.iniの設定ファイルを導くには、 どのようにしたらよいでしょうか。 これまでは、phpが動くところで、phpinfoして、探していましたが、 それ以外に、いくつか方法を教えていただけると助かります。 最後に、php.iniを編集した後、正しくphp.iniが設定されているか(文法間違いがないか) どうかを確認するには、どうしたらよいでしょうか。 apacheでいう configtestみたいなものはありますでしょうか。 以上、たくさんで申し訳ございませんが、 何卒よろしくお願い致します。

  • cygwin でstackdump

    cygwinでstackdumpを吐き出します。(これはcoreファイルですが)これ↓からエラーの場所を特定できるでしょうか? よろしくお願いいたします。 $ gdb -c makeConnect.exe.core GNU gdb (GDB) 7.5.50.20120815-cvs (cygwin-special) Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-cygwin". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. [New Thread 0x1] [New process 1] [New process 1] #0 0x00401f55 in ?? () (gdb) where #0 0x00401f55 in ?? () #1 0x20000008 in ?? () #2 0x00401b46 in ?? () #3 0x0022aa40 in ?? () #4 0x00402a12 in ?? () #5 0x0022aa40 in ?? () #6 0x61007128 in ?? () #7 0x00000001 in ?? () #8 0x0022acc0 in ?? () #9 0x610050dd in ?? ()

  • activeperl5.6が起動できない

    activeperl5.6が動きません。 activeperlをインストールして、apacheのhttpd.confの中身を本を参考に編集しました。 sampleのhello.plというファイルを自分の環境ではc:\www\cgi-binというフォルダーの中にいれ、 ScriptAlias /cgi-bin/ "C:/www/cgi-bin" <Directory "C:/www/cgi-bin"> AllowOverride None Options None AddHandler cgi-script .cgi .pl でcgiの実行を許可して AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .pl で拡張子とperlを関連付けています。 browserからたとえばhttp://localhost/hello.plを入力すると 実行が許可されていないとブラウザーで表示されます。 Forbidden You don't have permission to access /test.pl on this server. Apache/1.3.39 Server at localhost Port 80 アパッチのエラーログを見ると、 [error] [client 127.0.0.1] couldn't spawn child process: c:/

    • ベストアンサー
    • CGI
  • PHPの設定ができません。

    PHP初心者です。 ApacheとPHPの連携がうまくいきません。 環境は、OSがWindowsXP、Apache2.2.21、PHP5.2.17です。 エラーの内容は、 httpd: Syntax error on line 130 of C:/Apache2/conf/httpd.conf: Cannot load C:/ph p/php5apache2_2.dill into server: \x8ew\x92\xe8 ... httpd.confの設定は 130:LoadModule php5_module "C:/php/php5apache2_2.dill" 131:PHPiniDir "C:/php" ディレクトリに間違いはありません。php5apache2_2.dill も存在しています。 どうしたらいいのでしょうか?

    • ベストアンサー
    • PHP
  • Apacheのバージョンアップでエラー

    既存Apache2.2.15から2.2.22へマイナーバージョンアップをやってみたのですが、 途中でエラーが表示されてしまいました。 すみません。エラーの理由が分かれば教えていただけないでしょうか。 OSはCentOS6です。 #cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bk(バックアップ) #/usr/bin/apachectl stop #tar zxvf ./httpd-2.2.22.tar.gz (ダウンロードしたものを展開) #cd httpd-2.2.22 #./configure --prefix=/etc/httpd #./configureまで来て、以下のエラーが表示されました。 又、makeをしようとしても当然configureの設定が終了していないので エラーになっていると思われます。 checking for chosen layout... Apache checking for working mkdir -p... yes checking build system type... i686-pc-linux-gnu checking host system type... i686-pc-linux-gnu checking target system type... i686-pc-linux-gnu Configuring Apache Portable Runtime library ... checking for APR... reconfig configuring package in srclib/apr now checking build system type... i686-pc-linux-gnu checking host system type... i686-pc-linux-gnu checking target system type... i686-pc-linux-gnu Configuring APR library Platform: i686-pc-linux-gnu checking for working mkdir -p... yes APR Version: 1.4.5 checking for chosen layout... apr checking for gcc... no checking for cc... no checking for cl.exe... no configure: error: in `/httpd-2.2.22/srclib/apr': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details. configure failed for srclib/apr [root@web01 httpd-2.2.22]# make make: *** ターゲットが指定されておらず, makefile も見つかりません. 中止. あともう1点教えていただきたいです。 アップグレードが途中で失敗している状態なのですが、configureまでであれば、既存のApacheには 影響していないでしょうか?