FIX 繰り返しのロードとアンロードの Mtxdm.dll 原因 1 MB の仮想メモリ リークが発生

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:232351
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
読み込みし、ループ内で Mtxdm.dll をアンロードすると、仮想メモリの 1 MB リーク ループを通るたびに見られます。

これは、ODBC 接続プーリングを使用しているし、繰り返し接続し、バックエンドのデータベースから切断を行っているアプリケーションまたは多くの接続および切断するには、Oracle のバックエンドを作成する ODBC アプリケーションで発生する可能性が高いです。
原因
Mtxdm.dll の TerminateThread() への呼び出しによって、仮想メモリでリークが発生を発生します。

ODBC アプリケーションで接続プールを使用すると、ディスペンサー マネージャー (Mtxdm.dll) 内で Mtxdm.dll を開始されてワーカー スレッドによって処理される、接続のプールを管理するために読み込まれます。

アプリケーションを終了すると、クリーンアップしないと、1 MB のワーカー スレッドのスタック用に割り当てられたメモリを解放する TerminateThread() への呼び出しによってワーカー スレッドが終了します。

Mtxdm.dll の Microsoft Oracle ODBC ドライバーを読み込むためこれと同じ動作繰り返し接続と接続解除するには、Oracle データベース ・ サーバが接続プールが使用されているかどうか考えられます。
解決方法
この問題を解決するには、Windows NT 4.0 または個別のソフトウェア更新プログラムの最新の service pack を入手します。最新の service pack の入手方法についてを参照してください。
個々 のソフトウェア更新プログラムの入手方法については、マイクロソフト製品サポート サービスに連絡してください。Microsoft 製品サポート サービスの電話番号とサポート コストに関する情報の完全な一覧については、次のアドレスに、World Wide Web 上で参照してください。

Windows NT サーバーまたはワークステーション 4.0

この問題を解決するには、Windows NT 4.0 または個別のソフトウェア更新プログラムの最新の service pack を入手します。最新の service pack の入手方法についてを参照してください。
個々 のソフトウェア更新プログラムの入手方法については、マイクロソフト製品サポート サービスに連絡してください。Microsoft 製品サポート サービスの電話番号とサポート コストに関する情報の完全な一覧については、次のアドレスに、World Wide Web 上で参照してください。

Windows NT Server 4.0 は、ターミナル サーバーのエディション

この問題を解決するには、Windows NT Server 4.0、Terminal Server Edition の最新の service pack を入手します。詳細については、の資料を参照するには、次の資料番号をクリックして、マイクロソフト サポート技術情報:
152734 Windows NT 4.0 の最新の Service Pack を入手する方法

状況
マイクロソフトは、これでは、この資料の冒頭に記載したマイクロソフト製品の問題であることをしています。 この問題は、最初 Windows NT Server version 4.0 では、ターミナル サーバーのエディションの Service Pack 6 で修正済みです。

詳細について

051099A の修正プログラムの手動インストール

注: この修正プログラムを入手するには、Microsoft 製品サポート サービスを問い合わせてくださいする必要があります。詳細については、この資料の「解決方法」を参照してください。
  1. 閉じるか、アプリケーションまたは Mtxdm.dll を使用しているサービスを停止します。インターネット インフォメーション サービス (IIS) や Microsoft トランザクション サーバー (MTS)、Microsoft 分散トランザクション コーディネーター (DTC)、ADO や ODBC アプリケーションを含めることができます。
  2. 一時ディレクトリに、修正プログラム (051099a.exe) をダウンロードし、実行して次のファイルを抽出します。
    • Mmtxdm.dll
    • Readme.txt
  3. 探しは、\Winnt\System32 フォルダー Windows NT のコンピューターおよび Windows 9 x コンピューターを見つけてすべき Mtxdm.dll の現在のバージョンの名前を変更します。
  4. Mtxdm.dll の修正プログラムのバージョン、同じ場所にコピーして、サービスおよびアプリケーションを再起動します。

問題の再現手順

次のコードを使用して、C および C++ コンソール アプリケーションを作成します。パフォーマンス モニターを使用して、アプリケーションの仮想バイトを表示するときに、このアプリケーションを実行します。

: Mtxdm.dll を Microsoft Oracle ODBC ドライバーを読み込むためこのコード サンプルが Oracle バックエンドへの接続に ODBC データ ソースを使用してより簡単に問題を示します。
   #include        <windows.h>   #include        <stdio.h>   #include        <sql.h>   #include        <sqlext.h>   #include        <assert.h>   #define CK_RT(x) if( x != SQL_SUCCESS && x != SQL_SUCCESS_WITH_INFO)    assert(0)   void main(){       HENV        henv;       HDBC        hdbc;       RETCODE     rc = SQL_SUCCESS;       char        *dsnStr="DSN=OracleServer;UID=scott;pwd=tiger;";       short       rtnLen = 0;       UCHAR       rtnDSN[999] = "";       int         i,x;       for (i=0; i < 100; i++)   	{               rc = SQLAllocEnv(&henv);               CK_RT(rc);               rc = SQLAllocConnect(henv, &hdbc);               CK_RT(rc);               rc = SQLDriverConnect(hdbc,                         NULL,                         (unsigned char *)dsnStr,                         strlen(dsnStr),                         rtnDSN,                         255,                         &rtnLen,                         SQL_DRIVER_NOPROMPT);               CK_RT(rc);               SQLDisconnect(hdbc);               SQLFreeConnect(hdbc);               SQLFreeEnv(henv);	   }   }				
2320 の 1 MB の仮想メモリ リークが oracle mtxdm.dll odbc 接続プーリング exitprocess を切断します。

警告: この記事は自動翻訳されています

プロパティ

文書番号:232351 - 最終更新日: 01/10/2015 11:59:50 - リビジョン: 5.0

  • kbnosurvey kbarchive kbqfe kbhotfixserver kbbug kbfix kbmdac210fix kbmts200fix kbsdkodbc351fix kbvirtualmem kbmt KB232351 KbMtja
フィードバック