異常終了関連の秀丸側処理No.00512
Buckeye さん 07/03/03 06:56
 
え〜、マクロでだと思うのですが、秀丸が固まってしまいました。何が原因なの
か、わからない(どのマクロで固まったのかもよくわかっていない^^;)ので、
それはまあ、いいんですが(再発するようなら、条件を追い込みたいとは思いま
すが)……その後、その秀丸を終了し、ファイルを開き直して、マクロを起動し
たら、「マクロが異常終了したらしい。秀丸を全部、終了してから再起動するこ
とをお勧めする。マクロを継続するか」みたいなメッセージが出ました。このと
き、秀丸側で全部の秀丸を終了するオプションをつけたほうがいいのではないで
しょうか。

環境は秀丸Ver.6.08、Win2k SP4、IE6.0 SP1です。

秀丸はタブモードで使っていました。

・マクロ起動で秀丸が固まった
・タブモードの当該秀丸の右上×をクリックして、そのウィンドウを終了(他の
  秀丸は動いたまま)
・ファイルを開き直してマクロを起動
・上記メッセージが出る
・「いいえ」を選び、秀丸を全部終了(「はい」を選ぶとマクロがエラーになり
  ました)
・もう一度、ファイルを開き直してマクロを起動
・また、上記メッセージが出る
・ログオフしてみると……最初にエラーになった秀丸のタブのひとつが編集途中
  で、それを保存するかと聞かれた(要するに、見えない形で動いていた)

というわけで、最初に秀丸の右上×をクリックして終了したとき、見えない形で
秀丸が残っていたようです(タスクマネージャで見てみたほうがよかったかもし
れませんね)。そのため、「全終了して再起動をお勧めする」と言われて、従っ
たつもりが実は全部が終了にはなっていないという困った事態になります。なの
で、このメッセージで「いいえ」を選んだら、「秀丸全終了するか」とでも聞い
てもらえればいいんじゃないかと思います。そうでないと、普通の人だとパソコ
ン自体の再起動ってことになってしまうでしょう。

そういえば、前にATOKとの関係で秀丸が落ちたときも(ウィンドウがかき消え
た)、タブモードで一緒に開いていたファイルは見えないところで開かれたまま
でした。落ちたときのファイルを開いて、そこから他のファイル(タブモードで
一緒に開いていたファイル)を開くタイプのマクロを起動すると、普通なら同じ
ウィンドウの別タブに指定したファイルだけが開かれるはずが、別ウィンドウで、
開いていた複数ファイルが全部開かれた形で表れました(マクロでは、当該ファ
イルが開かれていればそこに移動、開かれていなければ開くという処理をしてい
ます)。

Best regards,
Buckeye

[ ]
RE:00512 異常終了関連の秀丸側処理No.00513
Buckeye さん 07/03/03 07:36
 
再発しまして(^^;)、原因も判明しましたので、続報です。

まずは、固まって終了するときの状況です。

右上の×をクリックしても秀丸は固まっていて反応しません。Windowsから「反
応ないが、終了するか」と聞かれるので終了すると、既報のように、見えないと
ころに同じウィンドウの別タブ秀丸が残ります。

この隠れた秀丸は、タスクマネージャからでは見えません。つまり、一般には、
ログオフするかパソコンを再起動するかしないと、隠れた秀丸を終了することは
できない模様です。ただし、この秀丸が、他の秀丸からは見えているらしいこと
は、ATOKのケースからも推測できますし、ファイルを開き直してマクロを起動す
ると、「マクロが異常終了したらしい。秀丸を全部、終了してから再起動するこ
とをお勧めする。マクロを継続するか」みたいなメッセージが出ることからも推
測できます。

    →なので、秀丸側で「秀丸全終了するか」とでも聞いてもらえれば、なんと
    かなるのではないかと思う次第です。

今回、固まった理由は、正規表現による検索でエラーになったか、あまりに時間
がかかって固まったように見えているかのいずれかだと思われます。具体的には、
検索文字列側に
[ -]+
がたくさん並んだ正規表現([ -]+[ -]+[ -]+[ -]+[ -]+[ -]+[ -]+……)があ
り、そこが原因でエラーか減速がおきたようです。(26個、並んでいました。い
くつから固まるのかは確認していません)

こんな正規表現、人間が書くはずがないのですが、マクロ側で自動生成している
正規表現なので、特定条件ではこのようになってしまうのです(自作マクロのほ
うは、こんなアホな正規表現にならないように対策をしたので、今は順調に動い
ています)。

人間が書かない正規表現なので対策は不要かもしませんが、それでもやはり、固
まってしまうのはあまりよくないかもなぁと思います。もし、なんらかの対策
(「この正規表現は検索不能である」というようなエラーメッセージを出して検
索を中止するなど)ができるのなら、されたほうがいいかもしれません。

Best regards,
Buckeye

[ ]
RE:00513 異常終了関連の秀丸側処理No.00514
Buckeye さん 07/03/03 07:52
 
大事なことを書き忘れました。

HMJRE.DLL Ver1.80を使ってます。

Best regards,
Buckeye

[ ]
RE:00514 異常終了関連の秀丸側処理No.00521
秀丸担当 さん 07/03/05 10:42
 

>たら、「マクロが異常終了したらしい。秀丸を全部、終了してから再起動するこ
>とをお勧めする。マクロを継続するか」みたいなメッセージが出ました。このと
>き、秀丸側で全部の秀丸を終了するオプションをつけたほうがいいのではないで
>しょうか。

固まってしまうことがまず問題ですが、この件に関しては終了するオプションで
はなく、非表示になっているものを復旧するように修正しようと思います。
タブモードのときはただ非表示になっているだけで、強制終了した秀丸エディタ
以外は全て生きています。
編集中のものがある可能性もあるので、これをすべて終了させてしまうのはあま
り良くないと思います。

標準のままであれば、秀丸エディタを再び起動することで、非表示だったタブは
自動的に復旧します。
ただ報告を見ていて気づいたのですが、タブグループを分離していたり、タブ
モードの設定で「外部から起動するとき」が「常に新しいウィンドウ」になって
いたりすると、自動的には復旧しない場合があることに気づきました。
いちおうこの場合でも「ウィンドウ」メニューの一覧から選んだり、タブモード
を解除することで手動で復旧できますが。

自動的に復旧していない場合でも、復旧するように修正させていただきます。

タスクマネージャは、アプリケーションの一覧には出てこなくてもプロセスの一
覧にはあると思います。


固まってしまう件は、こちらでも再現させることができました。
調査させていただきます

[ ]
RE:00521 異常終了関連の秀丸側処理No.00524
Buckeye さん 07/03/05 12:40
 
秀丸担当さん、

あ、非表示になってるんですか。それなら、表示されるように復旧されればまっ
たく問題ないと思います。

タスクマネージャのプロセス側までは確認していませんが、それは当然、出てい
るはずですよね。

>固まってしまう件は、こちらでも再現させることができました。
>調査させていただきます

よろしくお願いします。

Best regards,
Buckeye

[ ]
RE:00524 異常終了関連の秀丸側処理No.00525
秀まるお さん 07/03/05 17:01
 
 正規表現の検索が非常に遅いのは、単純に「A+」みたいな繰り返しパターンが
たくさんあるからと言うよりは、1つ1つの繰り返しパターンがとにかく全部ヒ
ットしまくってしまうからってことになります。

 「A+B+」ならヒットする場所が限定されますが「 + +」だと、前者の「 +」も
後者の「 +」も「     」みたいな文字列にとことんヒットしまくてっしまうた
めに遅くなります。

 こういう「極端に遅くなりそうなパターンの場合はエラーにして欲しい」とい
うことであれば、一番簡単なやり方として、正規表現パターン中の繰り返し指定
の数を制限するって方向になるかと思いますけど。それはそれで、例えば「A+B+
C+...」みたいな感じのパターンを既に使ってる人がエラー扱いにされて困ると
いうことになるかもしれません。

 ちょっとソースコードを見直していい案が無いか考えてみます。

[ ]
RE:00525 異常終了関連の秀丸側処理No.00526
Buckeye さん 07/03/05 20:29
 
秀まるおさん、

私自身は、エラーにしてもらっても、今のままでもかまいません。

自分で書くならそんなパターンは書かないわけですし、マクロで自動生成するも
のも、今回の件で対策をとったので、今後、特に問題はおきないはずですから。

あとは、一般的にいってどうするのがいいのか、ということで(何もしないとい
う方法も含め)対応を考えていただければいいと思います。

Best regards,
Buckeye

[ ]