2016-02-23 17 views
7

setlocale(LC_ALL, "uk-UA") đôi khi bị treo/deadlocks đối với tôi không rõ lý do. Call stack là:setlocale bị kẹt trên Windows

[email protected]() Unknown 
[email protected]() Unknown 
[email protected]() Unknown 
[email protected]() Unknown 
[email protected]() Unknown 
[email protected]() Unknown 
ucrtbased.dll!__crt_findfile_traits::get_invalid_value(void) Unknown 
ucrtbased.dll!__acrt_lock_and_call<class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> >(enum __acrt_lock_id,class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> &&) Unknown 
ucrtbased.dll!__acrt_lock_and_call<class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> >(enum __acrt_lock_id,class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> &&) Unknown 
ucrtbased.dll!__acrt_lock_and_call<class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> >(enum __acrt_lock_id,class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> &&) Unknown 
ucrtbased.dll!__acrt_lock_and_call<class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> >(enum __acrt_lock_id,class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> &&) Unknown 
ucrtbased.dll!__acrt_lock_and_call<class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> >(enum __acrt_lock_id,class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> &&) Unknown 
ucrtbased.dll!___acrt_can_use_vista_locale_apis() Unknown 
ucrtbased.dll!__expandlocale() Unknown 
ucrtbased.dll!__wsetlocale() Unknown 
ucrtbased.dll!__crt_call_and_cleanup<class <lambda_565169b3e3b494427ce1bebdd17b54ac>,class <lambda_f51fe5fd7c79a33db34fc9310f277369> >(class <lambda_565169b3e3b494427ce1bebdd17b54ac> &&,class <lambda_f51fe5fd7c79a33db34fc9310f277369> &&) Unknown 
ucrtbased.dll!__crt_seh_guarded_call<void>::operator()<class <lambda_0f92d0c5a8007722f95b3b6c71cd8e3e>,class <lambda_321f9d61c14d59ff00145e45db1313e0> &,class <lambda_3298c911d7b53f44106027a7fde9a80a> >(class <lambda_0f92d0c5a8007722f95b3b6c71cd8e3e> &&,class <lambda_321f9d61c14d59ff00145e45db1313e0> &,class <lambda_3298c911d7b53f44106027a7fde9a80a> &&) Unknown 
ucrtbased.dll!__acrt_lock_and_call<class <lambda_321f9d61c14d59ff00145e45db1313e0> >(enum __acrt_lock_id,class <lambda_321f9d61c14d59ff00145e45db1313e0> &&) Unknown 
ucrtbased.dll!__crt_call_and_cleanup<class <lambda_565169b3e3b494427ce1bebdd17b54ac>,class <lambda_f51fe5fd7c79a33db34fc9310f277369> >(class <lambda_565169b3e3b494427ce1bebdd17b54ac> &&,class <lambda_f51fe5fd7c79a33db34fc9310f277369> &&) Unknown 
ucrtbased.dll!__crt_seh_guarded_call<void>::operator()<class <lambda_507d9fd6b66e39451a8852ba73f804a7>,class <lambda_565169b3e3b494427ce1bebdd17b54ac> &,class <lambda_f51fe5fd7c79a33db34fc9310f277369> &>(class <lambda_507d9fd6b66e39451a8852ba73f804a7> &&,class <lambda_565169b3e3b494427ce1bebdd17b54ac> &,class <lambda_f51fe5fd7c79a33db34fc9310f277369> &) Unknown 
ucrtbased.dll!__crt_call_and_cleanup<class <lambda_565169b3e3b494427ce1bebdd17b54ac>,class <lambda_f51fe5fd7c79a33db34fc9310f277369> >(class <lambda_565169b3e3b494427ce1bebdd17b54ac> &&,class <lambda_f51fe5fd7c79a33db34fc9310f277369> &&) Unknown 
ucrtbased.dll!__wsetlocale() Unknown 
ucrtbased.dll!___acrt_update_multibyte_info() Unknown 
ucrtbased.dll!_setlocale() Unknown 

Đôi khi nó hoạt động nhưng đôi khi nó không bao giờ trả về từ đó. Tôi không thể xác định được lý do. Tôi sử dụng Visual Studio 2015 và Windows 7.

+3

Bạn đã thoát khỏi phần dưới cùng của ngăn xếp cuộc gọi, vì vậy chúng tôi không thể nhìn thấy nơi bạn đang gọi 'setlocale' từ đó. Vì bạn đang chạy vào một bế tắc khóa tải, bạn có thể gọi 'setlocale' từ' DllMain'? – IInspectable

Trả lời

11

Đây là lỗi trong bản dựng TH1 (10.0.10240) của CRT phổ quát. Lỗi đã được sửa trong bản cập nhật Windows 10 tháng 11 (TH2) (10.0.10586).

Bạn có thể tải xuống và cài đặt SDK Windows 10 đã cập nhật từ https://dev.windows.com/en-us/downloads/windows-10-sdk. SDK này chứa các thư viện Universal CRT tĩnh, gỡ lỗi các tệp DLL CRT Universal (ucrtbased.dll et al.) Và các tệp CRT Universal CRT bán lẻ để phân phối lại ứng dụng cục bộ.

Bạn có thể tải xuống bản phân phối lại CRT phổ quát được cập nhật từ https://www.microsoft.com/en-us/download/details.aspx?id=50410. Chúng chứa hàm CRT bán lẻ cập nhật để triển khai trung tâm trong thư mục hệ thống.

+0

James: Bạn có thể xem nhanh tại: http://stackoverflow.com/questions/37196005/cl-exe-hangs-indefinitely-while-being-invoked-via-msbuild Làm theo đề xuất của bạn Tôi đã cài đặt KB3118401 áp dụng cho Windows 7 SP1. Sự nhầm lẫn của tôi là nó đã tạo ra một thư mục "10" trong "% programfiles% \ Windows Kits". Tôi có nên liên kết ứng dụng của mình với ucrt được cài đặt trên ** thư mục ** này không? Đây là một chút bối rối :-( – ForeverLearning

+1

Làm thế nào để sử dụng UCRT này từ Visual Studio 2015? Ngay cả sau khi cài đặt VS update 2 và Win 10 SDK TH2, nó vẫn đang liên kết trong UCRT 10.0.10240 (Tôi đang sử dụng chế độ CRT tĩnh/MT: – rustyx

+0

Hãy nói rằng tôi có Windows 10 LTSB verion 1507 (RTM) Làm thế nào tôi có thể sửa lỗi này trong CRT Universal? Là lựa chọn duy nhất để cập nhật lên phiên bản LTSB 1607? – user2177774

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