Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


お世話になっております。

■MLへの多重投稿へのお詫び

・普段mail-archive.comで、投稿確認を行っているのですが、いつまで経っても反映されな
かったため何度か投稿してしまいました。

http://nabble.documentfoundation.orgで確認したところ多重投稿になっておりました。
大変申し訳ございませんでした。

■Windows環境のLibreOffice4.0.3.3でmsvcrtdを使用したメモリリークチェックの方法に
ついて

・newまたはmalloc()した行番号の表示ですが、かなり時間が掛かると思われます。
※投稿はかなり先になります。

また、この方法ではoperator newをオーバーライドしている箇所に関しては
メモリリークのチェックができなくなります。
そのため、手間が掛かる割りには効果は薄いかもしれません。

という訳で、Dr.Memoryによるメモリリークのチェック方法を先に検証して
みました。

■Dr.Memoryによるメモリリークチェック結果について

・以下の手順でDr.Memoryによるメモリリークチェックを実施致しましたので、
結果を展開させて頂きます。

◆ステップ1:autogen.shの実行

・--enable-debugを付加して実行します。

◆ステップ2:solenv\gbuild\framework\com_MSC_defs.mkの修正

・-Zi(プログラムデータベースPDBを生成)、 -Oy-(フレームポインタ省略無効)、
-Ob0(関数のインライン展開を無効)を追加。

gb_CFLAGS := \
(中略)
-Zi -Oy- -Ob0 \
(中略)
gb_CXXFLAGS := \
(中略)
-Zi -Oy- -Ob0 \
(以下略)

※-Ziはビルド時のパラメータで指定出来るため実は不要です。

※Dr.Memoryの推奨コンパイラオプションの/MTですが、/MDでも可との事なので
設定していません。

※Dr.Memoryの推奨コンパイラオプションの/EHscを指定すると/clrと共存出来ない
ためcli_ure/source/climaker/climaker_app.cxxのコンパイルに失敗します。
そのため、このオプションは付加していません(デフォルトの/EHaのままにして
あります)。

◆ステップ3:ビルドの実行

・ENABLE_SYMBOLS=trueを付加します。

/opt/lo/bin/make -sr ENABLE_SYMBOLS=true dev-install  2>&1 | tee build`date
+%y%m%d-%H%M`.log

◆ステップ4:Dr.Memoryのインストール

・以下のサイトからインストールします。
https://code.google.com/p/drmemory/downloads/list

※私がインストールしたのはDrMemory-Windows-1.5.1-6.exeです。

◆ステップ5:Dr.Memoryの実行

・コマンドプロンプトから、以下を実行します。

Dr. Memoryインストールディレクトリ\bin\drmemory.exe -show_all_threads
 -callstack_max_frames 500 -- LibreOfficeインストールディレクトリ\solver\wntmsci14.pro
\instal
lation\opt\program\soffice

※-show_all_threadsは子スレッドのリークもチェックするオプションです。

※ -callstack_max_frames はコールスタックの表示最大数です。デフォルトは12
なのですが、LibreOfficeの関数階層は非常に深いため、大きめに設定して
あります(100階層を超える呼び出し階層を見たことがあります)。

※-- の後に起動するプログラムと(必要であれば)引数を渡します。尚引数に日本語を
使うと文字化けして失敗する模様です。

◆ステップ6:LibreOfficeのリークが発生する操作を実行後、終了。

◆ステップ7:Dr.Memoryのログをチェック

・ログはDr.Memoryインストールディレクトリのdrmemory\logs配下にプロセス単位にログが
出力されます。

・results.txtが各プロセスのリーク結果が記載されているドキュメントの様です。


◆Dr.Memoryによるリークチェック結果

・操作内容:LibreOffice4.0.3.3を起動後、何もせずに終了。

・リークチェック結果

soffice.bin:17KB程リークしています。

ERRORS FOUND:
    3626 unique, 25521 total unaddressable access(es)
    67 unique,   264 total uninitialized access(es)
     0 unique,     0 total invalid heap argument(s)
      36 unique,    36 total GDI usage error(s)
     0 unique,     0 total warning(s)
      8 unique,    10 total,  17888 byte(s) of leak(s)
      9 unique,     9 total,  17724 byte(s) of possible leak(s)

soffice.exe: 672バイトリークしています。

ERRORS FOUND:
      0 unique,     0 total unaddressable access(es)
      0 unique,     0 total uninitialized access(es)
      0 unique,     0 total invalid heap argument(s)
      0 unique,     0 total GDI usage error(s)
      0 unique,     0 total warning(s)
      2 unique,     3 total,    672 byte(s) of leak(s)
      0 unique,     0 total,      0 byte(s) of possible leak(s)

※msvcrtdによるリークチェック結果より少ないのは、何らかの理由があるかも
しれませんが、原因は分かりません。

※このリークはバグの可能性があるかもしれませんので、どなたかこの方法で
リークチェックして頂けると助かります。


以上です。

-- 
Unsubscribe instructions: E-mail to discuss+unsubscribe@ja.libreoffice.org
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/ja/discuss/
All messages sent to this list will be publicly archived and cannot be deleted

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.