FIX: Повторне завантаження і вивантаження Mtxdm.dll викликає витік 1 МБ віртуальної пам'яті

Переклади статей Переклади статей
Номер статті: 232351
Розгорнути все | Згорнути все

На цій сторінці

ОЗНАКИ

Коли завантаження і вивантаження Mtxdm.dll в циклі, 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 або робочої станції 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, видання сервера терміналів. Щоб отримати додаткові відомості, клацніть номер статті для перегляду статті в на Microsoft Knowledge Base:
152734 Як отримати найновіший пакет оновлень для Windows NT 4.0

СТАН

Microsoft має підтвердила існування цієї неполадки у продуктах Майкрософт, перелічених на початку цієї статті. Цю проблему було усунуто в Windows NT Server версії 4.0, термінал сервер видання служба Pack 6.

ДОДАТКОВІ ВІДОМОСТІ

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

Примітка: Щоб отримати виправлення, зверніться представник служби підтримки клієнтів продуктів корпорації Майкрософт. Будь ласка, дивіться у розділі цієї статті для отримання додаткової інформації.
  1. Закриття або припинення будь-які програми або застосунок-служба, які використовують Mtxdm.dll. Це може включати Internet Information Server (IIS), сервер транзакцій корпорації Майкрософт (МТС), Microsoft розподілених транзакцій координатор (DTC) та будь-яких ODBC або ADO додатків.
  2. Завантажити виправлення (051099a.exe) на тимчасовий каталог і запустити його, щоб витягти такі файли:
    • Mmtxdm.DLL
    • README. txt
  3. Знайдіть і перейменуйте поточної версії Mtxdm.dll, який повинен бути у \Winnt\System32 папці для комп'ютерів із Windows NT а у \Windows\System папці для комп'ютерів із Windows 9 х.
  4. Скопіювати інсталяції версії Mtxdm.dll в тому ж місці і перезавантажте служби та застосунки.

Відтворити поведінку

Створення C/c + + консольного застосування за допомогою наступного коду. Виконання цієї програми, а за допомогою монітора продуктивності для перегляду віртуального байтів для застосування.

Примітка: цей зразок коду використовує джерело даних ODBC, який підключається до Oracle серверна частина, тому що драйвер Microsoft Oracle ODBC завантажує Mtxdm.dll, і більш легко демонструє проблема.
   #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 - Востаннє переглянуто: 13 червня 2012 р. - Редакція: 3.0
Ключові слова: 
kbqfe kbhotfixserver kbbug kbfix kbmdac210fix kbmts200fix kbsdkodbc351fix kbvirtualmem kbmt KB232351 KbMtuk
Машинний переклад
УВАГА! Цю статтю переклала програма машинного перекладу Microsoft, а не людина. Корпорація Microsoft пропонує вам як машинні переклади, так і переклади фахівців, щоб Ви мали доступ до всіх статей бази знань рідною мовою. Проте стаття, яку переклав комп’ютер, не завжди бездоганна. Вона може містити лексичні, синтаксичні або граматичні помилки. Так само помиляється іноземець, спілкуючись вашою рідною мовою. Корпорація Microsoft не несе відповідальність за жодні неточності, помилки або шкоду, завдану неправильним перекладом змісту або його використанням з боку користувачів. Крім того, корпорація Microsoft часто оновлює програму машинного перекладу.
Клацніть тут, щоб переглянути цю статтю англійською мовою: 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