Sometimes when I call vswhere with '-latest -legacy' multiple times it will hang indefinitely.
This happens both with the release and debug version, but a colleague couldn't reproduce the issue with a fairly similar setup.
My machine has VS2015 Pro, and VS2017 Pro. It also has remnants of uninstalled versions going back to VS2008 but these are correctly not being detected when vswhere works correctly.
Attaching and pausing the process running a debug build shows two threads with the following stack traces:
ntdll.dll!_NtWaitForSingleObject@12�() Unknown
ntdll.dll!_RtlpWaitOnCriticalSection@8�() Unknown
ntdll.dll!_RtlEnterCriticalSection@4�() Unknown
ntdll.dll!_LdrGetProcedureAddressEx@20�() Unknown
ntdll.dll!_LdrGetProcedureAddress@16�() Unknown
KernelBase.dll!_GetProcAddress@8�() Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!__acrt_lock_and_call<class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> >(enum __acrt_lock_id,class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> &&) Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!___acrt_IsValidLocaleName@4�() Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!__expandlocale�() Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!__wsetlocale�() Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!__acrt_lock_and_call<class <lambda_e378711a6f6581bf7f0efd7cdf97f5d9> >(enum __acrt_lock_id,class <lambda_e378711a6f6581bf7f0efd7cdf97f5d9> &&) Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!__crt_seh_guarded_call<void>::operator()<class <lambda_c76fdea48760d5f9368b465f31df4405>,class <lambda_e378711a6f6581bf7f0efd7cdf97f5d9> &,class <lambda_e927a58b2a85c081d733e8c6192ae2d2> >(class <lambda_c76fdea48760d5f9368b465f31df4405> &&,class <lambda_e378711a6f6581bf7f0efd7cdf97f5d9> &,class <lambda_e927a58b2a85c081d733e8c6192ae2d2> &&) Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!__acrt_lock_and_call<class <lambda_e378711a6f6581bf7f0efd7cdf97f5d9> >(enum __acrt_lock_id,class <lambda_e378711a6f6581bf7f0efd7cdf97f5d9> &&) Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!__acrt_lock_and_call<class <lambda_e378711a6f6581bf7f0efd7cdf97f5d9> >(enum __acrt_lock_id,class <lambda_e378711a6f6581bf7f0efd7cdf97f5d9> &&) Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!__crt_seh_guarded_call<void>::operator()<class <lambda_70818de7b02deff9841e8b0962a60ed9>,class <lambda_2af78c5f5901b1372d98f9ab3177dfa6> &,class <lambda_f51fe5fd7c79a33db34fc9310f277369> &>(class <lambda_70818de7b02deff9841e8b0962a60ed9> &&,class <lambda_2af78c5f5901b1372d98f9ab3177dfa6> &,class <lambda_f51fe5fd7c79a33db34fc9310f277369> &) Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!__wsetlocale�() Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!_wcscpy_s�() Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!_setlocale�() Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!std::_Locinfo::_Locinfo_ctor(class std::_Locinfo *,char const *) Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!std::_Locinfo::_Locinfo(char const *) Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!std::ctype<wchar_t>::_Getcat(class std::locale::facet const * *,class std::locale const *) Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!std::use_facet<class std::ctype<wchar_t> >(class std::locale const &) Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!SetupHelper::Trim(wchar_t const * const,wchar_t * *) Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!SetupHelper::ParseVersion(wchar_t const *,unsigned __int64 *) Unknown
> vswhere.exe!InstanceSelector::Less(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > & a={...}, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > & b={...}) Line 49 C++
vswhere.exe!InstanceSelector::Select::__l26::<lambda>(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > & a={...}, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > & b={...}) Line 150 C++
vswhere.exe!std::_Debug_lt_pred<bool <lambda>(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &) &,_com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &,_com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &>(InstanceSelector::Select::__l26::bool <lambda>(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &) & _Pred=bool <lambda>(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > & a, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > & b){...}, _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > & _Left={...}, _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > & _Right={...}, const wchar_t * _File=0x00bac6a8, unsigned int _Line=2766) Line 948 C++
vswhere.exe!std::_Insertion_sort_unchecked<_com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > *,bool <lambda>(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &) >(_com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > * _First=0x00606448, _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > * _Last=0x00606450, InstanceSelector::Select::__l26::bool <lambda>(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &) & _Pred=bool <lambda>(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > & a, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > & b){...}) Line 2766 C++
vswhere.exe!std::_Sort_unchecked1<_com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > *,int,bool <lambda>(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &) >(_com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > * _First=0x00606448, _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > * _Last=0x00606450, int _Ideal=2, InstanceSelector::Select::__l26::bool <lambda>(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &) & _Pred=bool <lambda>(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > & a, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > & b){...}) Line 2901 C++
vswhere.exe!std::_Sort_unchecked<_com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > *,bool <lambda>(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &) >(_com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > * _First=0x00606448, _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > * _Last=0x00606450, InstanceSelector::Select::__l26::bool <lambda>(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &) & _Pred=bool <lambda>(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > & a, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > & b){...}) Line 2908 C++
vswhere.exe!std::sort<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<_com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > > > >,bool <lambda>(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &) >(std::_Vector_iterator<std::_Vector_val<std::_Simple_types<_com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > > > > _First={...}, std::_Vector_iterator<std::_Vector_val<std::_Simple_types<_com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > > > > _Last={...}, InstanceSelector::Select::__l26::bool <lambda>(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > &) _Pred=bool <lambda>(const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > & a, const _com_ptr_t<_com_IIID<ISetupInstance,&_GUID_b41463c3_8866_43b5_bc33_2b0676f7f42e> > & b){...}) Line 2916 C++
vswhere.exe!InstanceSelector::Select(IEnumSetupInstances * pEnum=0x00606310) Line 147 C++
vswhere.exe!wmain(int argc=3, const wchar_t * * argv=0x00603738) Line 49 C++
vswhere.exe!invoke_main() Line 79 C++
vswhere.exe!__scrt_common_main_seh() Line 259 C++
vswhere.exe!__scrt_common_main() Line 302 C++
vswhere.exe!wmainCRTStartup() Line 17 C++
kernel32.dll!@BaseThreadInitThunk@12�() Unknown
ntdll.dll!___RtlUserThreadStart@8�() Unknown
ntdll.dll!__RtlUserThreadStart@8�() Unknown
> ntdll.dll!_NtWaitForSingleObject@12�() Unknown
ntdll.dll!_RtlpWaitOnCriticalSection@8�() Unknown
ntdll.dll!_RtlEnterCriticalSection@4�() Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!___acrt_lock�() Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!__crt_seh_guarded_call<void>::operator()<class <lambda_3518db117f0e7cdb002338c5d3c47b6c>,class <lambda_b2ea41f6bbb362cd97d94c6828d90b61> &,class <lambda_abdedf541bb04549bc734292b4a045d4> >(class <lambda_3518db117f0e7cdb002338c5d3c47b6c> &&,class <lambda_b2ea41f6bbb362cd97d94c6828d90b61> &,class <lambda_abdedf541bb04549bc734292b4a045d4> &&) Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!__acrt_lock_and_call<class <lambda_b2ea41f6bbb362cd97d94c6828d90b61> >(enum __acrt_lock_id,class <lambda_b2ea41f6bbb362cd97d94c6828d90b61> &&) Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!__acrt_lock_and_call<class <lambda_e69574bed617af4e071282c136b37893> >(enum __acrt_lock_id,class <lambda_e69574bed617af4e071282c136b37893> &&) Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!___acrt_getptd_noexit�() Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!___acrt_thread_attach�() Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!___scrt_dllmain_crt_thread_attach�() Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!operator new(unsigned int,struct std::nothrow_t const &) Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!operator new(unsigned int,struct std::nothrow_t const &) Unknown
Microsoft.VisualStudio.Setup.Configuration.Native.dll!__DllMainCRTStartup@12�() Unknown
ntdll.dll!_LdrpCallInitRoutine@16�() Unknown
ntdll.dll!_LdrpInitializeThread@4�() Unknown
ntdll.dll!__LdrpInitialize@8�() Unknown
ntdll.dll!_LdrInitializeThunk@8�() Unknown