メモリが足りない?No.37678
Yossi さん 10/01/23 09:03
 
システムにメモリの余裕があるのに、本文のコピー操作で
メモリが足りないので処理を中止しますのダイアログが表示され
本文のコピーが実行できない

発生する手順
(1)本文が 8MB程度のメールを受信
(2)本文を表示しそのペインにフォーカス移動  Ctrl+A で全選択
(3)メモリが足りないので処理を中止しますのダイアログが表示

環境
PC  HP dv7/CT (ノートPC)
OS Windows XP(x86) Pro(SP2)
メモリ 実装:4GB   認識:3GB  空き:2GB以上

以上です、よろしくお願いします。








[ ]
RE:37678 メモリが足りない?No.37685
秀まるお2 さん 10/01/23 23:19
 
 秀丸メールのソースコードの中から、その

 「メモリが足りないので処理を中止します。」

 の文字列を検索したら、まさにその通りのエラーメッセージを出す処理が1つ
ありました。がしかし、その処理は、秀丸メール本体またはエディタ・ウィンド
ウを生成する時のタイミングで働くだけの処理でした。

 その処理というのは、プロセス間通信のための共有メモリ(というか、ファイ
ルマッピング)に対してMapViewOfFileというのをやって失敗したら出してる、
という物のようですが…。

 なぜそれが「全選択」だけで出てしまうのか、すみませんがいまいち原因が分
からないです。

 ちなみに僕のマシン上の秀丸メールで、メール本文が8.5メガバイトほどの
メールを作成して、それを「全選択」および「コピー」とした場合にはエラーは
出なくて、しかも、「メモリが足りないので処理を中止します。」のエラーを出
すのに関係した処理を通過することもありませんでした。

 せめて、「コピー」としたタイミングでエラーが出るのなら分かるんですが、
「全選択」というのは、別にメモリを食うような処理は全然やってないです。と
いうことで、すみまんが原因がよく分かりません。

 何か解決のヒントがあるといいんですが…。

 とりあえずなんとかするとしたら、次のβ版ちて、問題のエラーメッセージを
出す処理の所でdump.txtに詳しく記録を出すようにして、それでテストしていた
だいて、生成されたdump.txtを僕に送っていただく、という作戦で原因が究明出
来るかもしれません。もしテストにご協力いただけるなら、そういう作戦をお願
いしたいと思います。

[ ]
RE:37685 メモリが足りない?No.37688
Yossi さん 10/01/24 08:01
 
こんにちは

> 秀丸メールのソースコードの中から、その
>
> 「メモリが足りないので処理を中止します。」
>
> の文字列を検索したら、まさにその通りのエラーメッセージを出す処理が1つ
>ありました。がしかし、その処理は、秀丸メール本体またはエディタ・ウィンド
>ウを生成する時のタイミングで働くだけの処理でした。
>
> その処理というのは、プロセス間通信のための共有メモリ(というか、ファイ
>ルマッピング)に対してMapViewOfFileというのをやって失敗したら出してる、
>という物のようですが…。
>
> なぜそれが「全選択」だけで出てしまうのか、すみませんがいまいち原因が分
>からないです。

スミマセン おおぼけカマしてました

発生する手順
(1)本文が 8MB程度のメールを受信
(2)本文を表示しそのペインにフォーカス移動  Ctrl+A で全選択
(3)Ctrl+Cで選択範囲のコピー
(4)メモリが足りないので処理を中止しますのダイアログが表示

です。
秀丸メールは最新です。

[ ]
RE:37688 メモリが足りない?No.37689
秀まるお2 さん 10/01/24 12:38
 
 ソースコードをよくよく見直してみたら、たしかに「コピー」コマンドを実行
した時にメモリ不足が発生すると、その「メモリが足りないので処理を中止しま
す。」のエラーを出していました。

 ただし、常識的に考えて、8メガバイト程度のテキストデータをクリップボー
ドにコピーするだけでメモリ不足になるということは、普通なさそうな気がしま
す。なのでなぜその程度でメモリ不足になるのかいまいちよく分からないです。

 ちなみに僕の所でメール本文が16メガバイト程度のメールで「コピー」をし
た限りは問題ありませんでした。

----------------------------------------
 とりあえずですが、秀丸メールの「ヘルプ・秀丸メールのバージョン情報/送
金登録...」を実行して、そこの右下にある「メモリ使用量計算」を押して出て
くるMemoryUse=XXXXMBの値を教えていただくと、秀丸メールが具体的にどのくら
いメモリを食っているのか分かると思います。

 僕の所だと、そこは秀丸メール起動直後で33Mバイト程度しか食ってないです。
メール本文が16メガバイトあるメールを選択して「すべて選択」、「コピー」
としても、87メガバイト程度に増えるだけで、とてもとてもメモリをすべて食
い尽くすにはほど遠いです。

----------------------------------------
 他に考えられる原因としてですが、もしかして何らかの理由で、1プロセス当
たりで使用出来るメモリ量が何らかの理由で制限されてしまってて、それでメモ
リ不足が発生する、ということがあるのかもしれないです。例えばWindowsを高
速化するとかいううたい文句のソフトとか、何か裏技の類のレジストリ操作をし
たとか…。

----------------------------------------
 あと他にオプションで何か変化があるかもしれないとしたら、「設定・秀丸エ
ディタの動作環境」の「トラブル対策」ページの「その他のトラブル対策...」
の中にある、「秀丸エディタ固有のヒープを使う」というのがあります。これを
ONにすると、結果としてメモリ不足が起きにくくなるかもしれないですけども…。
ただし、ここのオプションをONにしても同じでしたら、またOFFに戻していただ
いた方が無難です。

 ということでどうでしょ?

 あと僕の方でなんとかするとしたら、具体的にそのとき確保しようとしたメモ
リ量とか、その瞬間のメモリ使用状況を表示させるとかって対処は可能かと思い
ます。例えばそこに表示された「確保しようとしたメモリ量」が特別異常な量で
したら、そういう異常な量のメモリを確保しようとしたこと自体がバグというこ
とになります。

[ ]
RE:37689 メモリが足りない?No.37691
秀まるお2 さん 10/01/24 14:49
 
>  あと僕の方でなんとかするとしたら、具体的にそのとき確保しようとしたメモ
> リ量とか、その瞬間のメモリ使用状況を表示させるとかって対処は可能かと思い
> ます。

 メモリ不足のエラーになった時に,詳しい状況も出力するように直してみまし
た。さらに、実は秀丸メールの場合だと、テキストデータをクリップボードにコ
ピーする時に、普通は元データの2倍程度のメモリを使う所が、4倍のメモリを
消費するような作りになっています。これを、もしもメモリ不足が起きたと思わ
しき場合は2倍だけ消費して処理を進めるように直してみます。

 (自動折り返し禁止状態をクリップボードに入れるのを省略すると2倍程度で
済みますので。)
 (2倍必要なのは、ユニコードに変換して入れるためです)

 次のβ版からそうしてみます。

[ ]
RE:37691 メモリが足りない?No.37692
Yossi さん 10/01/24 17:37
 
>  とりあえずですが、秀丸メールの「ヘルプ・秀丸メールのバージョン情報/送
> 金登録...」を実行して、そこの右下にある「メモリ使用量計算」を押して出て
> くるMemoryUse=XXXXMBの値を教えていただくと、秀丸メールが具体的にどのくら
> いメモリを食っているのか分かると思います。

起動直後で  MemoryUse=15MB HeapUse=366KB/209KB です。
タスクマネージャでは起動直後の TuruKame.exe が 15,760KB の消費でした。


>  他に考えられる原因としてですが、もしかして何らかの理由で、1プロセス当
> たりで使用出来るメモリ量が何らかの理由で制限されてしまってて、それでメモ
> リ不足が発生する、ということがあるのかもしれないです。例えばWindowsを高
> 速化するとかいううたい文句のソフトとか、何か裏技の類のレジストリ操作をし
> たとか…。

これについては最近 アイ・オー・データのマッハドライブと言うソフトを SSD延
命とパフォーマンスアップを目的に導入しましたので犯人かなと疑ったのですが
動作を停止させても同じ結果でした。


>  あと他にオプションで何か変化があるかもしれないとしたら、「設定・秀丸エ
> ディタの動作環境」の「トラブル対策」ページの「その他のトラブル対策...」
> の中にある、「秀丸エディタ固有のヒープを使う」というのがあります。これを
> ONにすると、結果としてメモリ不足が起きにくくなるかもしれないですけども…。
> ただし、ここのオプションをONにしても同じでしたら、またOFFに戻していただ
> いた方が無難です。

試しましたが効果ありませんでしたので元に戻しました。

[ ]
RE:37692 メモリが足りない?No.37693
Yossi さん 10/01/24 17:44
 
ついでながら、問題の起きるメールを メールデータを保存している
フォルダから直接秀丸エディタで開いて Ctrl+A → Ctrl+C の
操作では全く問題がありません


[ ]
RE:37693 メモリが足りない?No.37694
秀まるお2 さん 10/01/25 09:26
 
 先ほどV5.33β2をアップロードしたので、それで試してみて欲しいです。

 エラーになるとしても、一応エラーについての詳しい情報が画面上に出てくる
ようになってるので、その内容を教えていただければ何か解決のヒントが分かる
かなぁと思います。

32bit版:
http://hide.maruo.co.jp/software/bin/hmmail533b2_signed.exe

64bit版:
http://hide.maruo.co.jp/software/bin/hmmail533b2_x64_signed.exe

[ ]
RE:37694 メモリが足りない?No.37695
Yossi さん 10/01/25 10:55
 
対応ありがとうございます。

>32bit版:
>http://hide.maruo.co.jp/software/bin/hmmail533b2_signed.exe

を試してみました。
以下の内容のエラーダイアログが表示されました。

確保仕様したメモリサイズ=14476938KByte
発生した場所(行番号)=1309
現在のメモリ使用量=18MByte
エラーコード=0

できれば上記の情報をコピペ可能なコントロールに
表示していただけると引用が楽&確実です m(_ _)m


[ ]
RE:37695 メモリが足りない?No.37696
Yossi さん 10/01/25 11:26
 

>確保仕様したメモリサイズ=14476938KByte


確保しようとしたメモリサイズ=14476938KByte

14GBって・・・(汗)

[ ]
RE:37696 メモリが足りない?No.37697
秀まるお2 さん 10/01/25 11:49
 
 確保しようとしたメモリサイズがおかしいようですけど、なぜそうなってしま
うのか…。

 とにかく、何か計算ミスしてるようです。

 原因を探してみます。

[ ]
RE:37697 メモリが足りない?No.37698
Yossi さん 10/01/25 12:01
 
> 確保しようとしたメモリサイズがおかしいようですけど、なぜそうなってしま
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
> 原因を探してみます。

そのメールの内容なのですが
これは、私が管理しているメールサーバにリモートで入って
その中からログを sendmail コマンドで送ったものです。
なので、その中にはメールアドレスを大量に含んでいます。
<> などの記号も多いです。
ただし2バイト文字はありません
何かの参考になれば幸いです。

[ ]
RE:37697 メモリが足りない?No.37699
秀まるお2 さん 10/01/25 12:08
 
 すみません。計算ミスしてたんじゃなくて、表示上のミスがありました。

 確保しようとしたメモリサイズは「14476938バイト」で、ほぼ13.8メガバ
イトということになって、計算がちゃんと合いました。

 焦りました…

 で、エラーになったのは、実はメモリを確保しようとしたタイミングではなく
て、SetClipboardDataという関数呼び出しのタイミングでして、つまり、13.
8メガバイトのデータをクリップボードに入れようとしたら、クリップボードに
入らなかった、ということのようです。

    SetClipboardData( CF_UNICODETEXT, hGlobal )

 とやった時の返り値がNULLになっているようでして、その後GetLastError()関
数呼び出ししてもエラーコード0が返ってるだけで、いまいち理由が分かりませ
ん。

 何か、クリップボードに関係した常駐ソフト類をお使いで、そのソフトが関係
してエラーになってるということがあるかもしれませんが…。
 (秀丸エディタで成功するということなら別かもしれませんが)

 あと考えられる原因としては、何かセットしようとしたデータに不正な文字と
かがあって拒否されるとかってことがあるのかもしれませんけども…。そういう
可能性も調べてみようかなぁと思います。

[ ]
RE:37699 メモリが足りない?No.37700
Yossi さん 10/01/25 12:36
 
> 確保しようとしたメモリサイズは「14476938バイト」で、ほぼ13.8メガバ
>イトということになって、計算がちゃんと合いました。

でしたか、要求メモリの計算間違いかと思ってしまいました。


> 何か、クリップボードに関係した常駐ソフト類をお使いで、そのソフトが関係
>してエラーになってるということがあるかもしれませんが…。
> (秀丸エディタで成功するということなら別かもしれませんが)

クリップボードを監視するようなソフトは入れていないです。
それと、前にも書きましたが、問題の起きるメールを メールデータを
保存しているフォルダから直接秀丸エディタで開いて Ctrl+A → Ctrl+C
の操作では全く問題がありません

[ ]
RE:37700 メモリが足りない?No.37701
秀まるお2 さん 10/01/25 12:52
 
 クリップボードにセットしようとしてるデータの中身がおかしいと、Windows
側から拒否されてしまう、ということがあるのかもしれません。

 何か文字化けしてる部分とか無いですかね。
 (8メガバイトものデータを全部目で見て調べる訳にもいかないですが)

> それと、前にも書きましたが、問題の起きるメールを メールデータを
> 保存しているフォルダから直接秀丸エディタで開いて Ctrl+A → Ctrl+C
> の操作では全く問題がありません

 秀丸エディタで開く時に、何か「認識エラー」とかが出たってことも無いんで
すよね。何か文字化けしたデータがあると、秀丸エディタの場合は「認識エ
ラー」とかの類のエラーが出て、自動的に化けた部分を修復して読み込むので、
それで結果としてクリップボードにセット出来るのかなぁと思ったりしますが。

 とりあえず、クリップボードにセットしようとして失敗する事例みたいなのを
探してみたり、あるいは失敗しそうなテストデータを作ってみる等のテストをし
てみます。

[ ]
RE:37701 メモリが足りない?No.37702
Yossi さん 10/01/25 13:18
 
> 秀丸エディタで開く時に、何か「認識エラー」とかが出たってことも無いんで
>すよね。何か文字化けしたデータがあると、秀丸エディタの場合は「認識エ
>ラー」とかの類のエラーが出て、自動的に化けた部分を修復して読み込むので、
>それで結果としてクリップボードにセット出来るのかなぁと思ったりしますが。

秀丸エディタで開く際には何のメッセージもなく普通に開けます。

問題のファイルの 先頭行は以下のようになっていますが

! r:0 f:0 u:0 t:2010012321420201

!の前に制御コード 0x0C が入っており小さく CL と表記されています
関係ないですねぇ・・

[ ]
RE:37702 メモリが足りない?No.37703
秀まるお2 さん 10/01/25 13:29
 
 何度も済みませんが、あと1つだけテストお願いしたいです。

 そのメールとは別に、例えばメール本文に同じような半角英文字の羅列が10
メガバイトくらい続くメールを作って、それをクリップボードにコピーしたらど
うか試してみて欲しいです。

 具体的には、

 1.「新規メール」でメール作成
 2.メール本文の所に適当に半角英文字を入力&コピペしていって、
   メニューバー右端の「XXXXバイト」の所が10メガバイトくらいになる
   まで本文を増殖させる。
 3.「ファイル・草稿に保存」とする。
 4.エディタ・ウィンドウはとりあえず閉じる。
 5.草稿フォルダのメールを選択して、「すべて選択」、「コピー」を
   実行してみる。

 です。もしそれでエラーにならないとしたら、問題のメール本文の場合に限っ
てエラーになるということで、つまり、その中身が問題ということになります。

 もしも上記手順でもエラーになるとしたら、メール本文の中身とは関係なく、
サイズが大きいと必ずエラーになる、ということだと思います。

 どっちか分かると、それに限定した調査が可能となって大変助かります。

[ ]
RE:37703 メモリが足りない?No.37704
Yossi さん 10/01/25 13:47
 
> そのメールとは別に、例えばメール本文に同じような半角英文字の羅列が10
>メガバイトくらい続くメールを作って、それをクリップボードにコピーしたらど
>うか試してみて欲しいです。
>
> 具体的には、
>
> 1.「新規メール」でメール作成
> 2.メール本文の所に適当に半角英文字を入力&コピペしていって、
>   メニューバー右端の「XXXXバイト」の所が10メガバイトくらいになる
>   まで本文を増殖させる。
> 3.「ファイル・草稿に保存」とする。
> 4.エディタ・ウィンドウはとりあえず閉じる。
> 5.草稿フォルダのメールを選択して、「すべて選択」、「コピー」を
>   実行してみる。
>


やってみました。

0123456789abcdefghijklmnopqrstuvwxyz
を延々と繰り返す本文ですが

こちらでもエラーとなりました。

確保しようとしたメモリサイズ=22985602KByte
発生した場所(..)=1309
現在のメモリ使用量=18MByte
エラーコード=0



[ ]
RE:37704 メモリが足りない?No.37705
秀まるお2 さん 10/01/25 14:38
 
 テストありがとうございます。ということは、メール本文の中身に関係なく、
ある程度以上のサイズは、なぜか秀丸メールからはクリップボードに入れること
が出来ない、ということなのかなぁと思います。

 秀丸メールだとダメなのは、たまたま秀丸メールが秀丸エディタよりも多くの
メモリを消費して動作してるので、それで限界が小さめに現れる、ということか
もしれないですけども…。例えば秀丸エディタでも、20メガとかあるとダメだ
ったりするかもしれないですが…。


--------------------------------------
 あと秀丸メールで何かするとしたら、クリップボードにデータをセットするの
に失敗したら、CF_UNICODETEXTでセットするのはあきらめて、代わりにCF_TEXT
でセットする、という作戦がありますけども。

 CF_TEXTでセットすると、半角英数字だけの場合ならデータサイズが半分に減
ります。

 そういう作戦の処理を入れてみます。

[ ]
RE:37704 メモリが足りない?No.37706
秀まるお2 さん 10/01/25 14:43
 
 あと、エラーコードの出し方も間違ってました。SetClipboardData呼び出しし
てからすぐにGetLastError()してるんじゃなくて、GlobalFreeして
CloseClipboardしてからGetLastError()呼び出してしてるので、それでエラー
コードが0と出てしまうのでした。

 これも修正させていただきます。

[ ]
RE:37706 メモリが足りない?No.37707
秀まるお2 さん 10/01/25 19:30
 
 ということでまたβ版をアップロードさせていただきました。

32bit版:
http://hide.maruo.co.jp/software/bin/hmmail533b3_signed.exe

 これだとちゃんとエラーコードも出て、しかもCF_TEXT形式で再試行出来ます。

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

 これでもダメだとすると、あとは表示されるエラーコードを教えていただいて、
それで改善策を考えないとダメではありますが、やはり何か、Windows環境か、
または他のソフトによる影響とかってことがあって、それでクリップボードにう
まくデータがセット出来ないって可能性が高いような気がしますけども…。

 他にもパソコン(出来ればプレーンなWindowsに近いマシン)があれば、それ
でも試していただけると、たしかに特定のマシンに限ってダメってことが確認い
ただけるんじゃないかなぁと思ったりします。

[ ]
RE:37707 メモリが足りない?No.37708
Yossi さん 10/01/25 21:38
 
迅速な対応ありがとうございます。

> ということでまたβ版をアップロードさせていただきました。
>
>32bit版:
>http://hide.maruo.co.jp/software/bin/hmmail533b3_signed.exe
>
> これだとちゃんとエラーコードも出て、しかもCF_TEXT形式で再試行出来ます。
>
> ということでお願いします。

今回の版ですと元々エラーが出たメール (7069.9K ← 秀丸メールのSize表記)
だとサクっとコピーできてしまいました。

ただ、先回テスト用に作った草稿フォルダにある
メール (11217.2K ←   秀丸メールのSize表記)
ではとりあえずエラーが出ますが CF_TEXT形式で再試行.. でコピーできました。

[ ]
RE:37707 メモリが足りない?No.37710
Yossi さん 10/01/25 22:29
 
> 他にもパソコン(出来ればプレーンなWindowsに近いマシン)があれば、それ
>でも試していただけると、たしかに特定のマシンに限ってダメってことが確認い
>ただけるんじゃないかなぁと思ったりします。


同じPCは デュアルブートで Windows Vista Ultimate(x64)が入って
いますが、そちらで試してみました。

結果、 5.20 / 5.33β3 共に問題なくコピーできました。
共に秀丸メールは(x86)版です。
ただ、こちらの環境には秀丸エディタは(x64)を入れてます。

でもどうも今回の症状は固有の問題っぽいですね、とりあえず重大な
障害ではありませんので 5.33β3で導入していただいたロジックを
今後の正式リリースに含めていただけると嬉しいかなとおもいます。

[ ]
RE:37710 メモリが足りない?No.37712
秀まるお2 さん 10/01/26 09:07
 
 今回の修正は今後の正式版にも入れさせていただきます。

[ ]