gdbのgenerate-core-file (失敗)
物理メモリ1GB+デバイススワップ領域2GBのLinuxの上に行儀が悪いXクライアントがいて、Xサーバのサイズが1.5GBのブタになっている状況。以下がそのときのtopの出力結果。これはかなり悲惨。
10:00am up 14:05, 1 user, load average: 0.50, 0.46, 0.29 78 processes: 77 sleeping, 1 running, 0 zombie, 0 stopped CPU states: 3.6% user, 3.1% system, 0.0% nice, 8.4% idle Mem: 1031504K av, 912668K used, 118836K free, 0K shrd, 3256K buff Swap: 2040244K av, 742984K used, 1297260K free 26612K cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 911 root 17 0 1542M 823M 47512 S 15.2 81.7 32:15 X 19126 xdigit 16 0 1057 1056 832 R 2.8 0.1 0:00 top 1 root 15 0 96 72 52 S 0.0 0.0 0:04 init . . .
後でXサーバの内部状態を解析できるようにcoreを採取したかった。素直に kill -ABRT とせずに、敢えてgdbの generate-core-file コマンドを選択してしまった。結果は、いつまでたってもコマンドが完了しない(>_<)。所々にreadできないメモリ領域があるというワーニングメッセージが出てるのも気になる。状態を確認すると、若干余裕があったはずのデバイススワップまでも完全に使い切ってしまい、スラッシングに陥っている。ありゃりゃ。失敗したなー。やむなくgdbを kill -KILL。Xサーバはgdbから正常にデタッチされていないため停止状態。簡単に再開させる方法が思いつかなかったので、仕方なくXサーバもkill。詳細は分からずじまい。再現は簡単にできるだろうから大きな支障はないんだけど、ちょっと悔しいぞ。