[openrtm-users 00151] [BUG] Ring Bufferのメモリ欄外参照

Masayuki Shimizu masayuki.shimizu @ aist.go.jp
2007年 7月 2日 (月) 14:25:25 JST


産総研の清水です.

リングバッファにメモリの欄外参照を起こすバグが見付かりました.
修正パッチを作りましたので送ります.
場合によってはコンポーネント自体が落ちてしまうことがあるので,
早急な修正をお薦めいたします.
以下は問題の詳細です.

[問題]
リングバッファのm_newPtrの初期値が
バッファのlengthと同じになっており,
その場所はバッファの欄外である.
バッファのreadは,m_newPtrのアドレスを参照するため,
DataPortをRingBufferと共にregisterしたあと,
データのwriteが起こる前にreadを行うと,
メモリの欄外参照を引き起こす.
Fedoraの場合,RingBufferのメモリ領域は,
DataPortの直前に配置されるらしく,
RingBufferの欄外参照によってDataPortのメモリの
先頭領域が破壊されるため,Segmentation Fault
となってコンポーネント自体が落ちる.

[対応]
m_newPtrの初期値をlength-1とした.

清水
--------------------
Masayuki Shimizu

Postdoctoral Fellow
Task Intelligence Research Group
Intelligent Systems Research Institute
National Institute of 
Advanced Industrial Science and Technology (AIST)
Central 2, 1-1-1, Umezono, Tsukuba, Ibaraki 305-8568, JAPAN
Tel: +81-29-861-5952
Fax: +81-29-861-5971
Email: masayuki.shimizu @ aist.go.jp
       chaser @ ieee.org
URL: http://unit.aist.go.jp/is/taskint/


-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: patch-RingBuffer-20070702
型:         application/octet-stream
サイズ:     459 バイト
説明:       無し
URL:        <http://www.openrtm.org/pipermail/openrtm-users/attachments/20070702/944ff80a/attachment-0001.obj>


openrtm-users メーリングリストの案内