チケット #45330

ファイル名用の領域確保/開放などの動的なメモリ操作でassertが発生する

登録: 2022-08-08 23:32 最終更新: 2022-08-10 00:08

報告者:
担当者:
チケットの種類:
状況:
完了
コンポーネント:
マイルストーン:
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
なし
投票
点数: 0
No votes
0.0% (0/0)
0.0% (0/0)

詳細

r10102 で確保したままだったメモリを開放するようにした。 この修正のfree()時にassertが出ることがわかった。他の場所でもassertが出る場面があるのかもしれない。

メモリを確保したまま終了しても問題ないが、ヒープを破壊しているためにassertが出ているなら不具合を修正する必要がある。

このassertの調査、対応を行う。

問題の内容

  • 複数個所(DLL,EXEモジュール毎)にヒープが存在する
    • ttermpro.exe, ttpset.dll, ttpcmn.dll など
  • モジュール(各ファイル)をまたいでヒープを操作すると問題が起きるようだ
    • dll側で確保してexe側で開放するなどの操作
    • ヒープを操作するとアサートが出る
    • 他にどんな問題が出るのかについてのドキュメントは見当たらない
    • 参照だけなら問題はでない
  • Tera Term 5 では iniファイルから読み込んだファイル,パス文字列をヒープに置くようにした
    • iniからの読み込みは、ttpset.dllが担っていたため、ここのヒープが使用される
    • Unicode対応と合わせて、ファイル名長の上限を撤廃しようとしている
  • パスの変更が行われた時などに問題が起こる可能性がある
    • ttermpro.exeがダイアログを表示してファイルのパスなどを変更するなど
    • この操作時に malloc(),free()が行われる
    • モジュールをまたいだヒープ操作が行われることになる
  • ttssh2-dev 409

解決方法

  • ヒープ操作が行われる部分を ttermpro.exe にマージすることで関連する問題が出ないようにする(可能性を減らす)

チケットの履歴 (2 件中 2 件表示)

2022-08-08 23:32 更新者: zmatsuo
  • 新しいチケット "ファイル名用の領域確保/開放などの動的なメモリ操作でassertが発生する" が作成されました
2022-08-10 00:08 更新者: zmatsuo
  • 状況オープン から 完了 に更新されました
  • 解決法なし から 修正済み に更新されました
コメント

r10129, r10130 で対応しました。

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする