setlocale卡在Windows上

setlocale(LC_ALL,“uk-UA”)有时会因为未知原因而挂起/死锁.调用堆栈是:
ntdll.dll!_ZwWaitForSingleObject@12()   UnkNown
ntdll.dll!_RtlpWaitOnCriticalSection@8()    UnkNown
ntdll.dll!_RtlEnterCriticalSection@4()  UnkNown
ntdll.dll!_LdrpLoadDll@28() UnkNown
ntdll.dll!_LdrLoadDll@16()  UnkNown
KernelBase.dll!_LoadLibraryExW@12() 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_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_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> &&)   UnkNown
ucrtbased.dll!__crt_seh_guarded_call<void>::operator()<class <lambda_507d9fd6b66e39451a8852ba73f804a7>,class <lambda_565169b3e3b494427ce1bebdd17b54ac> &,class <lambda_f51fe5fd7c79a33db34fc9310f277369> &>(class <lambda_507d9fd6b66e39451a8852ba73f804a7> &&,class <lambda_f51fe5fd7c79a33db34fc9310f277369> &) UnkNown
ucrtbased.dll!__crt_call_and_cleanup<class <lambda_565169b3e3b494427ce1bebdd17b54ac>,class <lambda_f51fe5fd7c79a33db34fc9310f277369> &&)   UnkNown
ucrtbased.dll!__wsetlocale()    UnkNown
ucrtbased.dll!___acrt_update_multibyte_info()   UnkNown
ucrtbased.dll!_setlocale()  UnkNown

有时它有效,但有时它永远不会从它返回.我无法确定原因.我使用Visual Studio 2015和Windows 7.

这是Universal CRT的TH1版本(10.0.10240)中的一个错误.该错误已在Windows 10 November Update(TH2)版本(10.0.10586)中修复.

您可以从https://dev.windows.com/en-us/downloads/windows-10-sdk下载并安装更新的Windows 10 SDK.此SDK包含静态通用CRT库,调试通用CRT DLL(ucrtbased.dll等),以及用于应用程序本地重新分发的零售通用CRT DLL.

您可以从https://www.microsoft.com/en-us/download/details.aspx?id=50410下载更新的Universal CRT可再发行组件.这些组件包含更新的零售Universal CRT,用于在系统目录中进行集中部署.

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...