(toppers-users 1532) Re: Fi4のバグ報告について

Kominami Yasuo NBC00224 @ nifty.com
2004年 7月 13日 (火) 06:25:08 JST


小南です。

On Mon, 12 Jul 2004 08:40:23 +0900
Masaki Muranaka <monamour @ monaka.org> wrote:

> こんにちは。
> 
> On 2004/07/11, at 23:25, Kominami Yasuo wrote:
> > 一言で言うと、「複数のタスクが同時に待ち解除されたとき、dispatch
> > をどのタイミングで行なうべきか」です。
> 
> この件は、バグトラックに登録されており、バグと認識されています。
> http://support.toppers-open.org/bts/ipa-oss2003/guest.cgi? 
> project=fullset&action=view_report&id=242
> 

紹介して頂いたバグトラックを確認しました。
私は今のところ、CPUロック状態にして待ち行列上の全てのタスクを(ディスパッチなしで)
待ち解除し、最後にディスパッチをするぐらいしか考えつきませんでした。

どのように対応するか、方針などはもう決っているのでしょうか。

ところで上記URLの[ホーム]とTOPPERS Projectのサイトの、「開発成果」->
「公的資金による開発成果」->「IPAオープンソフトウェア活用基盤整備事業」の
「こちら」(http://www.oss2003.toppers-open.org
:8080)は同一URLだと思われるのですが、どちらからもタイムアウトのため接続できませ
んでした。
そのため、バグトラックシステムはゲストとして見ることだけが出来るのか、登録も出来るのか
(またはしていいのか)判断できませんでした。

実は前回メールした以外にも上記バグトラックに登録されていないことで、いくつか気がついた
点があります。
どこに報告するのが良いでしょうか。

簡単に記すと以下の通りです。

1.del_*サービスコールは、cre_*サービスコールでユーザが確保したメモリかカーネル
で確保したメモリかを判断せず、一律にカーネルが確保したメモリとして解放しようとする。
 del_tsk以外にも、del_dtq、del_mbf、del_mpf、del_mpl

2.すべてのdel_*サービスコールで、オブジェクト管理ブロックをフリーリストに登録した
直後に、ディスパッチが発生して別タスクでacre_*サービスコールが呼ばれると(つまり
del_*と同一IDが指定されると)、管理ブロックに対する書き込みの競合が発生する
(KOBJ_EXISTがKOBJ_NOEXSに上書きされる)
del_mpl,del_mbfではメモリが勝手に解放されたり、解放されずに迷子になる可能性
も有る。


3.すべてのcre_*サービスコールとacre_*サービスコールについて、複数のタスクによ
るフリーリストの先頭にあるオブジェクト管理ブロックに対する競合が発生する場合が有る。
cre_*サービスコールが、CHECK_OBJECT_CREATABLEを実行した後ディス
パッチし、別のタスクがacre_*を実行すると、cre_*サービスコールはフリーリスト上に
存在しない管理ブロックをフリーリストから取りだそうとして、queue_delete_next
内でassert発生

4.CRE_*サービスコールで生成したオブジェクトをdel_*で削除した後、同一IDを指定
してcre_*すると、queue_delete_next内でassert発生

小南 靖雄
ykominami @ nifty.com
(NBC00224 @ nifty.com)
----------- 
小南 靖雄
ykominami @ nifty.com
(NBC00224 @ nifty.com)