LoginSignup
1
2

More than 1 year has passed since last update.

vmcore を読んでみる(2)

Last updated at Posted at 2019-10-05

前回のつづきです。
https://qiita.com/intrajp/items/d31b4a86b50fd65f0995
手っ取り早く、カーネルのどこで引っかっかっているかを検出します。

set は、crash した時に実行していたプロセスそのものを表示します。
実行してみます。

crash> set
    PID: <数値>
COMMAND: "<実行していたコマンドが表示される>"
   TASK: <アドレスが表示される>  [THREAD_INFO: <アドレスが表示される>]
    CPU: 1
  STATE: TASK_RUNNING (PANIC)

ここまでで、以下がわかりました。

実行していたコマンドとそのプロセスおよびCPU

では、このプロセス確認します。
crash>ps

パニック時には、CPU0 と CPU1 にて xxxxxxxx コマンドが実行されていました。
理由:アクティブなタスクが行頭の > となるため。

   PID    PPID  CPU       TASK        ST  %MEM     VSZ    RSS  COMM
> <数値>      1   0  <アドレスが表示される>  RU   <数値>  <数値>  <数値>  <コマンドが表示される>
  <数値>      1   0  <アドレスが表示される>  RU   <数値>  <数値>  <数値>  <コマンドが表示される>
  <数値>      1   0  <アドレスが表示される>  IN   <数値>  <数値>  <数値>  <コマンドが表示される>
> <数値>      1   1  <アドレスが表示される>  RU   <数値>  <数値>  <数値>  <コマンドが表示される>

ページを繰っていきます

crash>log
G を押下して、最終行に飛びます。
あるいは、set scroll off とすると、最終行まで一気に表示します。

...(snip)...
[経過時間] Call Trace:
[経過時間]  [<アドレスが表示される>] xxxx+0x../0x..
[経過時間]  [<アドレスが表示される>] xxx+0x.../0x...
[経過時間]  [<アドレスが表示される>] xxx+0x../0x..
[経過時間]  [<アドレスが表示される>] xxx+0x../0x...
[経過時間]  [<アドレスが表示される>] xxx+0x../0x..
[経過時間]  [<アドレスが表示される>] xxx+0x../0x..
[経過時間] Code: xxxxxxxx
[経過時間] RIP  [<アドレスが表示される>] <コマンド>+16進数
[経過時間]  RSP <アドレスが表示される>

ここで確認できたメモリアドレスを、メモリマップで確認すると、どのコードの何行目かがわかります。

crash> kmem <メモリアドレス>
<メモリアドレス> (t) <関数名>+<数値> /usr/src/debug/<カーネルバージョン>/linux-xxx/xxx/xxx/xxx.c: 行数

      PAGE       PHYSICAL      MAPPING       INDEX CNT FLAGS
<仮想アドレス>  <物理青レス>           0        0  1 xxxx reserved

つづきです。
https://qiita.com/intrajp/items/92f78772ba0bf8b68e12

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2