秀丸V3.18印刷でメモリリークの可能性?No.13631
山科 さん 02/12/10 22:51
 
こんにちは。お世話になっております。
下記の件、よろしくお願いいたします。
                     山科
---------------
[標題]
秀丸V3.18印刷でメモリリークの可能性?
(ややスキャンダラスな標題で申し訳ない)。

[種別]
報告&相談:不具合?(不審な挙動を示す)

[概要]
秀丸(Ver.3.18)からローカルなインクジェットプリンタへ印刷を行った。
印刷は正常に完了し、正しい印刷結果を得ることができた。しかし、
・印刷時にメモリを多量に消費する。
・印刷処理に使用したメモリが、印刷終了後も解放されていない。
 (印刷処理を行うとコミットチャージが上昇し、印刷後も回復しない)
・印刷印刷の実行が遅い。
 →印刷してから、プリンタ出力まで時間がかかる。
 (スプールに全部溜まってからプリンタにデータが送られているようだ)
という問題が発生した。
 同じ理由で、印刷対象のファイルサイズが大きいと、印刷が完了しない。
秀丸側の印刷処理で仮想メモリを使い切るため、印刷をキャンセルしてOS
をリブートせざるを得なくなるのである。(172KB程度のtextファイル
でこの、リブートせざるを得ない状況が発生した)。

 追記
  ・印刷時にメモリを多量に消費するのみならず、CPU使用率もほぼ100%
   と高い水準となり、1ページ目の印刷がはじまるころまで継続する。

[再現性・頻度]
再現性あり。ほぼ必ず発生する。

[発生環境]
 秀丸Ver.3.18通常版(=浮動小数点版でない)
 秀丸パブリッシャーなし

 Windows 2000 Pro + SP3 (IEは6.0+SP1)
 (※ 主要なHotFixはMS02-068まで適用済。MDACは2.7に更新済)

 ThinkPad s30 2639-4WJ
  メモリ量:128MB(仮想メモリ303MB)
  Disk容量:約8GB(うち約4.5GB空き)
  (HDDを複数パーティションに分けているため製品仕様より小さい)

 日本HP DeskJet 990cxi
  ドライバ:hp deskjet 990c series 4.3.0.0
  接続方法:USB1.1で直に接続

[再現方法]
 秀丸でテキストファイルを開き[ファイル]→[印刷]で印刷を行う。
 ・このときタスクマネージャでCPU負荷とコミットチャージの変化を確認。
 ・また、[スタート]→[設定]→[プリンタ]から、ローカルプリンタを選び、
  スプールの変化を確認。
 ・印刷結果を確認(印刷がいつ開始されるか、にも注意する)

 テスト用textファイルには、例えば秀丸改変履歴を使用すればよい。
 ・WWWブラウザで秀丸の改変履歴のページを表示。全てを選んでCOPY。
  (※私はOpera6.05jpを使用し、
    「秀まるおさんのホームページ−ソフトウェア−秀丸エディタ」
    に掲載されているVer.3.18の改変履歴を表示した。)
 ・秀丸Ver.3.18で新規ファイルを開き、PASTE。
 ・この状態で印刷を実行すればよい。

[印刷設定]
 秀丸
  印刷方式:Windows2000タイプ
  フォント:MSゴシック 10ポイント
  (※フォントサイズが9ポイントや8ポイントなどでも同様の現象あり)
  折り返し文字数:80文字
  (※8ポイントにしてウィンドウ幅に合わせる→122文字としても同様)

 プリンタ設定
  基本設定:印刷品質=エコノ
  各種機能:縦、両面印刷、ブック、自動、
       マージン=印刷範囲に合わせて内容を縮小
       用紙あたりのページ数=2ページ、境界線あり
       HPプレビューなし

[問題の切り分け]
 同じファイルをメモ帳(notepad.exe)で開き、印刷した。
 ・フォントなど、メモ帳側の設定は標準のまま
 ・プリンタ側の設定は、秀丸で印刷した場合と同じ
 その結果は、秀丸のような問題はみられなかった。
 (印刷の開始が早い、メモリ問題もない模様、CPU使用率も100%にはなら
  ず、大雑把に言って20〜80%程度で変動するのみ)

[導入済みの主なソフトウェア(特に断りのない場合は日本語版)]
 Adobe Acrobat 5.05、および Acrobat Reader 5.05、
 TrendMicro ウィルスバスター2003リアルセキュリティ、
 ZoneAlarm無償版 Ver.3.1.395(US版)
 鶴亀メール Ver.2.23、
 英辞郎(TaN氏 PDIC、および SIL IPA93フォントを含む)
 imagine LAN ConfigSafe 2.00.16、
 ThinkPad特有のソフトウェア群
  (Access ThinkPad、ThinkPad Assistant、ThinkPad機能設定、
   ThinkPad ソフトウェア導入支援、IBM AccessConnections、等)、
 松下 SuperDiskユーティリティ、
 PowerQuest PartitionMagic 6.0
 Micco氏 LHMelting
 統合アーカイバプロジェクト 圧縮解凍DLL各種
 RedHat Cygwin環境
 Opera(トランスウェア) Operaブラウザ Ver.6.05jp
 Java J2RE 1.4.1_01、および Java Web Start

[常駐アプリケーション]
 smss.exe
 winlogon.exe
 services.exe
 lsass.exe
 ibmpmsvc.exe       // ThinkPad(電源管理)
 svchost.exe
 spoolsv.exe
 svchost.exe
 QCONSVC.EXE
 regsvc.exe
 MSTask.exe
 Tmntsrv.exe        // ウィルスバスター2003
 vsmon.exe          // ZoneAlam
 WinMgmt.exe
 mspmspsv.exe
 svchost.exe
 Explorer.EXE
 imejpmgr.exe
 tp4serv.exe        // ThinkPadかもしれません
 LTSMMSG.exe
 TPHKMGR.exe        // ThinkPad
 PRPCUI.exe
 TP98TRAY.EXE       // ThinkPad
 QCWLICON.EXE       // ThinkPad
 RunDll32.exe
 TPONSCR.exe        // ThinkPad
 pccguide.exe       // ウィルスバスター2003
 TpScrex.exe        // ThinkPad
 PCCClient.exe      // ウィルスバスター2003
 TMOAgent.exe       // ウィルスバスター2003
 QCTray.exe         // ThinkPad
 internat.exe
 AcroTray.exe       // Acrobat Assistant (AcrobatかReaderか不明)
 AUTOCHK.EXE        // ConfigSafe
 zonealarm.exe      // ZoneAlarm
 Hidemaru.exe
 taskmgr.exe
 TuruKame.exe
 HIDEMARU.EXE
 HIDEMARU.EXE


[補足]
 この問題を追いかけている途中、秀ネットに、次の投稿を発見した。
  http://www.maruo.co.jp/turukame/3/m021125.html#1271

 ウィルスバスターについて、(1)リアルタイムモニタを停止、(2)ウィルス
 バスター自体を停止、のそれぞれの状態について動作確認した。その結果
 いずれの場合も、本報告の現象は発生した。
 (ただし、TrendMicro Outbreak Agentも停止してのテストは未実施)。
  なお、ウィルスバスターのパーソナルファイアウォール、メールスキャ
 ン、Webトラップ、ならびにURLフィルタについては、普段から停止してい
 る。(プロセス、サービスのレベルで停止している)。

以上です。よろしくお願いします。
上記で不足している情報がありましたらご連絡ください。

なお、あまり定期的にアクセスできないことも、あらかじめお詫びしておき
ます。それではよろしくお願いします。どうもありがとうございます。

[ ]
RE:13631 [追加情報]秀丸V3.18印刷で不具No.13639
山科 さん 02/12/11 15:00
 
山科です。下記の件につき、書き漏らした点がありました。

私> [標題]
私> 秀丸V3.18印刷でメモリリークの可能性?

当該の発生環境ですが、
・ファイルシステムはNTFS5である
 ※当該機種の標準はFAT32だが当方ではconvertしてある
・Administrator権限のユーザで実施している
 ※切り分けのためのメモ帳(notepad.exe)を用いたテストも同様
となっております。

それでは、よろしくお願いいたします。
                        山科

[ ]
RE:13631 秀丸V3.18印刷でメモリリークのNo.13646
秀丸担当 さん 02/12/11 18:56
 
>[標題]
>秀丸V3.18印刷でメモリリークの可能性?
>(ややスキャンダラスな標題で申し訳ない)。

この問題は、プリンタドライバの特性と考えられます。

秀丸が秀丸パブリッシャーに対応する際、特定のプリンタドライバに
よって文字を一文字ずつ出力しないと文字が崩れるという問題があっ
たため、印刷では文字を一文字ずつ出力するようにしました。
しかし、また別のプリンタドライバによっては、一文字ずつ出力に適
した処理ができず、極端に遅くなるドライバも存在するようです。
このようなことがないように改善していきたいと思います。

詳細に渡って報告ありがとうございます。
調査が楽になります。

[ ]
RE:13646 秀丸V3.18印刷でメモリリークのNo.13649
秀丸担当 さん 02/12/11 19:08
 
ちなみにMS Pゴシックなどのプロポーショナルフォントに
すると一文字ずつの処理は行わないので、遅くなることはない
と思います。

[ ]
RE:13649 [進展報告]秀丸V3.18印刷で不具No.13665
山科 さん 02/12/12 22:05
 
秀丸担当さん、コメントありがとうございました。

以下、文章の体をなしていませんが、いくつかのメモ。

■1.訂正
 記述にミスリーディングな部分がありました。

私> [概要]
(中略)
私> 秀丸側の印刷処理で仮想メモリを使い切るため、(以下略)

 正確には、メモリを食いつぶしているのは「spoolsv.exe」でした。
 一方的に秀丸が悪者のように読める書き方をして申し訳ございません。
 お詫びいたします。


■2.対処策(リブートせずに、消費されたメモリを回復する方法)
 コントロールパネルの管理ツールからスプーラサービスを停止し再開。
 これでコミットチャージが下がります。リブートせずに対処できます。


■3.最新版での動作
 Ver.3.19が正式リリースされた。動作を確認したところ改善された模様。
 改版履歴に
 ・通常の印刷で特定のプリンタドライバで印刷が遅くなることがあるのを回避
 と書かれている部分に該当かと思います。
 秀丸担当様、素早い対処、どうもありがとうございました。

 Ver.3.18では100KB程度のテキストが、スプール上ではメガバイト程度の
 データになっていました。今回の版ではそのようなことはないようです。

 ただし、印刷完了後もspoolsv.exeがメモリを確保したままなのは相変わ
 らずです。ただし、これは仕様なのかもしれません。他APでの動作やMS社
 のドキュメントは確認しておりません。すみません。
  いずれにせよ、スプーラのサービス再起動で回避できますのでとりあえ
 ず大きな問題とはならないようです。


■4.Ver.3.18でのプロポーショナルフォント指定による回避方法について
 秀丸担当様のお教えくださいましたとおり、プロポーショナルフォントを
 指定して印刷すれば回避できました。
 # ですが非等幅フォントで印刷したプログラムコードはやや読みにくい^_^;

 そして…


■5.Ver.3.18に残る「(編集中のフォント)」で印刷するときの問題?
 次の手順でプロポーショナルフォントでの印刷を行ったときの現象。
 (1) [その他]→[ファイルタイプ別の設定]の[表示]タブでフォント変更。
 (2) [保存しないで更新]を押下。
 (3) [ファイル]→[印刷]を実行。
   このときフォントの指定は「(編集中のフォント)」のままとする。
 この場合は印刷の動作は等幅フォントを指定したときと同様となる。すな
 わち、CPU使用率やメモリ使用量が大きいままでした。
 ※(3)でフォント指定を明示的に行えば本現象は起きませんでした。

 これに関しては、改版履歴をみると

  ●2002/12/05 V3.17-> V3.18
   「印刷で(編集中のフォント)で印刷してもその設定が保存されない
    ことがあるバグ修正」

 とあります。これに関連するのかもしれません。
 さらに、[保存しないで更新]などとしておりますので、このあたりも(手
 順的に)あやしいかもしれません。

何らかのご参考になれば幸いです。

末尾に、改めて素早い対応に感謝いたします。

[ ]
RE:13665 [進展報告]秀丸V3.18印刷で不具No.13675
秀丸担当 さん 02/12/13 18:31
 
>■5.Ver.3.18に残る「(編集中のフォント)」で印刷するときの問題?
> 次の手順でプロポーショナルフォントでの印刷を行ったときの現象。
> (1) [その他]→[ファイルタイプ別の設定]の[表示]タブでフォント変更。
> (2) [保存しないで更新]を押下。
> (3) [ファイル]→[印刷]を実行。
>   このときフォントの指定は「(編集中のフォント)」のままとする。
> この場合は印刷の動作は等幅フォントを指定したときと同様となる。すな
> わち、CPU使用率やメモリ使用量が大きいままでした。

再現させることができました。
Windows2000タイプにおいて印刷ダイアログのオプションのタブを選択して
表示させないとおかしくなることを確認しました。
修正させていただきます。

[ ]