FIX: Memuat ulang dan membongkar Mtxdm.dll menyebabkan kebocoran kehabisan memori Virtual 1 MB

PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.

232351
Artikel ini telah diarsipkan. Artikel ditawarkan dalam bentuk "apa adanya" dan tidak akan dapat diperbarui lagi.
Gejala
Ketika pemuatan bongkar Mtxdm.dll dalam sebuah loop, 1 MB kebocoran di kehabisan memori virtual terlihat dengan setiap perulangan melalui loop.

Hal ini kemungkinan besar terjadi pada aplikasi yang menggunakan ODBC connection pooling dan membuat ulang sambungan dan pemutusan dari backend database, atau ODBC aplikasi yang membuat banyak koneksi dan pemutusan untuk Oracle backend.
Penyebab
Kebocoran di kehabisan memori virtual adalah disebabkan oleh panggilan untuk TerminateThread() dalam Mtxdm.dll.

Ketika koneksi penggabungan digunakan dalam aplikasi ODBC, Dispenser Manager (Mtxdm.dll) dimuat untuk mengelola koneksi kolam renang, yang ditangani oleh thread pekerja yang dimulai dalam Mtxdm.dll.

Ketika aplikasi berakhir, thread pekerja tewas oleh panggilan untuk TerminateThread(), yang tidak akan Bersihkan dan bebas 1 MB kehabisan memori dialokasikan untuk thread pekerja tumpukan.

Perilaku ini sama dapat dilihat ketika membuat ulang sambungan dan pemutusan ke server database Oracle, karena pengandar Microsoft Oracle ODBC beban Mtxdm.dll apakah koneksi penggabungan sedang digunakan atau tidak.
Pemecahan masalah
Untuk mengatasi masalah ini, Dapatkan Service Pack terbaru untuk Windows NT 4.0 atau pemutakhiran software individu. Untuk informasi tentang memperoleh Service Pack terbaru, silahkan pergi ke:
Untuk informasi tentang mendapatkan update software individu, hubungi Layanan Dukungan Produk Microsoft. Untuk daftar lengkap nomor telepon Layanan Dukungan Produk Microsoft dan informasi mengenai biaya dukungan, silakan pergi ke alamat penyuratan berikut di World Wide Web:

Windows NT Server atau Workstation 4.0

Untuk mengatasi masalah ini, Dapatkan Service Pack terbaru untuk Windows NT 4.0 atau pemutakhiran software individu. Untuk informasi tentang memperoleh Service Pack terbaru, silahkan pergi ke:
Untuk informasi tentang mendapatkan update software individu, hubungi Layanan Dukungan Produk Microsoft. Untuk daftar lengkap nomor telepon Layanan Dukungan Produk Microsoft dan informasi mengenai biaya dukungan, silakan pergi ke alamat penyuratan berikut di World Wide Web:

Windows NT Server 4.0, Terminal Server Edition

Untuk mengatasi masalah ini, Dapatkan Service Pack terbaru untuk Windows NT Server 4.0, Terminal Server Edition. Untuk informasi tambahan, klik nomor artikel berikut ini untuk melihat artikel diPangkalan Pengetahuan Microsoft:
152734 Cara mendapatkan Service Pack Windows NT 4.0

Status
Microsoft telah mengkonfirmasi bahwa ini merupakan masalah di dalam produk Microsoft yang didaftar pada awal artikel ini. Masalah ini pertama kali dikoreksi pada Windows NT Server versi 4.0, Terminal Server Edition Service Pack 6.

INFORMASI LEBIH LANJUT

Instalasi manual perbaikan terbaru 051099a

Catatan: Untuk mendapatkan perbaikan terbaru ini, Anda harus menghubungi Layanan Dukungan Produk Microsoft. Silakan lihat bagian pemecahan masalah artikel ini untuk informasi lebih lanjut.
  1. Menutup atau berhenti setiap aplikasi atau layanan yang menggunakan Mtxdm.dll. Ini mungkin termasuk Internet Information Server (IIS), Microsoft transaksi Server (MTS), Microsoft didistribusikan transaksi Koordinator (DTC), dan setiap ADO atau ODBC aplikasi.
  2. Men-download hotfix (051099a.exe) ke direktori sementara dan menjalankannya untuk mengekstrak file-file berikut:
    • Mmtxdm.dll
    • Readme.txt
  3. Cari dan mengubah versi Mtxdm.dll, yang harus dalam folder \Winnt\System32 untuk Windows NT komputer, dan dalam folder \Windows\System untuk Windows 9 x komputer.
  4. Salin versi perbaikan terbaru dari Mtxdm.dll ke lokasi yang sama, dan me-restart layanan dan aplikasi.

Langkah-langkah untuk mereproduksi perilaku

Membuat aplikasi konsol C/c ++ yang menggunakan kode berikut. Menjalankan aplikasi ini sewaktu menggunakan Monitor kinerja untuk melihat Virtual byte untuk aplikasi.

Catatan: contoh kode menggunakan ODBC data sumber yang terhubung ke Oracle backend, karena pengandar Microsoft Oracle ODBC beban Mtxdm.dll, dan lebih mudah menunjukkan masalah.
   #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);	   }   }				
kebocoran kehabisan memori virtual oracle mtxdm.dll odbc connection pooling exitprocess putuskan 1 MB 2320

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 232351 - Tinjauan Terakhir: 01/10/2015 11:59:50 - Revisi: 5.0

  • kbnosurvey kbarchive kbqfe kbhotfixserver kbbug kbfix kbmdac210fix kbmts200fix kbsdkodbc351fix kbvirtualmem kbmt KB232351 KbMtid
Tanggapan