ИСПРАВИТЬ: Повторяющиеся Загрузка и выгрузка 1 МБ виртуальной памяти Mtxdm.dll причины утечки

Переводы статьи Переводы статьи
Код статьи: 232351
Развернуть все | Свернуть все

В этой статье

Проблема

При загрузке и выгрузке Mtxdm.dll в цикле for, утечка 1 МБ виртуальной памяти отображается с каждой итерации цикла.

Это наиболее вероятны в приложения, использующие группировки подключений ODBC и повторных подключений и отключений из серверной базы данных или приложений ODBC, которые делают много подключений и отключений на центральном Oracle.

Причина

Утечка памяти в виртуальной памяти, вызвана с помощью вызова TerminateThread() в Mtxdm.dll.

При использовании группировки подключений в приложении ODBC управление пул подключений, которое обрабатывается рабочим потоком, запущенной в Mtxdm.dll загружается диспетчер распределитель (Mtxdm.dll).

При завершении приложения рабочий поток отключен путем вызова TerminateThread(), которого не очистить и освободить 1 МБ память, выделенную для стека рабочего потока.

Таким же образом можно увидеть при выполнении повторных подключений и отключений к серверу базы данных Oracle, поскольку загрузки драйвера Microsoft Oracle ODBC Mtxdm.dll ли пул соединений, используется или нет.

Решение

Для решения этой проблемы, получите последний пакет обновления для Windows NT 4.0 или отдельного обновления. Сведения о получении последнего пакета обновления посетите:
Сведения о получении отдельные обновления обратитесь в службу технической поддержки Майкрософт. Полный список телефонов службы поддержки продуктов Майкрософт и информация по условиям обслуживания Пожалуйста, перейдите по следующему адресу в Интернете:
http://support.Microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Windows NT Server или Workstation 4.0

Для решения этой проблемы, получите последний пакет обновления для Windows NT 4.0 или отдельного обновления. Сведения о получении последнего пакета обновления посетите:
Сведения о получении отдельные обновления обратитесь в службу технической поддержки Майкрософт. Полный список телефонов службы поддержки продуктов Майкрософт и информация по условиям обслуживания Пожалуйста, перейдите по следующему адресу в Интернете:
http://support.Microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Система Windows NT Server 4.0, терминалов выпуск сервера

Чтобы устранить эту проблему, получите последний пакет обновления для Windows NT Server 4.0 Terminal Server Edition. Для получения дополнительных сведений щелкните следующий номер статьи в База знаний корпорации Майкрософт:
152734 Как получить последний пакет обновления для Windows NT 4.0

Статус

Корпорация Майкрософт подтверждает, что это проблема в продуктах Microsoft, перечисленных в начале данной статьи. Впервые эта ошибка была исправлена в Windows NT Server версии 4.0, терминалов Server Edition с пакетом обновления 6.

ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ

Ручная установка исправления 051099a

Примечание: Для получения этого исправления необходимо службу технической поддержки корпорации Майкрософт. Можно найти в разделе «Решение» этой статьи для получения дополнительных сведений.
  1. Закрытие или прекращение всех приложений и служб, использующих Mtxdm.dll. Это может включать Internet Information Server (IIS), Microsoft Transaction Server (MTS), координатор распределенных транзакций (DTC) и любые приложения ADO или ODBC.
  2. Загрузите исправление (051099a.exe) во временную директорию и запустите его, чтобы извлечь следующие файлы:
    • Mmtxdm.dll
    • Файл readme.txt
  3. Найдите и переименуйте текущей версии Mtxdm.dll, который должен находится в папке \Winnt\System32 компьютеры под управлением Windows NT и в папке \Windows\System для компьютеров Windows 9 x.
  4. Копировать версию исправления Mtxdm.dll в том же месте и перезапуск служб и приложений.

Действия для воспроизведения поведения

Создание консольного приложения C/C++, с помощью следующего кода. Запустите это приложение при использовании системного монитора для просмотра байт виртуальной памяти для приложения.

ПРИМЕЧАНИЕ: Этот пример кода использует источник данных ODBC, который подключается к серверному Oracle, поскольку Mtxdm.dll загрузки драйвера Microsoft 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);
	   }
   }
				

Свойства

Код статьи: 232351 - Последний отзыв: 4 июня 2011 г. - Revision: 4.0
Ключевые слова: 
kbqfe kbhotfixserver kbbug kbfix kbmdac210fix kbmts200fix kbsdkodbc351fix kbvirtualmem kbmt KB232351 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:232351

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com