1行が長いファイルで落ちるサンプルNo.10412
こみやんま さん 21/05/25 21:25
 
上のfzon4234さんの投稿でちょっと思い出しました。

7,8か月前に見つけていた再現率100%なんじゃないかと思うバグを思い出したの
で報告します。

■再現が高い(というか100%近い?)であろうデータ

 https://github.com/komiyamma/hidemaru_bug_longline
 のitem.zip を解凍し、items.gamebundle  みたいなファイルがあるので、このフ
ァイルを秀丸で開く。
 拡張子は.gamebundleとかなってますが、実態は.jsonです。


意図して制作したようなデータではなく、PCの海外のゲームデータなどではよくある
「1行で長いJSON」というやつです。
(まぁ秀丸がかなり弱いところのデータですかね)


■サンプルとなるファイルは1行が長いファイル
 落ちるというよりは、
 「今読み込んだファイルだけど、その操作はなかったことにしとくは...」的な
「スッ」と「あ、なんかやばいのでやめました」みたいにフォーカスが変わる挙動。
 しかし開いたファイルの「タブ」は残っている...
 分析中ネストが深くて、スタックか何か不足して辺になったんかいな? みたいな
感触に思えますが、
 真偽のほどは不明です。

■dumpなどはでない
 不正で落ちるわけではないので、dumpはなし

■再現するには私の秀丸のレジストリの情報が必要かも?
 (その時はお渡しします)

■動作環境
  Win10 Pro 21H1 もしくは 20H2
 Win Server 2019 Datacenter 1809
 いずれも発生

 秀丸x86/x64 のv8.98 β9 (どちらのビット数でも発生)
 ただし、少なくとも7,8か月前にも全くおなじ症状が発生していたので、直近の
実装バグではない、適当な半年ぐらいまえくらいの正式バージョンのいずれもで発生
するかと思います。

 [備考ハード]
 CPU i9900KS,i9700,Ryzen3950x,Xeon いずれも発生しているのでCPU依存ではない
と思います。
 メモリ32GのPC | 32GのPC | 24GのPC | 1GのPC(少ない!!) のいずれも発生してい
るのでメモリ容量依存でもないと思います。



[ ]
RE:10412 1行が長いファイルで落ちるサンNo.10418
秀丸担当 さん 21/05/26 09:07
 

バグ情報とサンプルのデータありがとうございます。
サンプルで試してみたところ、開くことはできました。
1行が長いファイルは確かに弱いところです。あとこの例の場合、対応する括弧の強
調とかだと非常に遅いことになってしまいます。
落ちるということはなくて、今使っていた設定だったり、新規インストールの設定だ
ったりしても、開けるようです。
確実に落ちるとしたら、何か特定の強調表示だったりが関係しているような気がしま
す。
[その他]→[設定内容の保存/復元...]で設定を保存したものを"taki@maruo.co.jp"ま
で送っていただけるか、どこかに置いてもらえると助かります。

[ ]
RE:10418 1行が長いファイルで落ちるサンNo.10427
こみやんま さん 21/05/26 14:23
 
>
> ......
>[その他]→[設定内容の保存/復元...]で設定を保存したものを"taki@maruo.co.jp"
>まで送っていただけるか、どこかに置いてもらえると助かります。

私も強調表示の、特に正規表現の、( 分析あるいは" " など文字列のネスト分析では
ないかと思い、みてみたところ、

たった1つの強調表示が落ちる落ちないを線引きしていることを確認しました。(そ
の強調表示を削除すると落ちない)

強調表示
 共通
  追加
   文字列(S)として
    (".*?[^\\]"|'.*?[^\\]'|\[\[.+?\]\])

   大文字小文字のチェック チェックあり
   単語の検索 チェックあり
   正規表現 チェックあり

  強調表示方法  強調表示1(これは他のでもいいっぽい)


これがかなり急所だとは思います。
(あと、この投稿の後、秀丸レジストリをメールでおくります)



[ ]
RE:10427 1行が長いファイルで落ちるサンNo.10429
こみやんま さん 21/05/26 14:43
 
んー、と思いましたが、該当の強調表示だけが原因ではないですねー。

強調表示全体の量も関わっているのかな?

[ ]
RE:10429 1行が長いファイルで落ちるサンNo.10430
秀丸担当 さん 21/05/26 15:14
 

設定ファイル受け取りました。
ありがとうございます。
そのままでは再現できなかったのですが、設定を反映させない状態で、強調表示だけ
を手動で追加したとき、対応する括弧の強調があると「一行の強調表示の計算に2秒
以上…」のメッセージが出ることがあって、ここで「はい」を選ぶと落ちる場合があ
りました。
ちょっと状況が違う気もしますが、少なくともわかった点については修正します。
あと設定によりますと自動起動マクロも動いているようで、こちらではそれが動いて
いなくて違うかもしれません。

[ ]
RE:10430 1行が長いファイルで落ちるサンNo.10434
こみやんま さん 21/05/26 15:54
 
>あと設定によりますと自動起動マクロも動いているようで、こちらではそれが動い
>ていなくて違うかもしれません。

自動起動マクロを切った状態のレジストリ化してお送りした方がよかったですね。

(1)自動起動マクロを切った状態、そして、まっさらなhideamru_x64を改めてダウン
ロードしてきて秀丸のレジストリ設定をhmregから復元し、
(2)自動起動マクロをOFFにし
(3)念のため「元々の秀丸のフォルダ」の自動起動用のマクロがあるフォルダを別名
に変える(=自動起動マクロパス自体を変更することでまちがっても読めなくする)、

この状態でも、やはりこちらでの落ちてしまう挙動は確認していたので、
自動起動マクロの処理内容は原則的には今回の件とは関係ないと思っています。

[ ]
RE:10430 1行が長いファイルで落ちるサンNo.10471
こみやんま さん 21/05/31 14:54
 
こちら残念ながらβ10でも治ったとは言い難い状況のようです。

ただし、β9と同じかというとそんなことはなく、
すくなくとも「テキスト内容の表示」が結構一瞬でされるようになりました。

しかし、その後、「再編集可能」=「編集ペインアクティブ」な状態に至ったPCは、
3台中1台でした
(3台中2台再編集可能に至らなかったので、最高スペックのRyzen機ではテストし
ませんでした)

Win 10 Pro 21H1 の2台、
 うち1台は以下の正規表現があっても正常に動作するようになった、
 一方1台は正常には動作しない。
2台両方ともで、IME(MS-IMEの普通の設定)でも、Google 日本語入力でもどちらに
切り替えて、
秀丸を全終了→起動するところからやりなおしても挙動変わらず。

強調表示をOFFにしますか? → はい テキスト表示後 編集ペインは有効にならない。

投稿の「10418」でも記したように、
強調表示は多くは不要で、「共通」としてたった1でOK
 強調表示
 共通
  追加
   文字列(S)として
    (".*?[^\\]"|'.*?[^\\]'|\[\[.+?\]\])

   大文字小文字のチェック チェックあり
   単語の検索       チェックあり
   正規表現        チェックあり

  強調表示方法  強調表示1(これは他のでもいい)

Win2019 Svr も前回とは異なり、たしかにテキスト内容の表示は一瞬でされるように
なったが、
強調表示をOFFにしますか? → はい としても
編集ペインはアクティブにはならない。(5分待機しててもかわらず)


なお、上の強調表示さえなければ、全てのマシンは全く問題なく一瞬でテキスト内容
が表示され、
編集ペインも有効となります。

[ ]
RE:10471 1行が長いファイルで落ちるサンNo.10474
秀丸担当 さん 21/05/31 16:36
 

まだ問題が残っているということで、すみません。
調べてみて、原因がわかりました。
アウトライン解析の枠にも強調一覧があって、強調表示を一時OFFにしても、そこで
帰ってこない場合がありました。
一時OFFの場合は、強調一覧も無効となるようにまた修正します。

[ ]
RE:10474 1行が長いファイルで落ちるサンNo.10475
こみやんま さん 21/05/31 17:38
 
>アウトライン解析の枠にも強調一覧があって、強調表示を一時OFFにしても、そこで
>帰ってこない場合がありました。
>一時OFFの場合は、強調一覧も無効となるようにまた修正します。

確かに、β10で「アウトライン解析枠」を非表示にすると、
どのPC環境でも問題なくなるようです。

「アウトライン解析枠」がβ10でもフリーズする原因である確率が非常に高そうだと
思いました。

[ ]
RE:10475 1行が長いファイルで落ちるサンNo.10482
こみやんま さん 21/06/07 18:44
 
こちら 残念ながら
β11 で確認してみましたが β10と比べ、特に改善されたといった印象は受けません。
(β10と同じに思えます)

たとえばわかりやすいところでは、「アウトライン解析枠非表示」状態で読み込む⇒
サクッと読める

この状態でアウトライン解析枠表示⇒即フリーズ

などです(β10と同じ)

[ ]
RE:10482 1行が長いファイルで落ちるサンNo.10483
秀丸担当 さん 21/06/08 09:28
 

まだ起きてしまうということで、すみません。
どうも強調表示を無効にしても2秒かかるくらいの微妙な具合だったり、デバッグ中
だとメッセージボックスの表示具合が再現性に関わりそうでした。
改めて調べて、また修正させていただきます。

[ ]
RE:10483 1行が長いファイルで落ちるサンNo.10491
こみやんま さん 21/06/11 03:07
 
秀丸32bit版のみの確認となっていますが、β12にて、こちら修正されているように
思います。

確認環境
 Win10 Pro 21H1 | MS-IME Google日本語 両方確認
 Win2019 Server Datacenter 1809 | MS-IME 確認

[ ]
RE:10491 1行が長いファイルで落ちるサンNo.10492
秀丸担当 さん 21/06/11 09:04
 

ご確認ありがとうございます。
何度もすみません。
連絡いただいて助かりました。

[ ]
RE:10492 1行が長いファイルで落ちるサンNo.10493
こみやんま さん 21/06/11 11:41
 
うぐ、「治ったようだし、共通にあった強調表示を全部消すかな」と思って全部けし
たところ、「強調表示が何もない状態」だと逆に「アウトライン枠表示状態」でフ
リーズようです。

再現手順

■「ファイルを何も開いていない状態」で、
 ・ファイルタイプ別設定 ⇒ 「共通」に対して「デザイン」「強調表示」の正規表
現等、全部なしにする。
 ・おなじく、「共通」に対して「アウトライン」⇒「アウトライン解析枠」のチェ
ックを外す(ようするに最初はアウトライン解析枠がでないようにしておくだけ)


■例のサンプルとなっている、items.gamedatabundle
 を秀丸で開く。(⇒おそらく無事に開ける)

■アウトライン解析枠を表示
 (おそらく表示はバグるがまだ秀丸がフリーズするといったほどではない)

■アウトライン解析枠にマウスを移動させてくりっく
 ⇒フリーズ


Win10の方でもWindows 2019 Serverの方でもどちらでも同じ現象となりました。

[ ]
RE:10493 1行が長いファイルで落ちるサンNo.10494
こみやんま さん 21/06/11 12:03
 
>うぐ、「治ったようだし、共通にあった強調表示を全部消すかな」と思って全部け
>したところ、「強調表示が何もない状態」だと逆に「アウトライン枠表示状態」で
>フリーズようです。
> ......
>Win10の方でもWindows 2019 Serverの方でもどちらでも同じ現象となりました。

追加情報です。

上記内容は、8.97正式版では、発生しない現象です。

8.97正式版では、上記手順を踏んだ場合、
・「アウトライン枠の描画が乱れる(デバイスコンテキストに対して再描画してなく
てアウトライン枠表示前に元々そこにあったものがそのまま表示されてしまっている
感じになっています)
 ここは、8.98β12 と同一
・ただしフリーズはしない (ここは8.98β12とはことなる)

一連の「アウトライン枠」に対するなにかの処理をカットするものを加えた影響なの
か、
「強調表示OFFうんぬん」の処理自体そもそも通過しないといった際、
逆にフリーズするようなバグを作ってしまっているみたいです。


[ ]
RE:10494 1行が長いファイルで落ちるサンNo.10495
秀丸担当 さん 21/06/11 12:41
 

ご指摘の手順で同じように再現できました。
V8.98β2でのマウス操作での修正の影響で、しかも正規表現が無くても単純に長いテ
キストで遅いということのようでした。
本当に何度もすみません。
今度こそ修正させていただきます。というかこの点についは従来通りとなるように戻
します。

[ ]
RE:10495 1行が長いファイルで落ちるサンNo.10497
こみやんま さん 21/06/14 10:43
 
β13で、アウトライン解析枠関連のフリーズは無くなってるかな? という気がしま
す(1回フリーズしたのですが再現できない)

とりあえず、β13でも描画のバグは32bit版でも64bit版でも100%発生するかと思い
ます。

画像付きの方が誤解がないので、画像付きでURLで投稿しておきます。

https://github.com/komiyamma/hidemaru_bug_longline/blob/main/DrawError.md

[ ]
RE:10497 1行が長いファイルで落ちるサンNo.10498
秀丸担当 さん 21/06/14 12:46
 

ご確認ありがとうございます。
描画の残骸があるような表示は、画像を拝見させていただいたものと同じような感じ
で、確かにそうなってしまいます。
表示までに時間がかかっている状態で、それを一部マウス操作ではなんとかしようと
していたのがβ2だったのですが、この点については従来通りに戻しました。
V8.98においては、すみませんが下手にいじらないでおこうと思います。
また今後のバージョンで検討しようと思います。

[ ]