Skip to content

Conversation

@OneBlue
Copy link
Collaborator

@OneBlue OneBlue commented Oct 6, 2025

Summary of the Pull Request

This change solves a potential service deadlock (see stack below)

PR Checklist

  • Closes: Link to issue #xxx
  • Communication: I've discussed this with core contributors already. If work hasn't been agreed, this work might be rejected
  • Tests: Added/updated if needed and all pass
  • Localization: All end user facing strings can be localized
  • Dev docs: Added/updated if needed
  • Documentation updated: If checked, please file a pull request on our docs repo and link it here: #xxx

Detailed Description of the Pull Request / Additional comments

Sample stacks:

Thread 1:

00 00000083`892fec38 00007ffc`3f49dd6e     ntdll!ZwWaitForAlertByThreadId+0x14  
01 00000083`892fec40 00007ffc`3cb0f518     ntdll!RtlSleepConditionVariableSRW+0x1de  
02 00000083`892fece0 00007ff6`78a8e807     KERNELBASE!SleepConditionVariableSRW+0x38  
03 00000083`892fed20 00007ff6`78a8e793     wslservice!_Primitive_wait_for+0x47  
04 00000083`892fed70 00007ff6`78a8ead7     wslservice!_Primitive_wait+0x23  
05 00000083`892feda0 00007ff6`786a03c4     wslservice!_Cnd_wait+0x27  
06 00000083`892fedd0 00007ff6`78694051     wslservice!std::condition_variable::wait+0x44  
07 00000083`892fee10 00007ff6`78639759     wslservice!std::recursive_timed_mutex::lock+0xf1  
08 00000083`892feea0 00007ff6`785ae722     wslservice!std::lock_guard<std::recursive_timed_mutex>::lock_guard<std::recursive_timed_mutex>+0x29  
09 00000083`892feed0 00007ff6`785bb0db     wslservice!LxssUserSessionImpl::TerminateByClientId+0x52  
0a 00000083`892fef30 00007ff6`786239e2     wslservice!LxssUserSessionImpl::s_VmTerminated+0x1b  
0b 00000083`892fef70 00007ff6`785dff18     wslservice!std::invoke<void (__cdecl*&)(LxssUserSessionImpl *,_GUID const &),LxssUserSessionImpl * &,_GUID>+0x32  
0c 00000083`892fefb0 00007ff6`785e0103     wslservice!std::_Invoker_ret<std::_Unforced>::_Call<void (__cdecl*&)(LxssUserSessionImpl *,_GUID const &),LxssUserSessionImpl * &,_GUID>+0x28  
0d 00000083`892fefe0 00007ff6`785d6a75     wslservice!std::_Call_binder<std::_Unforced,0,1,void (__cdecl*)(LxssUserSessionImpl *,_GUID const &),std::tuple<LxssUserSessionImpl *,std::_Ph<1> >,std::tuple<_GUID &&> >+0x63  
0e 00000083`892ff020 00007ff6`78623c1e     wslservice!std::_Binder<std::_Unforced,void (__cdecl&)(LxssUserSessionImpl *,_GUID const &),LxssUserSessionImpl *,std::_Ph<1> const &>::operator()<_GUID>+0xa5  
0f 00000083`892ff080 00007ff6`78667f15     wslservice!std::invoke<std::_Binder<std::_Unforced,void (__cdecl&)(LxssUserSessionImpl *,_GUID const &),LxssUserSessionImpl *,std::_Ph<1> const &> &,_GUID>+0x1e  
10 00000083`892ff0b0 00007ff6`78830674     wslservice!std::_Func_impl_no_alloc<std::_Binder<std::_Unforced,void (__cdecl&)(LxssUserSessionImpl *,_GUID const &),LxssUserSessionImpl *,std::_Ph<1> const &>,void,_GUID>::_Do_call+0x25  
11 00000083`892ff0e0 00007ff6`7886af2a     wslservice!std::_Func_class<void,_GUID>::operator()+0x54  
12 00000083`892ff120 00007ff6`7886c7dd     wslservice!WslCoreVm::OnExit+0x1da  
13 00000083`892ff220 00007ffc`2eef7fb4     wslservice!WslCoreVm::s_OnExit+0x6d  
14 00000083`892ff270 00007ffc`2eef6bde     computecore!HcsClient::OperationTracker::InvokeOrQueueEvent+0x26c  
15 00000083`892ff4d0 00007ffc`2eef824d     computecore!<lambda_a99cc396030748f23bd3ed4032603b57>::operator()+0x772  
16 00000083`892ff600 00007ffc`2eef44fc     computecore!HcsClient::OperationTracker::OnHcsNotification+0xb9  
17 00000083`892ff7f0 00007ffc`2eedbf8e     computecore!<lambda_bc13fa22e3274a4fea1a03d75833842b>::<lambda_invoker_cdecl>+0x2c  
18 00000083`892ff820 00007ffc`2eedc7ff     computecore!ComputeService::Client::NotificationCallbacks::OnNotificationPending+0x10a  
19 00000083`892ff8c0 00007ffc`3f440c0d     computecore!ComputeService::Client::NotificationCallbacks::WaitCallback+0x2f  
1a 00000083`892ff930 00007ffc`3f43be4e     ntdll!TppExecuteWaitCallback+0x4cd  
1b 00000083`892ffa50 00007ffc`3f47e4d0     ntdll!TppDirectExecuteCallback+0xee  
1c 00000083`892ffab0 00007ffc`3e11e8d7     ntdll!TppWorkerThread+0x820  
1d 00000083`892ffe10 00007ffc`3f408d9c     KERNEL32!BaseThreadInitThunk+0x17  
1e 00000083`892ffe40 00000000`00000000     ntdll!RtlUserThreadStart+0x2c  

Thread 2:

07 00000083`88bf7450 00007ffc`2eec8684     computecore!HcsClient::CloseComputeSystem+0x24  
08 00000083`88bf7480 00007ff6`788e9093     computecore!HcsCloseComputeSystem+0x64  
09 00000083`88bf7610 00007ff6`788edce0     wslservice!wil::details::close_invoke_helper<1,void (__cdecl*)(HCS_SYSTEM__ *),&HcsCloseComputeSystem,HCS_SYSTEM__ *>::close_reset+0x43  
0a 00000083`88bf7670 00007ff6`7885b916     wslservice!wil::details::unique_storage<wil::details::resource_policy<HCS_SYSTEM__ *,void (__cdecl*)(HCS_SYSTEM__ *),&HcsCloseComputeSystem,wistd::integral_constant<unsigned __int64,0>,HCS_SYSTEM__ *,HCS_SYSTEM__ *,0,std::nullptr_t> >::reset+0x30  
0b 00000083`88bf76a0 00007ff6`78655dd8     wslservice!WslCoreVm::~WslCoreVm+0x656  
0c 00000083`88bf7aa0 00007ff6`78653b20     wslservice!WslCoreVm::`scalar deleting destructor'+0x18
0d 00000083`88bf7ad0 00007ff6`786995ef     wslservice!std::default_delete<WslCoreVm>::operator()+0x30  
0e 00000083`88bf7b10 00007ff6`785b96d4     wslservice!std::unique_ptr<WslCoreVm,std::default_delete<WslCoreVm> >::reset+0x4f  
0f 00000083`88bf7b50 00007ff6`78c13464     wslservice!LxssUserSessionImpl::_VmTerminate+0xd4  
10 00000083`88bf7bc0 00007ff6`78af7390     wslservice!`LxssUserSessionImpl::_CreateVm'::`1'::catch$10+0x77  
11 00000083`88bf7c10 00007ff6`78ade08e     wslservice!_CallSettingFrame_LookupContinuationIndex+0x20  
12 00000083`88bf7c40 00007ffc`3f522cc6     wslservice!__FrameHandler4::CxxCallCatchBlock+0x1de  
13 00000083`88bf7d10 00007ff6`785b3bb5     ntdll!RcFrameConsolidation+0x6  
14 00000083`88bfba50 00007ff6`785b08eb     wslservice!LxssUserSessionImpl::_CreateVm+0x7c5  
15 00000083`88bfc1a0 00007ff6`785a418d     wslservice!LxssUserSessionImpl::_CreateInstance+0xb2b  
16 00000083`88bfd210 00007ff6`7859f2b8     wslservice!LxssUserSessionImpl::CreateInstance+0x2d  

@OneBlue OneBlue requested a review from a team as a code owner October 6, 2025 23:17
@OneBlue OneBlue requested review from benhillis, Copilot, craigloewen-msft and justus-camp-microsoft and removed request for Copilot October 6, 2025 23:17
@OneBlue OneBlue merged commit 5d09719 into master Oct 8, 2025
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants