ウインドウ一覧の枠を表示しているとクラNo.09005
ohtorii さん 19/06/25 19:06
 
お疲れさまです。

秀丸エディタがクラッシュしたのでダンプファイルをお送りします。

# ダンプファイル
https://github.com/ohtorii/test/releases/tag/20190625_2
念のため、Windowsが生成したCrashDumpファイルも同梱しました。


# 状況
自作マクロ&自作dll(ohtorii_tools_x64.dll)の動作テストを行っています。

「ウインドウ一覧の枠」を表示していると秀丸エディタがクラッシュしますが、
非表示だとクラッシュしない現象に出くわしました。
(自作マクロを10回実行して1回クラッシュする頻度です。)

真っ先に自作DLL側の問題(メモリ破壊など)を調査しましたが、
問題を見つけることができませんでした・・・
また、dumpファイルに自作DLLのファイル名は記載されていませんでした。

もしかしたら、ウインドウ一覧の枠の潜在的な問題を引き当てた可能性があるため、
念のためダンプファイルを確認していただけないでしょうか。

原因の切り分けをお願いしている格好になり申し訳ありませんm(__)m


# その他気がついたこと
秀丸エディタのクラッシュ時に「クラッシュしましたdumpファイルを生成しまし
た。。。1回だけファイルの保存をすることができます。。。」という旨のエラーメ
ッセージは表示されませんでした。


# 環境
Windows10 64bit
秀丸エディタ 64bit 8.89 beta9

よろしくお願いします。

[ ]
RE:09005 ウインドウ一覧の枠を表示していNo.09006
秀丸担当 さん 19/06/26 12:29
 

dumpの内容を見てみたところでは、直接的に落ちている場所は秀丸エディタだと思い
ます。
呼び出し元のスタックトレースの内容やレジスタの内容が出力されておらず、詳細は
わからないです。
DLLを呼ばなくても落ちるとか、こちらでも再現できそうな方法があったら助かります。

[ ]
RE:09006 ウインドウ一覧の枠を表示していNo.09008
ohtorii さん 19/06/26 19:53
 
お疲れさまです。

ご確認いただきありがとうございます。
問題を再現させるための最小環境をこれから用意します、
しばらくお待ちください。


# スタックトレースについて
dumpファイルにスタックトレースとレジスタの内容は出力されていませんが、
Windowsが出力したCrashDumpファイルには残っています。

VisualStudioでCrashDumpファイルをデバッグしている様子をキャプチャしました。

# キャプチャした画像ファイル
https://github.com/ohtorii/test/blob/master/visual_studio.png

念のためこちらの掲示板でスタックトレースとレジスタの内容をお伝えします。
> Hidemaru.exe!000000014020e86b() 不明
  Hidemaru.exe!000000014002cd7b() 不明
  Hidemaru.exe!000000014002d106() 不明
  Hidemaru.exe!00000001401cd41b() 不明
  Hidemaru.exe!00000001401cd5f8() 不明
  Hidemaru.exe!00000001401cdb68() 不明
  Hidemaru.exe!00000001401cdf54() 不明
  Hidemaru.exe!000000014011d9d3() 不明
  Hidemaru.exe!0000000140122f1f() 不明
  Hidemaru.exe!00000001400570f6() 不明
  Hidemaru.exe!000000014006801c() 不明
  Hidemaru.exe!0000000140069301() 不明
  Hidemaru.exe!0000000140131cf6() 不明
  Hidemaru.exe!0000000140131e34() 不明
  Hidemaru.exe!00000001401326e3() 不明
  Hidemaru.exe!0000000140249601() 不明
  kernel32.dll!BaseThreadInitThunk() 不明
  ntdll.dll!RtlUserThreadStart() 不明

RAX = 0000000000003499RBX = 00000000032B0000RCX = 0000000000000000RDX = 0000
000000000000RSI = 0000000106930000RDI = 00000001402C2D60
R8 = 00000000000001E7R9 = 000000000000005DR10 = 0000000000000017R11 = 000000
0000000246
R12 = 0000000000000000R13 = 0000000000000000R14 = 0000000000000001R15 = 0000
000000000000
RIP = 000000014020E86BRSP = 00000000007BD600RBP = 0000000000000000EFL = 0001
0206
CS = 0033DS = 002BES = 002BSS = 002BFS = 0053GS = 002B
OV = 0UP = 0EI = 1PL = 0ZR = 0AC = 0PE = 1CY = 0


## CrashDumpファイルはdumpファイルに同梱しています。
> # ダンプファイル
> https://github.com/ohtorii/test/releases/tag/20190625_2
> 念のため、Windowsが生成したCrashDumpファイルも同梱しました。


お手数をおかけしておりますが、よろしくお願いします。

[ ]
RE:09008 ウインドウ一覧の枠を表示していNo.09009
秀丸担当 さん 19/06/27 09:22
 

情報ありがとうございます。
dmpファイルの見方がよくわかっていませんでした。
おかげで詳しいことがわかりました。
マクロ実行後にカーソル位置にフォーカスがあたって、カーソル位置のテキストを見
ようとするときに、既にメモリの状態がおかしくなっていたか何かで落ちているよう
です。
落ちている場所と呼ばれ方はわかったのですが、なぜそうなったのかまではわかりま
せんでした。
根本的な解決にはならないかもしれないですが、[その他]→[動作環境]→[パフォー
マンス]→[詳細]で「メモリを使用する最大サイズ」がもし小さい場合、大きくして
おくと状況が変化するかもしれないです。

[ ]
RE:09009 ウインドウ一覧の枠を表示していNo.09010
ohtorii さん 19/06/27 12:44
 
お疲れさまです。

ご確認ありがとうございます。

以下のようにカーソルを-1行へ移動すると時々クラッシュします。
moveto2 column,-1;


【クラッシュを再現させる最小のサンプルコード】
https://github.com/ohtorii/test/blob/master/test.mac


よろしくお願いします。

[ ]
RE:09010 ウインドウ一覧の枠を表示していNo.09011
秀丸担当 さん 19/06/27 14:25
 

再現マクロありがとうございます。
試してみたところでは、ループ回数を増やしたりしても、いまのところ再現できてい
ないです。
moveto2 column,-1; としても、自動的に1行目となるので、moveto2 column,1; と
した場合と同じのはずだと思います。

最初のdumpを改めて見てわかったことがありました。
該当の秀丸エディタは既に閉じた扱いになっていて、メモリ上のテキスト本文は全て
解放された状態と思われます。
そこで無いはずの1行目の情報を参照しようとすると同じ落ち方になると思います。
とりあえずそういう状況になってしまっていると思わしき場合は落ちないような対策
を入れてみようと思います。

メモリ解放されて閉じる直前の秀丸エディタがアクティブになって、そこでマクロの
続行または終了の処理が動いてしまっているのではないかと思うのですが、どうした
らそういう状況になるのかは分からないです。
ウィンドウ一覧の枠を表示させることが関係しているのかもしれないです。

もし差支えなければ、設定内容をファイルに保存したものを送っっていただけると環
境を近づけることができると思います。
送っていただける場合は"taki@maruo.co.jp"まで送っていただけると助かります。
何度もお手数をお掛けして申し訳ありません。

[ ]
RE:09011 ウインドウ一覧の枠を表示していNo.09012
ohtorii さん 19/06/27 18:34
 
お疲れさまです。

秀丸エディタの設定内容を保存したファイルをメールでお送りしました。

もしかしたらタイミング依存の問題かと思い、
自動起動マクロと自動保存を無効にしましたがクラッシュしました(;_;)


# 手順を動画にしました。
https://github.com/ohtorii/test
crash.mp4

## 補足
マウスでクリックした3のボタンは前回お送りしたtest.macです。


# ウインドウ一覧の枠について
非表示でもクラッシュするため本件とは関係ないようです。
動画を参照してください。


もし、足りない情報ありましたらご連絡ください。
よろしくお願いします。

[ ]
RE:09012 ウインドウ一覧の枠を表示していNo.09013
秀丸担当 さん 19/06/28 11:11
 

設定内容と動画もありがとうございます。
動画で起きていることがよくわかりました。
こちらでも、かなり低い確率なのですが、稀に再現させることができました。
まだ再現する条件ははわかっていないですが、これを元に調べたいと思います。

[ ]
RE:09013 ウインドウ一覧の枠を表示していNo.09014
秀丸担当 さん 19/06/28 17:25
 

他のウィンドウをクリックしまくるとかで、再現の確率が高くなる方法もわかって、
原因もわかりました。
条件として、タブモードであることと、折りたたみ用の余白があることが条件でした。
対策して修正させていただきます。
とりあえず折りたたみ用の余白をOFFにすると回避できると思います。

または以下のような感じで、closehidemaruforcedされる秀丸エディタは折りたたみ
用の余白を消しておいても回避できると思います。
config "xFoldingTwigBar:0"; //closehidemaruforcedされる予定
setactivehidemaru ##g_old_hidemaru;
closehidemaruforced ##g_new_hidemaru;

[ ]
RE:09014 ウインドウ一覧の枠を表示していNo.09015
ohtorii さん 19/06/29 10:23
 
お疲れさまです。

原因が特定できて安心しました(*^_^*)

自作マクロとtest.macをそれぞれ10回ほど起動して、クラッシュしないことを確認
しました。

修正を心待ちにしております。

[ ]