Khắc phục: Lặp đi lặp lại tải và lấy Mtxdm.dll gây ra 1 MB rò bộ nhớ ảo

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

232351
Bài viết này đã được lưu trữ. Bài viết được cung cấp "nguyên trạng" và sẽ không còn được cập nhật nữa.
Triệu chứng
Khi tải và xếp dỡ Mtxdm.dll trong một vòng lặp, một rò rỉ 1 MB bộ nhớ ảo được xem với tất cả lặp thông qua các vòng lặp.

Điều này là rất có thể xảy ra trong các ứng dụng đó đang sử dụng một kết nối ODBC tổng hợp và đang làm cho các kết nối lặp đi lặp lại và disconnections từ bộ máy cơ sở dữ liệu phụ trợ, hoặc các ứng dụng ODBC làm cho nhiều kết nối và các disconnections để một phụ trợ Oracle.
Nguyên nhân
Sự rò bộ nhớ ảo được gây ra bởi một cuộc gọi đến TerminateThread() trong Mtxdm.dll.

Khi kết nối tổng hợp được sử dụng trong một ứng dụng ODBC, người quản lý Dispenser (Mtxdm.dll) được nạp để quản lý hồ bơi kết nối được xử lý bởi một thread công nhân Bắt đầu trong vòng Mtxdm.dll.

Khi các ứng dụng kết thúc, sợi công nhân bị giết bởi một cuộc gọi đến TerminateThread(), mà sẽ không Dọn sạch và miễn phí 1 MB bộ nhớ được cấp phát cho chủ đề công nhân ngăn xếp.

Hành vi tương tự này có thể được nhìn thấy khi thực hiện lặp đi lặp lại các kết nối và disconnections đến một máy chủ bộ máy cơ sở dữ liệu Oracle, bởi vì trình điều khiển Microsoft Oracle ODBC tải Mtxdm.dll cho dù kết nối tổng hợp đang được sử dụng hay không.
Giải pháp
Để giải quyết vấn đề này, có được gói bản ghi dịch vụ mới nhất cho Windows NT 4.0 hoặc các cập nhật phần mềm riêng. Thông tin về việc thu thập các gói bản ghi dịch vụ mới nhất, xin vui lòng đi đến:
Thông tin về việc thu thập các cập nhật phần mềm riêng, liên hệ với bản ghi dịch vụ Hỗ trợ Sản phẩm của Microsoft. Cho một danh sách đầy đủ của Microsoft sản phẩm hỗ trợ bản ghi dịch vụ điện thoại và thông tin về chi phí hỗ trợ, xin vui lòng đi đến địa chỉ sau đây trên World Wide Web:

Windows NT Server hoặc máy trạm 4,0

Để giải quyết vấn đề này, có được gói bản ghi dịch vụ mới nhất cho Windows NT 4.0 hoặc các cập nhật phần mềm riêng. Thông tin về việc thu thập các gói bản ghi dịch vụ mới nhất, xin vui lòng đi đến:
Thông tin về việc thu thập các cập nhật phần mềm riêng, liên hệ với bản ghi dịch vụ Hỗ trợ Sản phẩm của Microsoft. Cho một danh sách đầy đủ của Microsoft sản phẩm hỗ trợ bản ghi dịch vụ điện thoại và thông tin về chi phí hỗ trợ, xin vui lòng đi đến địa chỉ sau đây trên World Wide Web:

Windows NT Server 4.0, Terminal Server Edition

Để giải quyết vấn đề này, có được gói bản ghi dịch vụ mới nhất cho Windows NT Server 4.0, Terminal Server Edition. Để biết thêm chi tiết, nhấp vào số bài viết sau đây để xem các bài viết trong cácCơ sở kiến thức Microsoft:
152734 Làm thế nào để có được gói bản ghi dịch vụ mới nhất của Windows NT 4.0

Tình trạng
Microsoft đã xác nhận rằng đây là một vấn đề trong các sản phẩm của Microsoft được liệt kê ở đầu của bài viết này. Vấn đề này lần đầu tiên được sửa chữa trong Windows NT Server Phiên bản 4.0, Terminal Server Edition Service Pack 6.

THÔNG TIN THÊM

Hướng dẫn sử dụng cài đặt chuyên biệt Hotfix 051099a

Lưu Ý: Để có được hotfix này, bạn phải liên hệ với bản ghi dịch vụ Hỗ trợ Sản phẩm của Microsoft. Xin xem ñoaïn độ phân giải của bài viết này cho biết thêm thông tin.
  1. Đóng hoặc ngăn chặn bất kỳ ứng dụng hoặc bản ghi dịch vụ mà đang sử dụng Mtxdm.dll. Điều này có thể bao gồm Internet Information Server (IIS), Microsoft giao dịch máy chủ (MTS), Microsoft phân phối giao dịch điều phối viên (DTC), và bất kỳ ứng dụng ADO hoặc ODBC.
  2. Tải xuống hotfix (051099a.exe) vào một mục tin thư thoại tạm thời bật lên và chạy nó để giải nén các tập tin sau đây:
    • Mmtxdm.dll
    • Readme.txt
  3. Xác định vị trí và đổi tên Phiên bản hiện tại của Mtxdm.dll, mà nên trong mục tin thư thoại \Winnt\System32 cho các máy tính Windows NT, và trong mục tin thư thoại \Windows\System cho các máy tính Windows 9 x.
  4. Sao chép bản hotfix của Mtxdm.dll vào cùng một vị trí, và khởi động lại bản ghi dịch vụ và các ứng dụng của bạn.

Các bước để tạo lại hành vi

Tạo ra một ứng dụng giao diện điều khiển C/c ++ bằng cách sử dụng đoạn mã sau. Chạy ứng dụng này trong khi sử dụng giám sát hiệu suất để xem ảo byte cho các ứng dụng.

Lưu Ý: mẫu mã này sử dụng một nguồn dữ liệu ODBC kết nối với một phụ trợ Oracle, bởi vì trình điều khiển Microsoft Oracle ODBC tải Mtxdm.dll, và nhiều hơn nữa dễ dàng chứng minh vấn đề.
   #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);	   }   }				
bộ nhớ ảo rò rỉ oracle mtxdm.dll odbc kết nối pooling exitprocess ngắt kết nối 1 MB 2320

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 232351 - Xem lại Lần cuối: 01/10/2015 11:59:54 - Bản sửa đổi: 5.0

  • kbnosurvey kbarchive kbqfe kbhotfixserver kbbug kbfix kbmdac210fix kbmts200fix kbsdkodbc351fix kbvirtualmem kbmt KB232351 KbMtvi
Phản hồi