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

ВАЖЛИВО! Ця стаття перекладена засобами машинного перекладу Microsoft. Статтю можна редагувати в середовищі Community Translation Framework (CTF). Щоб якомога швидше перекласти всі статті у своїй базі знань різними мовами, компанія Microsoft не лише звертається до професійних перекладачів, але й вдається до машинного перекладу, який потім редагується спільнотою. Такі статті можуть містити лексичні, синтаксичні та граматичні помилки. Microsoft не несе відповідальності за будь-які неточності, помилки або збитки, до яких може призвести неправильний переклад статей або їх використання. Докладніше про CTF див. на веб-сторінці http://support.microsoft.com/gp/machine-translation-corrections/uk-ua.

232351
Цю статтю переведено до архіву. Вона доступна у версії "як є" та більше не оновлюватиметься.
Ознаки
Коли завантаження і вивантаження Mtxdm.dll в рамках петлі, 1 МБ витік в віртуальної пам'яті розглядається з кожної ітерації через петлі.

Це, швидше за все, відбуваються в застосунків, що використовують з ODBC Групування підключень і роблять повторне підключення і перебої з базою даних бекенда або ODBC додатків, які роблять багато з'єднань і відключень для Oracle-бекенда.
причина
Витік в віртуальної пам'яті викликано заклик до TerminateThread() в Mtxdm.dll.

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

Коли програму, закінчується, робочий потік убив заклик до TerminateThread(), яка не буде очищення і безкоштовний 1 МБ пам'яті для стека робочий потік.

Цей же поведінку можна побачити при прийнятті повторне підключення і відключень до сервера бази даних Oracle, оскільки Microsoft Oracle ODBC драйвер завантажується Mtxdm.dll чи організації пулу підключень в даний Вільний час використовується або не.
Розв'язанн
Щоб вирішити цю проблему, отримайте найновіший пакет оновлень для Windows NT 4.0 або оновлення окремих програмного забезпечення. За інформацією про отримання найновішого пакета оновлень будь ласка, зверніться до:
За інформацією про отримання окремого програмного забезпечення оновлення зверніться до представник служби підтримки клієнтів продуктів корпорації Майкрософт. Повний список телефонів представник служби підтримки клієнтів продуктів корпорації Майкрософт та інформація про технічної підтримки будь ласка перейдіть на наступну адресу веб:

Windows NT Server або робочої станції 4.0

Щоб вирішити цю проблему, отримайте найновіший пакет оновлень для Windows NT 4.0 або оновлення окремих програмного забезпечення. За інформацією про отримання найновішого пакета оновлень будь ласка, зверніться до:
За інформацією про отримання окремого програмного забезпечення оновлення зверніться до представник служби підтримки клієнтів продуктів корпорації Майкрософт. Повний список телефонів представник служби підтримки клієнтів продуктів корпорації Майкрософт та інформація про технічної підтримки будь ласка перейдіть на наступну адресу веб:

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 транзакцій (МТС), 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);	   }   }				
віртуальна пам'ять витік oracle mtxdm.dll odbc підключення організації пулу exitprocess відключення 1 МБ 2320

Попередження. Цю статтю переведено автоматично

Властивості

Ідентифікатор статті: 232351 – останній перегляд: 01/10/2015 11:59:54 – виправлення: 5.0

  • kbnosurvey kbarchive kbqfe kbhotfixserver kbbug kbfix kbmdac210fix kbmts200fix kbsdkodbc351fix kbvirtualmem kbmt KB232351 KbMtuk
Зворотний зв’язок