netstatコマンドでセグメンテーション違反

このQ&Aのポイント
  • netstatコマンドを実行すると「セグメンテーション違反です」とだけが結果として表示されてしまい、必要な情報が何も出力されません。
  • gdbでcore dumpを取ってみました。出てきた情報は、「Program terminated with signal 11, Segmentation fault.」です。
  • 原因・解決方法をご存知の方がいらっしゃいましたらご教授ください。
回答を見る
  • ベストアンサー

netstatコマンドでセグメンテーション違反

Linux初心者です。 くだらない質問かどうかさえもわかりませんが、困っています。 netstatコマンドを実行すると「セグメンテーション違反です」とだけが結果として表示されてしまい、 必要な情報が何も出力されません。 ---こんな感じ----------------------- [root@centos ~]# netstat セグメンテーション違反です ------------------------------------ とりあえず少しくらいは頑張ろうと、gdbでcore dumpを取ってみました。 (これが正しい原因調査方法かはわかっていません。) そして出てきた情報がこんなのです。 ---こんな感じ----------------------- [root@centos ~]# gdb netstat -c core.3166 GNU gdb Red Hat Linux (6.5-25.el5rh) Copyright (C) 2006 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux-gnu"... (no debugging symbols found) Using host libthread_db library "/lib/libthread_db.so.1". warning: Can't read pathname for load map: 入力/出力エラーです. Reading symbols from /lib/libc.so.6...(no debugging symbols found)...done. Loaded symbols for /lib/libc.so.6 Reading symbols from /lib/ld-linux.so.2...(no debugging symbols found)...done. Loaded symbols for /lib/ld-linux.so.2 (no debugging symbols found) Core was generated by `netstat'. Program terminated with signal 11, Segmentation fault. #0 0x00923ac0 in strcpy () from /lib/libc.so.6 (gdb) bt #0 0x00923ac0 in strcpy () from /lib/libc.so.6 #1 0x08051274 in strcpy () #2 0x081707a8 in ?? () #3 0x00000000 in ?? () ------------------------------------ 意味も分からず悪戦苦闘した結果、コイツ(/lib/libc.so.6)が悪さをしているのか?と 思ってきましたが、そもそも何者か?などがわからず、 viで開いてみてもなんだかバイナリファイルでギブアップでした。 どなたか、原因・解決方法をご存知の方がいらっしゃいましたらご教授ください。 ディストリビューションは CentOS release 5 (Final) ちなみに、そもそもの目的はipablesの設定をしようと思って、 内部ネットワークアドレス取得を行おうとしたところで思った出力が できなかったのが事の発端です。。。 ---iptabels----------------------- [root@centos ~]# vi iptables.sh #!/bin/bash #---------------------------------------# # 設定開始 # #---------------------------------------# # インタフェース名定義 LAN=eth0 #---------------------------------------# # 設定終了 # #---------------------------------------# # 内部ネットワークのネットマスク取得 LOCALNET_MASK=`ifconfig $LAN|sed -e 's/^.*Mask:\([^ ]*\)$/\1/p' -e d` # 内部ネットワークアドレス取得 LOCALNET_ADDR=`netstat -rn|grep $LAN|grep $LOCALNET_MASK|cut -f1 -d' '` ★★★ここ★★★ LOCALNET=$LOCALNET_ADDR/$LOCALNET_MASK

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

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

netstatでセグメンテーション違反とか… 普通に使っていれば出るハズないんですが…。 gdbの状態見ると… >#0 0x00923ac0 in strcpy () from /lib/libc.so.6 strcpy()で……ですか。 ヘンなアドレス渡せば、そういうエラーが出る可能性はあるでしょう。 が…オプションなしでnetstat起動しただけで出る。 というのはいくらなんでもおかしいような。 既に侵入されてrootkitでも仕込まれているんでしょうかね?? rpm -V glibc とかしたらどうなります? >LOCALNET_ADDR=`netstat -rn|grep $LAN|grep $LOCALNET_MASK|cut -f1 -d' '` netstat -rnの代わりにrouteコマンドでも行けそうですけどね。 というか…ネットワークのアドレスとかそうそう頻繁に変わる訳でもないのですから、スクリプトではなく直書きでも良さそうですが。 # どっかのサイトの設定用スクリプトなんでしょうけど。 # って、 http://centossrv.com/iptables.shtml ですか…… http://evilblade.blog24.fc2.com/blog-entry-792.html こちらの方はコメント化して直書きしてなすね。

YOKO-45
質問者

お礼

Wr5様 コメントありがとうございます。 早速、「rpm -V glibc」を叩いてみました。 結果としては、何も表示されずに終了。 --------------------------------- [root@centos ~]# rpm -V glibc [root@centos ~]# --------------------------------- 言われてみれば確かにアドレス直書きの方がシンプルで良さそうです。 (サイトは、そこでした。) ただ、何故できないのかを原因つきとめてきちんとしとかないと…と思いまして。 ご記載頂いている通り何かのウィルスに汚染されていたらそれも問題なのでご質問させていただきました。

その他の回答 (1)

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.2

>早速、「rpm -V glibc」を叩いてみました。 >結果としては、何も表示されずに終了。 rpmパッケージのデータベースにあるものとの差違はない。 ということになります。 # データベースまでいぢられていたらどうにもなりませんが。 which netstat で表示されるのは正しい位置のモノ…でしょうか? # 手元のCentOS5.8では/bin/netstatでしたが。 これ以上は…ちょっと判らないですね。 # 侵入されたならきっちり調べるべき…ではありますが……。

YOKO-45
質問者

お礼

Wr5様 レスが遅くなり申し訳ございません。 which netstatで結果は「/bin/netstat」でした。 難しそうな問題のようなので、アドレスの直書きにするか? はたまた、ウィルスが怖い場合は一旦Linuxの再インストールでもしてみようかと思います。 お忙しい中ご助言を頂きありがとうございました。

関連するQ&A

  • 特定のディレクトリでコマンドが実行出来ない。

    特定のディレクトリでコマンドが実行出来ない。 OSはRed Hat Enterprise Linux Server release 5.4です。 rootユーザで特定のディレクトリでlsコマンドを実行すると エラーが発生します。 カレントディレクトリが該当のディレクトリでない場合には 問題ありません。 また、そのディレクトリではwhoやdfコマンド等でも エラーとなってしまいます。 このような現象は、どのような原因が考えられるでしょうか? 以下は、全てrootユーザでの実行結果です。 # pwd /opt/oracle/app/product/11.2.0/dbhome_1/lib # ll stubs 合計 6404 -rwxr-xr-x 1 oracle oinstall 12121 2月 3 2009 ld-linux-2.3.4-stub.so -rwxr-xr-x 1 oracle oinstall 12121 2月 3 2009 ld-linux-x86-64.so.2 -rwxr-xr-x 1 oracle oinstall 4911 2月 3 2009 libBrokenLocale-2.3.4-stub.so -rwxr-xr-x 1 oracle oinstall 4911 2月 3 2009 libBrokenLocale.so -rwxr-xr-x 1 oracle oinstall 4911 2月 3 2009 libBrokenLocale.so.1  ・  ・  ・ # cd stubs # pwd /opt/oracle/app/product/11.2.0/dbhome_1/lib/stubs # ls ls: libc.so.6: version `GLIBC_2.4' not found (required by ls) ls: libc.so.6: version `GLIBC_2.4' not found (required by /lib64/libacl.so.1) ls: libc.so.6: version `GLIBC_2.4' not found (required by /lib64/libselinux.so.1) ls: libc.so.6: version `GLIBC_2.4' not found (required by /lib64/libattr.so.1) ls: libc.so.6: version `GLIBC_2.4' not found (required by /lib64/libsepol.so.1) # who who: libc.so.6: version `GLIBC_2.4' not found (required by who) # df df: libc.so.6: version `GLIBC_2.4' not found (required by df) 宜しくお願いいたします。

  • centosのglibcのアップグレード

    CentOS 6.5にてプログラムを実行しようとしたら /lib/libc.so.6: version `GLIBC_2.15' not found という警告表示されて実行できないので、glibcのバージョンを確認したいところ yum info glibc version 2.12でした。 glibcを2.15までアップグレードするにはどうすればよろしいでしょうか。 多少のLinuxの操作は分かりますが、詳しくないため教えていただけないでしょうか。

  • 埋め込み型 EXEC FETCHで異常終了する

    記述子を使ってフェッチ実行するとプロセスが強制終了(abort)します。 EXEC SQL FETCH FORWARD 1 FROM (オープンしたカーソル) INTO DESCRIPTOR 記述子; 該当するデータがないときはデータなしが返りますが、該当データがあった時にこの現象が起こります。該当データがあるのでバッファを確保して、そこに該当データが格納され記述子に設定されると思っています。 バッファの確保に失敗しているのではないかと思うのですが、pg_logにも出力されないためハッキリと原因がわかりません。インストールが失敗しているのかなとも思いましたが、updateやinsertは問題なく動作します。 --- gdb 抜粋 --- EXEC SQL FETCH FORWARD :cont FROM C INTO DESCRIPTOR desc_buff; (gdb) Program received signal SIGABRT, Aborted. 0x0000003bf92325e5 in raise () from /lib64/libc.so.6 (gdb) bt #0 0x0000003bf92325e5 in raise () from /lib64/libc.so.6 #1 0x0000003bf9233dc5 in abort () from /lib64/libc.so.6 #2 0x00007ffff69e89ce in ?? () from /usr/lib64/libecpg.so.6 #3 0x00007ffff69ea1b4 in ?? () from /usr/lib64/libecpg.so.6 #4 0x00007ffff69e6d57 in ?? () from /usr/lib64/libecpg.so.6 #5 0x00007ffff69e8746 in ECPGdo () from /usr/lib64/libecpg.so.6 記述子を使用するとき設定ファイルの何かの値を変えなければいけない等、何かお気づきのことなどありましたら、教えてください。 よろしくお願いいたします。 OS:CentOS6.8 Version:PostgreSQL9.5.6 言語:C

  • lddの見方について教えてください。

    必要なライブラリを表示しているのは分かったのですが=>の右側以上のバージョンのライブラリが必要という意味でしょうか?ということは=>となっているのは 存在していてOKということでしょうか? またnot foundとなったライブラリは一般的にどこでみつけて、どこに置けばいいでしょうか? [root@localhost DiCE]# ldd dice /lib/libNoVersion.so.1 (0x00b37000) libqtintf.so => not found libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x0081b000) libpthread.so.0 => /lib/libpthread.so.0 (0x00a77000) libdl.so.2 => /lib/libdl.so.2 (0x00815000) libc.so.6 => /lib/libc.so.6 (0x00d1c000) /lib/ld-linux.so.2 (0x006ab000)

  • png2jpeg・resize.pl

    png2jpegと、resize.plを使ってサムネイルを作成しようと考えています。 ファイルをアップロードするupload.cgiは作成し、画像をサーバーに転送することはできるのですが、 上の2つのファイルをどのように関連付ければ良いのかがわかりません。 check.cgiを見ると、 PerlMagick NG NetPBM + libjpeg-progs NG cjpeg -> /usr/bin/cjpeg djpeg -> /usr/bin/djpeg pngtopnm -> Not Found giftopnm -> Not Found pnmscale -> Not Found repng2jpeg(i386-linux) dynamic :OK standard:OK static :OK libjpeg -> /usr/lib/libjpeg.so.62 libpng -> /usr/lib/libpng.so.2 libz -> /usr/lib/libz.so.1 libm -> /lib/libm.so.6 libc -> /lib/libc.so.6 ldlinux -> /lib/ld-linux.so.2 ---------------------------------------- ./repng2jpeg Found SIZE : 59556 MD5 : 6f03c0ec0 ./repng2jpeg Permisson:OK ./repng2jpeg Exec:OK ->(repng2jpeg TestMode:OK version 1.0.4) $ldd ./repng2jpeg libpng.so.2 => /usr/lib/libpng.so.2 (0x00a36000) libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x002c2000) libc.so.6 => /lib/tls/libc.so.6 (0x005fe000) libm.so.6 => /lib/tls/libm.so.6 (0x00736000) /lib/ld-linux.so.2 (0x005e4000) ---------------------------------------- と表示され、使用可能な状態ではあると思います。 以上よろしくお願いします。

  • GNU gettext が変なライブラリを参照している

    Solaris 2.7 に GNU gettext 0.14.5 をインストールしようとしています.gmake は通るのですが,出来上がった xgettext や msgfmt などのバイナリを ldd すると, .libs/libgettextsrc-0.14.5.so => .libs/libgettextsrc-0.14.5.so .libs/libgettextlib-0.14.5.so => (file not found) .libs/libintl.so.3.4.3 => (file not found) libiconv.so.2 => /usr/local/lib/libiconv.so.2 libc.so.1 => /usr/lib/libc.so.1 libexpat.so.0 => /usr/local/lib/libexpat.so.0 .libs/libgettextlib-0.14.5.so => (file not found) .libs/libintl.so.3.4.3 => (file not found) libdl.so.1 => /usr/lib/libdl.so.1 /usr/platform/SUNW,Ultra-4/lib/libc_psr.so.1 となり,どうやら一時ディレクトリである .libs 以下のライブラリを参照してしまっているようです.当然,gettext を用いて make した他のプログラムも動かなくなってしまうため,とても困っています. 試しに gettext 0.10.40 という古いものを入れてみたところ,問題は起こりませんでした. libintl.so.1 => /usr/local/lib/libintl.so.1 libiconv.so.2 => /usr/local/lib/libiconv.so.2 libc.so.1 => /usr/lib/libc.so.1 libdl.so.1 => /usr/lib/libdl.so.1 /usr/platform/SUNW,Ultra-4/lib/libc_psr.so.1 回避策等あれば教えていただきたいです. なお,gcc は 2.7.2.3 です.よろしくお願いいたします.

  • GLIBC_2.4 以上がインストールされていない環境で

    GLIBC_2.4 以上がインストールされていない環境で perlで開発中に、libcのバージョンが古いというエラーが出ております。 しかし、事情により、通常のインストールができません。 どうにかして、別サーバから取得したsoファイルなどを使って、GLIBC_2.4以上を読み込ませることはできないでしょうか。 いま、外部サーバから取得したlibc-2.5.soがあります。これをサーバ上にアップロードして、perlから使用できるようにする方法はありますか? あまり詳しくないのですが、Dynaloader などは用途が違うのでしょうか。 すみませんが、宜しくお願い致します。 エラーメッセージ(一部伏字): Can't load '~~~i386-linux-thread-multi/auto/Digest/SHA1/SHA1.so' for module Digest::SHA1: /lib/tls/libc.so.6: version `GLIBC_2.4' not found (required by ~~~~/i386-linux-thread-multi/auto/Digest/SHA1/SHA1.so) at /usr/lib/perl/5.8/DynaLoader.pm line 225. at ~~~~/Digest/HMAC_SHA1.pm line 5

  • rubyでパケットキャプチャ出来るプログラムを実行したところ、以下のよ

    rubyでパケットキャプチャ出来るプログラムを実行したところ、以下のようなエラーメッセージが出力されました。 上位4つのwaraningとno suitable device foundのエラーを回避する策を教えて頂きたいです。 $ ruby packet.rb /usr/local/lib/site_ruby/1.8/i486-linux/pcap.so: warning: do not use Fixnums as Symbols /usr/local/lib/site_ruby/1.8/i486-linux/pcap.so: warning: do not use Fixnums as Symbols /usr/local/lib/site_ruby/1.8/i486-linux/pcap.so: warning: do not use Fixnums as Symbols /usr/local/lib/site_ruby/1.8/pcaplet.rb:41:in `lookupdev': no suitable device found (Pcap::PcapError) from /usr/local/lib/site_ruby/1.8/pcaplet.rb:41:in `initialize' from packet.rb:12:in `new' from packet.rb:12 プログラムは、以下のサイトにあるものを利用しています。 http://d.hatena.ne.jp/tullio/20080217/1203261760 #!/usr/local/bin/ruby require 'pcaplet' include Pcap class Time # tcpdump style format def to_s sprintf "%0.2d:%0.2d:%0.2d.%0.6d", hour, min, sec, tv_usec end end pcaplet = Pcaplet.new pcaplet.each_packet { |pkt| print "#{pkt.time} #{pkt}" if pkt.tcp? print " (#{pkt.tcp_data_len})" print " ack #{pkt.tcp_ack}" if pkt.tcp_ack? print " win #{pkt.tcp_win}" end if pkt.ip? print " (DF)" if pkt.ip_df? end print "\n" } pcaplet.close 以上、宜しくお願い致します。

  • reallocでエラー

    reallocを使うとエラーがでます。 簡単なreallocのプログラムでもエラーがでて、realloc自体が使えないような感じです。 どうしたらよいでしょうか? 試したプログラムは #include<stdlib.h> #include<stdio.h> #include<string.h> int main(void){ char *p; p=malloc(17); if(!p){ printf("error\n"); exit(1); } strcpy(p,"これは16文字です"); p=realloc(p,18); if(!p){ printf("error\n"); exit(1); } strcat(p,"."); printf(p); free(p); return 0; } というもので、 *** glibc detected *** ./test: realloc(): invalid next size: 0x09b61008 *** ======= Backtrace: ========= /lib/libc.so.6[0x43ca2f] /lib/libc.so.6(realloc+0xfe)[0x43e68e] /lib/libc.so.6[0x43ea61] /lib/libc.so.6(realloc+0x3c)[0x43e5cc] ./test[0x8048512] /lib/libc.so.6(__libc_start_main+0xe0)[0x3e8f70] ./test[0x80483e1] ======= Memory map: ======== 00235000-0023f000 r-xp 00000000 fd:00 360450 /lib/libgcc_s-4.1.2-20070626.so.1 0023f000-00240000 rwxp 00009000 fd:00 360450 /lib/libgcc_s-4.1.2-20070626.so.1 003d3000-00521000 r-xp 00000000 fd:00 360473 /lib/libc-2.6.so 00521000-00522000 r-xp 0014e000 fd:00 360473 /lib/libc-2.6.so 00522000-00524000 rwxp 0014f000 fd:00 360473 /lib/libc-2.6.so 00524000-00527000 rwxp 00524000 00:00 0 00616000-00631000 r-xp 00000000 fd:00 360466 /lib/ld-2.6.so 00631000-00632000 r-xp 0001a000 fd:00 360466 /lib/ld-2.6.so 00632000-00633000 rwxp 0001b000 fd:00 360466 /lib/ld-2.6.so 006c0000-006c1000 r-xp 006c0000 00:00 0 [vdso] 08048000-08049000 r-xp 00000000 fd:00 3473718 /home/gucchi/test/test 08049000-0804a000 rw-p 00000000 fd:00 3473718 /home/gucchi/test/test 09b61000-09b82000 rw-p 09b61000 00:00 0 b7e00000-b7e21000 rw-p b7e00000 00:00 0 b7e21000-b7f00000 ---p b7e21000 00:00 0 b7fd6000-b7fd8000 rw-p b7fd6000 00:00 0 bfb07000-bfb1c000 rw-p bfb07000 00:00 0 [stack] アボートしました というエラーがでます。 試しに他の環境でコンパイルしたら実行できちゃいました。 glibcに問題があったりするんでしょうか? ご教授ください。

  • Netscapeのアップデートができない

    Linux初心者です。TurboLinux6.0 Workstationを使用し ているのですが、ブラウザのバージョンアップをしよう とNetscape7.1をダウンロードし、インストーラーを走 らせたのですが下記のエラーが出ました。 /lib/libc.so.6:version'GLIBC.2.2.4' not found (requ ired by ./netscape-installer-bin GLIBCのバージョンが関係あるのでしょうか。 また、GLIBCとはなんでしょうか。 初歩的な質問で申し訳ないのですがよろしくお願いいたします。