Ticket #45330

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

Open Date: 2022-08-08 23:32 Last Update: 2022-08-10 00:08

Reporter:
Owner:
Type:
Status:
Closed
Component:
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
None
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

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
  • Status Update from Open to Closed
  • Resolution Update from None to Fixed
Comment

r10129, r10130 で対応しました。

Attachment File List

No attachments

Edit

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