[Users] Zone から親を殺せる?

Katsunori Fujiwara flying.foozy @ gmail.com
2013年 12月 2日 (月) 23:54:37 JST


藤原です。

2013年12月2日 23:14 master @ zio-matrix.net <master @ zio-matrix.net>:

> Zone 上で Squid をテストしていた時に親が落ちました。
> こういった状況ってあるんですかね?
>
> # Squid は野良です。IPS の奴ではないです。
>
> /lib/64/libpthread.so.1 を使っていて、確かに Kernel は
> 同じですから。
>
> Xxx XX HH:MM:SS global unix: [ID XXXXXX kern.notice]
> Xxx XX HH:MM:SS global ^Mpanic[cpu55]/thread=100102ee2020:
> Xxx XX HH:MM:SS global unix: [ID XXXXXX kern.notice] BAD TRAP: type=34
> rp=2a10daeb4f0 addr=2 mmu_fsr=0
> Xxx XX HH:MM:SS global unix: [ID XXXXXX kern.notice]
> Xxx XX HH:MM:SS global unix: [ID XXXXXX kern.notice] squid:
> Xxx XX HH:MM:SS global unix: [ID XXXXXX kern.notice] alignment error:
> Xxx XX HH:MM:SS global unix: [ID XXXXXX kern.notice] addr=0x2
> Xxx XX HH:MM:SS global unix: [ID XXXXXX kern.notice] pid=XXXX,
> pc=0x11b6034, sp=0x2a10daead91, tstate=0x9980001601, context=0x338f
> Xxx XX HH:MM:SS global unix: [ID XXXXXX kern.notice] g1-g7: 1000, 1, 0,
> 0, 0, 338f, 100102ee2020
> Xxx XX HH:MM:SS global unix: [ID XXXXXX kern.notice]
>
> Zone で動いていた Squid が上手く落ちなかったので、Kill -9 したら ↑
> になりました。
> この後は当然、sync して reboot されました。

addr=0x2 での "alignment error" (type=34) のトラップは、ユーザプロ
グラムなら、まぁ、よくあるバグだと思いますが、上記の延長で親 zone
が落ちたのだとすると:

  1. squid がシステムコールを発行
  2. 何かで引っかかって kernel 内で待ち状態(I/O とか排他?)
  3. 正規のプロセス終了
     → 引っかかりから復帰できず
  4. kill -9 実施
     → スレッドの強制刈り取りの過程で、カーネル内部で alignment error

みたいな手順でしょうね。

書いている途中で来た瀧さんからのメールにもありますが、多分 squid
の問題ではなく、純粋にカーネルのバグな気がします。

吐き出されたダンプで、原因となった処理の呼び出しコンテキストを見れ
ば、多少は原因らしきものが分かるかもしれませんが、最近カーネル
デバッグから遠ざかっているので、mdb の使い方を完全に忘れている…… orz

記憶がフレッシュな方、フォローお願いします(笑)


> Zone でも気軽に Kill するもんじゃないなと。
> zoneadm -z XXXX halt/reboot の方が安全かも。
>
>
> /lib/64/libpthread.so.1 を使う粗悪な PG と、Kill -9 のループだけで
> 再現するかも と思っています。
>
>
> Zone の root も他人には渡したくなくなった今日この頃です。

この辺の「死なば諸共」なところは、軽量仮想化の宿命ですよねぇ……

-- 
----------------------------------------------------------------------
FUJIWARA Katsunori(flying.foozy @ gmail.com)

-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://mx.opensolaris.gr.jp/pipermail/users/attachments/20131202/5010848b/attachment-0001.html>


Users メーリングリストの案内