Mona/0.4.0/MapErrorバグ の変更点



 #setlinebreak(on)
 #topicpath
 *MapErrorバグ [#mdd27062]
 ** 現象 [#vd93f221]
 たまに Map Error が出る。
 
 ** 調査 [#cf954656]
 FileServer の MessageList を peek 時に logprintf してみると、あるタイミングを境にメッセージが意図せず増えたり書き換わったりしている。
 このため誤った MSG_RESULT_OK を受信してしまい、共有メモリをまだ使っているのに unmap している。
 
 ** 原因 [#gf9f38fd]
 MessageInfo* Messenger::allocateMessageInfo のリングバッファが1周して上書きされていた。
 
 ** どうやったらこのバグをすぐに発見できたか? [#x2068cb8]
 使用中に1周したらせめて assert で死ぬべき。
 
 ** どうやったらこのバグを防ぐ事が出来たか? [#zf894005]
 Message があふれるテストを書くべきだった。
 
 ** 今後の対応 [#c4281afa]
 - MessageInfo サイズ、想定プロセス数などを考慮して、各プロセス毎に MessageInfo 数の上限を決めるなどの実装方針を固める
 -- 想定プロセス数がプロセスあたりの上限いっぱいに使った場合。MessageInfo(156byte) * MAX_MESSAGES(1024) * 想定プロセス数(200) = 30MB のカーネルメモリを使用する。
 -- allocate は Kernel の new operator で行う
 -- 専用のブランチ。実装完了したら write-bug, master へマージ。
 - あるプロセスに大量のメッセージを送りつけてエラーが返るようなテストを書く。
 - 実装する
 - このバグが再現しない事を確認する
 - 戻り値を必ずチェックするようにする
 
 // &pageのお尻に ; をつけるとページ名に展開されます。
 // ↓適宜コメントアウトして使いましょう
 //**経緯
 //**目的
 //**概要
 //**アクション
 //**未解決な問題
 //**関連ページ
 //#ls2
 
 *コメント [#t657b499]
 #pcomment(,1000,below,reply)

リロード   新規 編集 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.004 sec.