待辦事項 #45330

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

啟用日期: 2022-08-08 23:32 最後更新: 2022-08-10 00:08

回報者:
負責人:
類型:
狀態:
關閉
元件:
優先權:
5 - 中
嚴重程度:
5 - 中
處理結果:
修正
檔案:
Vote
Score: 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 にマージすることで関連する問題が出ないようにする(可能性を減らす)

Ticket History (2/2 Histories)

2022-08-08 23:32 Updated by: zmatsuo
  • New Ticket "ファイル名用の領域確保/開放などの動的なメモリ操作でassertが発生する" created
2022-08-10 00:08 Updated by: zmatsuo
  • 狀態 Update from 開啟 to 關閉
  • 處理結果 Update from to 修正
評語

r10129, r10130 で対応しました。

Attachment File List

No attachments

編輯

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » 登入