SUZU841.COM

CentOS6.5 アップデート後に VMwarePlayer 上の windoswXP を動かすと、ホスト OS で kernel panic が発生する件

暫定対応

2013. 12. 07.

1. 動作環境
CPU: AMD Phenom(tm) II X6 1065T Processor
memory: 8GB
Disk: SATA 500GB + USB2.0 2TB

CentOS6.5 ( update CentOS6.0 → CentOS6.4 → CentOS6.5 )
kernel-2.6.32-431.el6.x86_64
vmware-player-6.0.1 build-1379776

2. kernel panic 発生の状況
USBディスク側に windowsXP sp3 バーチャルホストをインストールし、問題なく動作していた環境であったが、 CentOS6.4 → CentOS6.5 へアップデートしたところ、XP 起動直後に以下のような kernel panic が発生するようになった。

 

◇ vmcore-dmesg.txt

 

3. 原因について
以下 URL を参照。
(symptom が同一であることから、同件と推定してよさそう。)

http://weedily4.rssing.com/chan-3946349/all_p1566.html

同 URL の内容および症状から、vmware-player 側で供給されている vsock モジュールおよび 6.5 kernelとの間の問題のようである。
kernel page request のメモリ番地が不正であることから bug() へ飛び panic しているものと思われる。以下に lsmod の結果を示す。

◇ lsmod

 

◇ modinfo

 

 

 

4. 対応
stack trace からは connect() → VSockVmciAllowDgram() → release_sock() の流れで panic が発生しているが、 VSockVmciAllowDgram() は vmware-tools に含まれるとのこと。 では、kernel 側が悪いのか、vsock 側が悪いのかという疑問が沸いてくるが、現状ではどちらのせいか判断するのは少々難しい。
常識的には vsock が kernel に不正な値を渡したんだろ、ということになるだろうが、6.4 では問題が発生しなかったことを考えると、一概に vsock のせい、とは言えないような気がする。
また、我が家では windows8.1 では問題なく、XP でだけ panic が発生するという奇妙な特異性があった。
先に示した URL のユーザも win7 とのことである。とすると、windows8.1 を除くホスト OS 側の動作も絡んでいるようで、さらに事態は怪しさを帯びる…。

で、結局どうしたかと言えば、kernel を 6.4 の 2.6.32-358.23.2.el6.x86_64 まで下げることで対応した。
このバージョンでは問題が発生していなかったからだが、ホスト OS 側の kernel panic を誘発しているのなら、 kernel バージョンを下げることによって対処できるかも、と思ったからである。

◇ 修正後の grub.conf

結果は吉。
もう少し様子を見る必要があると思うが、これまでのところ、事象は再発していない。
同様の事象に悩まされている方があれば、/boot/grub/grub.conf の default=0 を編集し、default=1 なりして、 問題を回避できる kernel バージョンを探してみるのも手ではないかと思う。

以上。

 

 

上記の kernel を下げることを実行したならば、 忘れずに kernel の バージョンアップをしないよう /etc/yum.conf に exclude=kernel* と追記しておく。