HmJre.dllでの内部エラーでよく落ちますNo.28911
rosegardenyk さん 10/09/15 03:40
 
こんにちはrosegardenです。
HmJre.dllの正規・あいまい検索を多用するmacro実行中に「HmJre.dllでの内部エ
ラー、死にます」の表題で次のエラーメッセージを表示して頻繁に秀丸が落ちます。

「E:\usr95\HmJre15\Fuzzy.cpp(1844) HeapAllocでエラーです。エラーコード=8 サ
イズ=65536」

今回はWINDOWS XP からも「仮想メモリーの最低値が低すぎます」とのメッセージが
同時に表示されました。
このmacroを繰り返しテスト中ですが普段からこの「仮想メモリーの最低値が低すぎ
ます」Windowsメッセージもよく表示されます。最低値を増やす間他のアプリケーシ
ョンが使えない場合があるとあり、しばらくして秀丸が落ちることが多いです。

あいまい検索設定
空白タブ無視ON
特定の文字を無視ON
カスタム1 ON (同一視ファイルを使う)
固有のヒープ領域を使うON
HmJre.dll V3.28

秀丸V8.01 (最新バージョン)
固有のヒープ領域を使うはONでもOFFでもよく落ちます。

恥ずかしながら、仮想メモリーの最低値を変更する方法がわかりません。必要な対応
を教えてください。
念のため、エラー直後のdump.txtもとってあります。
よろしくお願いします。

[ ]
RE:28911 HmJre.dllでの内部エラーでよくNo.28912
秀まるお2 さん 10/09/15 09:13
 
 たぶん、HmJre.dllのあいまい検索関係の処理で、いわゆるメモリリークのバ
グが発生していて、それでメモリ不足になってしまってるのではないかと思いま
す。

 こちらで簡単にあいまい検索を繰り返すテストをした限りではメモリリークは
起きてないようなので、何か特別な条件がある場合にのみ起きる現象ではないか
と思います。例えば「特定文字を無視」で指定してる特定文字の種類によって起
きるとか、カスタム同一視指定ファイルの中身が特定の文字を含む場合に起きる
とか…。

 ということで、すみませんがその辺の中身がどうなってるのかと、あと、再現
する用のマクロがあるということでしたら、そのマクロの中身も教えて欲しいで
す。

 ここの会議室に書き込んでいただける大きさならここの会議室に書き込んで欲
しい所ですが、もし量が多い(あるいは一般公開されたらまずい)ようでしたら、
メールで送って欲しいです。送り先は、"maruo@mitene.or.jp"です。

 よろしくお願いします。


> 恥ずかしながら、仮想メモリーの最低値を変更する方法がわかりません。必要な対応
> を教えてください。

 「コントロールパネル・システム・詳細設定」の「パフォーマンス」枠中の
「設定」ボタンを押して、そこの「詳細設定」ページの所で仮想メモリのサイズ
が変更出来ます。

 あと、秀丸エディタがどれだけメモリを消費してるのかは、Ctrl+Alt+Delete
キーを押して出てくるタスクマネージャの「プロセス」ページの中で、Hidemaru.
exeのメモリ使用量なんかを見ると分かります。たとえばマクロを実行する度に
メモリ使用量がどんどん増えていくとしたら、それがいわゆるメモリリークとい
う類のバグが発生してるということになると思います。

[ ]
RE:28912 HmJre.dllでの内部エラーでよくNo.28913
rosegardenyk さん 10/09/15 12:36
 
秀まるお2さん
> HmJre.dllのあいまい検索関係の処理で、いわゆるメモリリークのバグが発生して
>いて、それでメモリ不足になってしまってるのではないか

どうもそのようです。タスクマネージャの「プロセス」ページの中で、Hidemaru.exe
のメモリ使用量を見るとマクロを実行する度にメモリ使用量がどんどん増えていきま
す。イメージ欄のHidemaru.exeも1行だけから2,3,4...行と増えていきます。
最初は1行5,744k だったのが4行目54,976kとかになっていきます.


>例えば「特定文字を無視」で指定してる特定文字の種類によって起きるとか、
設定:、,@ABCDEFGHI
@- Iはいわゆる赤字警告メッセージの出るマシン依存文字(0xFA40 - 49)です。こ
れが怪しいです。記憶が定かでないのですが、当初これを設定する前は落ちなかった
ような気もしますがはっきりしません。

>カスタム同一視指定ファイルの中身が特定の文字を含む場合に起きる
とか…。
設定は以下の数行のみです。
。 .
、 ,
いずれ どちら
た。 られた。
割りつけ 割り付け 割付け 割つけ
における に対する での
@ A B C D E F G H I J K L M N O P Q R S


> 「コントロールパネル・システム・詳細設定」の「パフォーマンス」枠中の「設
>定」ボタン
設定は:
C:初期768MB 最大1536MB
D:ページングファイルなし

下段の「全てのドライブの総ページサイズ」に
・最小限 2MB
・推奨 1533MB
・現在の割当768MB
とあるので元々最小値が低すぎる気もします。
D:も設定が必要でしょうか.教えてください。

各フォルダーの位置は次のとおりです。
hidemaru.exeはC:のprogram files\Hidemaru
macrofileはD:のマイドキュメントの下のホルダー

>あと、再現する用のマクロがあるということでしたら、そのマクロの中身も教えて
>欲しいです。
量が多い(あるいは一般公開されたらまずい)ので、いよいよ必要となったら操作方
法の説明も大変なので操作方法を簡単化した再現用マクロに作り直してメールで送る
方法を考えます。もっとも作り直しの手間をかけるより、ご指示いただければこちら
でテストして報告するほうが楽です。毎回落ちるわけではありませんのでそちらで再
現するのも手間がかかりそうです。とりあえず上記の設定情報をもとにミニテストを
していただけますすでしょうか。
参考情報: dllfunc("FindGeneral",0,1,1 正規・あいまい検索、ファイルに対しsear
chdown2, "xxxx",regular, fuzzy 正規・あいまい検索をよく使用しています。他にd
llfunc("FindRegular", dllfunc(str"ReplaceRegular"を全マクロにわたって使用し
ています。
使用ファイルは1.例文テキストファイル(少量入出力兼用)、2、単語辞書ファイル(テ
スト用に少量100行ぐらい)、3、用例辞書ファイル(テスト用に少量100行ぐらい)、マ
クロファイルは千数百ステップ。

質問・要望:
秀丸用のデバッガの様なソフトはありますでしょうか?
毎回、question "xxxx" + 変数;if (!result) endmacro;としてバグ探しするのも大
変です。

別件ですか、このマクロでテスト中に「あいまい検索文字列長を計算したらゼロにな
りました」メッセージが出た場合、ロジックによってはこのメッセージが繰り返され
て結局強制終了するしかない場合が多くあります。マクロの修正プロセスを遡ること
ができなくなります。対処方法を教えてください。「続行しますか」みたいに聞いて
くれると助かります。処理対象の文章内容によりゼロになったりします。(例: 誤っ
てマクロのテキストを処理対象したときなど).


よろしくお願いします。

[ ]
RE:28913 HmJre.dllでの内部エラーでよくNo.28914
秀まるお2 さん 10/09/15 13:17
 
 お手数かけてすみません。

 いろいろテストしてみたら、ReplaceRegular関数を繰り返し実行させるとメモ
リリークするようでした。

サンプルマクロ:

loaddll "hmjre.dll";
Loop:
#n = dllfunc("ReplaceRegular","x", "xxxxxxxxxxxxxx", 0, "yyyyyyyy", 1 );
goto Loop;

 ということで、それのせいだと思うので、その辺修正させていただきまして、
また次の秀丸エディタβ版に、バグ修正版のHmJre.dll(Version 3.33)を添付
させていただく、という予定とさせていただきます。

 それと、ページングファイルの設定は、今のままでいいと思います。あくまで
今回の問題はHmJre.dll側の問題なので、ページングファイルの設定は今のまま
でいいと思います。

> 別件ですか、このマクロでテスト中に「あいまい検索文字列長を計算したらゼロにな
> りました」メッセージが出た場合、ロジックによってはこのメッセージが繰り返され
> て結局強制終了するしかない場合が多くあります。

 一応、Escキーを連打、または押しっぱなしにすることでマクロが中断出来る
と思いますけど、どうでしょ?

 これの件についても何か再現マクロを作ってテストしてみます。

[ ]
RE:28914 HmJre.dllでの内部エラーでよくNo.28915
秀まるお2 さん 10/09/15 13:28
 
 ReplaceRegular関数の第5パラメータに数値の1を指定して「全置換」相当の
処理をさせるとメモリリークしてしまうようです。

[ ]
RE:28913 HmJre.dllでの内部エラーでよくNo.28916
秀まるお2 さん 10/09/15 13:57
 
> 別件ですか、このマクロでテスト中に「あいまい検索文字列長を計算したらゼロにな
> りました」メッセージが出た場合、ロジックによってはこのメッセージが繰り返され
> て結局強制終了するしかない場合が多くあります。

 こちらについては、例えば

    Loop:
    searchdown "@", regular, fuzzy;
    goto Loop;

 のようなマクロで再現するようですが、とりあえずEscキーを押しっぱなしに
すればマクロを中断させることは出来るので、その作戦でお願いしたいです。

[ ]
RE:28913 HmJre.dllでの内部エラーでよくNo.28917
秀まるお2 さん 10/09/15 14:09
 
> 質問・要望:
> 秀丸用のデバッガの様なソフトはありますでしょうか?

 これは…。すみませんがありません。

 message文やquestion文を入れまくるしか無いと思います。

[ ]
RE:28917 HmJre.dllでの内部エラーでよくNo.28921
IKKI さん 10/09/15 20:20
 
> > 秀丸用のデバッガの様なソフトはありますでしょうか?
>
>  これは…。すみませんがありません。

debuginfo 文と showvars 文というのがあるにはありますが…。
ステップ実行みたいなことはできませんね。

[ ]
RE:28912 HmJre.dllでの内部エラーでよくNo.28925
rosegardenyk さん 10/09/17 13:23
 
秀まるお2さん
秀丸V8.08 beta9
HmJre.dll Version 3.33
でテストしたところまだ、同じエラーメッセージを表示して落ちます.
Windowからも仮想メモリの最小値が低すぎるとメッセージの表示ありました.

指定のmaruo.mitene.co.jpに
1.テスト用のマクロTESTER01(Subroutine 一つ付き)
2.テストファイル一つTEST01
を送付しました.

このマクロはループします.

よろしくテストをお願いします.

[ ]
RE:28925 HmJre.dllでの内部エラーでよくNo.28926
秀まるお2 さん 10/09/17 13:33
 
 ということは、他にもまだメモリリークのバグが潜んでいるということかなぁ
と思います。

 ということで、送っていただいたマクロを使ってテストさせていただきます。

[ ]
RE:28926 HmJre.dllでの内部エラーでよくNo.28927
秀まるお2 さん 10/09/17 14:16
 
 調べてみたら、FindGeneral関数であいまい検索ONのパラメータ指定した時に
もメモリリークしてしました。

 大変失礼しました。

 今度こそはマクロでのメモリリーク無しを確認したので大丈夫だと思います。

 お手数かけてすみません。

[ ]
RE:28927 HmJre.dllでの内部エラーでよくNo.28928
秀まるお2 さん 10/09/17 15:18
 
 とりあえずバグ修正したHmJre.dllだけ単体でうちのホームページにアップ
ロードしました。もしよかったらそれをダウンロード&解凍して、出てきた
HmJre.dllを古いHmJre.dllに上書きコピーして使って欲しいです。

 上書きコピーする時は、常駐秀丸も含めたすべての秀丸エディタを終了させる
必要があります。

 もしお急ぎでない場合は秀丸エディタの次のβ版を待っていただいてもいいで
す。

HmJre.dllのV3.34(32bit版)のダウンロード用URL:
       http://hide.maruo.co.jp/software/bin/hmjre334.zip

 ということでお願いします。

[ ]
RE:28928 HmJre.dllでの内部エラーでよくNo.28954
rosegardenyk さん 10/09/22 12:35
 
秀○おさん
>HmJre.dllのV3.34(32bit版)のダウンロード用URL:
>       http://hide.maruo.co.jp/software/bin/hmjre334.zip
> ということでお願いします。
HmJre.dllのV3.34(32bit版)で上書き後,前と同じマクロでの実行を繰り返してお
りますが、一度も落ちてません。メモリーリークはやんだようです。ありがとうござ
いました。

[ ]
RE:28954 HmJre.dllでの内部エラーでよくNo.28955
秀まるお2 さん 10/09/22 19:39
 
 確認ありがとうございます。

 ちなみに別件のバグ修正なんかもあって、HmJre.dllがまたバージョンアップ
してV3.35になってしまってたりします。秀丸エディタの今日アップロードされ
たβ版に添付されてます。

[ ]