LinuxCon/How to Extract a Process Coredump Image From Crashdump

How to Extract a Process Coredump Image From Crashdump
Seigo Iguchi, NEC

背景

2003年からテレコム向けにLinuxをサポート
2.6.1xベースのCGL(x86-64

2つの課題

(1)OS,HW
 →Oops panic, Machine check error・・・

(2)ユーザーランドの問題
 sysrq crushdump
 /proc/sys/kernel/sysrqがシステムのリソース上限に達したときに呼ばれるときなど。


 →これらの問題が起こったときに、顧客に何故起こったのかを説明しなければならない。
  ここでは特に、ユーザーランドプロセスのvmcoreを説明する。

telnetで見れない問題

 (1)ディスクがいっぱいになってしまったとき
 (2)cronプロセスが増えすぎたとき
    syslogdにメッセージがいきすぎてさばききれない、
    cronプロセスが待ち状態になってしまう。
     →futexはOK。mutexがスタックを持っている。

・トレースのとき、ctime()とlocaltime()はシグナルセーフじゃないのに注意。(POSIX

・coredumpをもらって、gdbで解析すればよい。


2.6.1x+crah-3

  • IBMの「lcrash」パッチを適応

crash-3

ELFを理解して、crash拡張のAPIを理解、coredumpの解析を行う。

linux-2.6.1xのELF coredump
elfdump main: fs/binfmt_elf.c:elf_core_dump()

問題

すべてのスレッド、メモリのデータを取れるわけではない。
shmemのデータは取れない。
dump()を変えるのも手か。