Transcript
Page 1: Debug Hacks Conference 2009

目次

• RPM コマンドによるデバッグ• スクリプトのデバッグ• アンケートで DebugHacks の内容以外を聞きたい

との要望が多くあった

• 裏話

Page 2: Debug Hacks Conference 2009

RPM コマンドでデバッグ [1/3]

• 問題• /var/spool/clientmqueue/ にファイルがど

んどん溜まる• 解決• ファイルが作成されないようにしたい

• 疑問• ディレクトリ、ファイルがいつ、だれによっ

て作成されているかわからない

Page 3: Debug Hacks Conference 2009

RPM コマンドでデバッグ [2/3]

• こういうときには rpm コマンドを使う# rpm –qf /var/spool/clientmqueue/sendmail-8.13.8-2.2AX

• メールに関するファイルではないかと検討がつく

• /var/spool/clientmqueue/ 配下のファイルを見る

Page 4: Debug Hacks Conference 2009

/var/spool/clientmqueue/qfn0KJ2wo4005598・・・・・・MDeferred: Connection refused by [127.0.0.1]Fbs$_root@localhost${daemon_flags}c uSrootAroot@NX_1-SRVB1-0MDeferred: Connection refused by [127.0.0.1]C:rootrRFC822; root@NX_1-SRVB1-0RPFD:rootH?P?Return-Path: <<81>g>H??Received: (from root@localhost) by NX_1-SRVB1-0 (8.13.8/8.13.8/Submit) id n0KJ23Fk005118; Wed, 21 Jan 2009 04:02:03 +0900H?D?Date: Wed, 21 Jan 2009 04:02:03 +0900H?x?Full-Name: rootH?M?Message-Id: <200901201902.n0KJ23Fk005118@NX_1-SRVB1-0>H??To: rootH??From: logwatchH??Subject: Logwatch for nx_1-srvb1-0 (Linux)H??MIME-Version: 1.0H??Content-Transfer-Encoding: 7bitH??Content-Type: text/plain; charset="iso-8859-1”

logwatch

Page 5: Debug Hacks Conference 2009

RPM コマンドでデバッグ [3/3]

• 今度は rpm –ql # rpm -ql logwatch | grep etc/etc/cron.daily/0logwatch/etc/logwatch/etc/logwatch/conf/etc/logwatch/conf/ignore.conf/etc/logwatch/conf/logfiles/etc/logwatch/conf/logwatch.conf

/etc/logwatch/conf/override.conf

/etc/logwatch/conf/services/etc/logwatch/scripts

注目cronに関するファイル(daily)

Page 6: Debug Hacks Conference 2009

/var/spool/clientmqueue/ ファイルの日付# ls –lrt /var/log/clientmqueue・・・・・・

-rw-rw---- 1 smmsp smmsp 173 2009-02-09 04:02 dfn18J27Qj007008

-rw-rw---- 1 smmsp smmsp 2965 2009-02-10 04:02 dfn19J226V019060

-rw-rw---- 1 smmsp smmsp 690 2009-02-10 04:02 qfn19J226V019060

-rw-rw---- 1 smmsp smmsp 173 2009-02-10 04:02 dfn19J26Pc019414

-rw-rw---- 1 smmsp smmsp 890 2009-02-10 04:02 qfn19J26Pc019414

-rw-rw---- 1 smmsp smmsp 691 2009-02-11 04:02 qfn1AJ22iX015274

-rw-rw---- 1 smmsp smmsp 4521 2009-02-11 04:02 dfn1AJ22iX015274

-rw-rw---- 1 smmsp smmsp 173 2009-02-11 04:02 dfn1AJ2aNK017037

-rw-rw---- 1 smmsp smmsp 890 2009-02-11 04:02 qfn1AJ2aNK017037

-rw-rw---- 1 smmsp smmsp 690 2009-02-12 04:02 qfn1BJ22KW031220

-rw-rw---- 1 smmsp smmsp 2296 2009-02-12 04:02 dfn1BJ22KW031220

-rw-rw---- 1 smmsp smmsp 890 2009-02-12 04:02 qfn1BJ26cY031574

-rw-rw---- 1 smmsp smmsp 173 2009-02-12 04:02 dfn1BJ26cY031574

Page 7: Debug Hacks Conference 2009

crontab を見てみる# vi /etc/crontabSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/

# run-parts01 * * * * root run-parts /etc/cron.hourly02 4 * * * root run-parts /etc/cron.daily22 4 * * 0 root run-parts /etc/cron.weekly42 4 1 * * root run-parts /etc/cron.monthly

root宛にメールしているの修正

Page 8: Debug Hacks Conference 2009

ファイルを調べるコマンド

straceコマンドが便利

• ファイルを調べるには rpmコマンドが役立つ

• どのファイルを読み込んでいるかわからない( 設定ファイルなど )

Page 9: Debug Hacks Conference 2009

スクリプトのデバッグ

• bashであれば– x オプションが便利

# cat test.sh #!/bin/bash –xecho testexit# ./test.sh + echo testtest+ exit

Page 10: Debug Hacks Conference 2009

裏話 [1/2]

• HACK#18 SysRq キーによるデバッグ方法• LKML にパッチ投稿• sysrq キーのマスクが設定されていない

• HACK#32 アプリケーションのストール(無限ループ編) • カーネルがストールするはずが、 tcpdump がス

トールしたので、急遽 tcpdump のストールを解析

• HACK#34 カーネルパニック(リスト破壊編) • kernel/posix-timers.c の clock_was_set() で発生

するバグを元に作成• 小川さんと解析していたが、 clock_was_set() がス

トックカーネルから無くなったため、本のネタとしては使用しないことに

Page 11: Debug Hacks Conference 2009
Page 12: Debug Hacks Conference 2009

アンケート結果

順位 票数 HACK タイトル 著者

1 13 #30 malloc() や free() で障害が発生 島本

2 10 #27#42

バックトレースが正しく表示されない CPU 負荷が高くなる不具合

島本大岩

3 9 #28 配列の不正アクセスによるメモリ内容の破壊 大和

4 8 526293141

デバッガ( GDB )の基本的な使い方(その 1 ) SIGSEGV でアプリケーションが異常終了した ウォッチポイントを活用した不正メモリアクセスの検知アプリケーションのストール(デッドロック編) 動作がスローダウンする不具合

吉岡

大和

大和

5 7 32 アプリケーションのストール(無限ループ編) 大岩

6 6 6746

デバッガ( GDB )の基本的な使い方(その 2 )7. デバッガ( GDB )の基本的な使い方(その3 )Valgrind の使い方(実践編)

吉岡吉岡安部

マジでデバッグをやって死にそうな位困った事ってなに?


Top Related