2016-02-23 15 views
7

setlocale(LC_ALL, "uk-UA") a volte si blocca/deadlock per me con motivo sconosciuto. Lo stack di chiamate è:setlocale bloccato su 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 

A volte funziona, ma a volte non ritorna mai da esso. Non riesco a identificare la ragione. Uso Visual Studio 2015 e Windows 7.

+3

Hai lasciato la parte inferiore dello stack di chiamate, quindi non possiamo vedere da dove stai chiamando 'setlocale'. Dal momento che stai incontrando un deadlock del blocco del caricatore, stai forse chiamando 'setlocale' da' DllMain'? – IInspectable

risposta

11

Questo era un bug nella build TH1 (10.0.10240) della Universal CRT. Il bug è stato corretto nel build di Windows 10 November Update (TH2) (10.0.10586).

È possibile scaricare e installare l'SDK di Windows 10 aggiornato da https://dev.windows.com/en-us/downloads/windows-10-sdk. Questo SDK contiene le librerie CRT universali statiche, le DLL Universal CRT di debug (ucrtbased.dll e altri) e le DLL Universal CRT di vendita per la ridistribuzione locale dell'app.

È possibile scaricare i ridistribuibili Universal CRT aggiornati da https://www.microsoft.com/en-us/download/details.aspx?id=50410. Questi contengono il CRT universale aggiornato aggiornato per la distribuzione centrale nella directory di sistema.

+0

James: Puoi dare una rapida occhiata a: http://stackoverflow.com/questions/37196005/cl-exe-hangs-indefinitely-while-being-invoked-via-msbuild Seguendo il tuo suggerimento ho installato KB3118401 applicabile per Windows 7 SP1. La mia confusione è che ora ha creato una cartella "10" sotto "% programfiles% \ Windows Kits". Dovrei collegare la mia applicazione con ucrt installata su ** questa ** cartella? Questo è un po 'confuso :-( – ForeverLearning

+1

Come uso questo UCRT da Visual Studio 2015? Anche dopo aver installato VS update 2 e Win 10 SDK TH2, è ancora collegato in UCRT 10.0.10240 (sto usando la modalità CRT statica/MT). – rustyx

+0

Diciamo che ho Windows 10 LTSB verion 1507 (RTM) .Come posso ottenere questo bug corretto nel CRT universale? È l'unica opzione per aggiornare a LTSB versione 1607? – user2177774

Problemi correlati