2012-02-23 43 views
8

để bắt lỗi cắt ngắn con trỏ trong 64 bit, tôi đã thêm đoạn mã được đề cập here có bộ nhớ dưới 4GB cho nên allocs ở trên 32 bit. Trong một ứng dụng thử nghiệm MFC x64, tôi gọi chức năng đặt trước điều đầu tiên trong InitInstance(). sau đó tôi đã thêm một nút mà chỉ đơn giản thực hiện:Lỗi FileDialog khi đáy 4GB đầy đủ

CFileDialog dlg(TRUE); 
dlg.DoModal(); 

Calling DoModal cuối cùng bị vỡ đâu đó với một callstack trong "không có đất Mans":

> 000000018000163b() 
    0000000100000024() 
    0000000000000001() 

này không MFC cụ thể kể từ khi tôi có được những hành vi tương tự với tệp .NET FileDialog. Tôi nghĩ rằng đó là một cái gì đó ra khỏi bàn tay của tôi kể từ khi tập tin thực tếDialog xuất hiện một thời gian ngắn và sau đó bị treo. Cảm thấy như một phần mở rộng vỏ hoặc một cái gì đó nhưng tôi không thể có được nơi nó đến từ các cuộc gọi ngăn xếp không phải là giúp đỡ - nhưng tôi muốn tìm hiểu nếu có bất cứ điều gì tôi có thể làm!

Nếu tôi xóa chức năng đặt chỗ đặc biệt, tôi sẽ không gặp phải sự cố nữa.

Khó hiểu!

+5

Vâng, nó đang làm việc, bạn đang bắt lỗi con trỏ. Chỉ cần không có trong mã của bạn. Sử dụng tiện ích AutoRuns của SysInternals để tắt các phần mở rộng của trình bao. –

+0

Điều gì sẽ xảy ra nếu bạn thử cùng một điều với 'GetOpenFileName' (http://msdn.microsoft.com/en-us/library/windows/desktop/ms646927%28v=vs.85%29.aspx)? + Ton site web est down ... – ixe013

+0

Bạn có thể kiểm tra không gian địa chỉ của mô-đun nào xuất hiện trong đó hay là ngăn xếp bị đập vỡ? –

Trả lời

1

Tôi không thể repro sự cố này. Tôi đã tạo ra một dự án 64-bit, thêm 4 GB đặt phòng, và mở một hộp thoại tập tin bên trong nó. Không có sự cố.

Hoặc repro của tôi không phù hợp với bạn hoặc có điều gì đó trên hệ thống của bạn khác. Bạn nên đăng dự án của mình để chúng tôi có thể xóa một trong các biến.

Rất tiếc, tôi không nhớ TppWorkerThread là gì.

Đăng dự án của bạn - tất cả các tệp nguồn, tệp tài nguyên, tệp .vcxproj và tệp .sln. Sau đó chúng ta có thể điều tra.

+0

Bruce mang lại cho tôi một ý tưởng: bạn có chắc chắn không có DLL khác được tải trong quá trình của bạn? Tôi biết nhiều tiện ích mở rộng tự tải trong hộp thoại, chúng có thể là những tiện ích mở rộng. – ixe013

1

Để theo dõi về vấn đề này, chúng tôi phát hiện ra rằng một phần mở rộng vỏ được cài đặt bởi 360 sdk gây ra vấn đề (xeshlext.dll)

+0

Theo dõi riêng của tôi. Chúng tôi đã tìm thấy một dịch vụ nội bộ xung đột với tiện ích mở rộng vỏ 360 và gây ra sự cố. Nâng cấp lên phiên bản mới nhất đã sửa mọi thứ. Xin lỗi vì làm phiền bạn! –

Các vấn đề liên quan