操作
バグ #781
完了Windows上でのConsoleIn,ConsoleOutコンポーネントの動作不具合
ステータス:
終了
優先度:
通常
担当者:
-
対象バージョン:
-
開始日:
2009/07/09
期日:
進捗率:
100%
予定工数:
説明
WindowsにてConsoleIn,ConsoleOuを起動し、RTSystemEditorにてAll Activateを行うとRTSystemEditorが固まる。
固まる原因は、ConsoleOutのactivate_component()で処理が戻ってこないため。
activate_component()の処理内にてデッドロックが発生している模様。
チケット#628にてsrc/lib/coil/win32/coil/Mutex.hの修正が行われたが、ここで修正されたCreateMutex()の
第三引数に固定の名前を指定しているのが悪さしているようであった。
この第三引数を以前のようにNULLに戻してみたところ、ConsoleIn,ConsoleOutは問題無く動作するようになった。
動作確認を行ったリビジョンはR1435。
匿名ユーザー さんが15年以上前に更新
- 原因
システム全体を一つの mutex のハンドルで制御しようとしたためデッドロックが発生した。 - 対策
coil::LogStream で使用する mutex は static に修正。
coil::Mutex で mutex を生成する (CreateMutex) 際に、名前付き/Null を指定できるように修正。
RTC::Logger のフォーマット機能付きログ出力マクロで、引数にログ出力がある関数が指定された場合、デッドロックを起こすため改修。 - 確認 (posix,windows で確認)
coil の Logger に unit テストで問題がなことを確認。
log_level を PARANOID にして SimpleIO を動作させてログファイルが崩れて記録されていないことを確認。
操作