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

1 つの投稿 / 0 new
root
オフライン
Last seen: 3日 20時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00151] [BUG] Ring Bufferのメモリ欄外参照

産総研の清水です.

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

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

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

清水

未定義

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2209
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク