Windows Version
Microsoft Windows [Version 10.0.26200.8973]
WSL Version
2.9.4.0
Are you using WSL 1 or WSL 2?
Kernel Version
6.18.35.2-1
Distro Version
No response
Other Software
No response
Repro Steps
- Create a defaultly-named session by running a container with WSLC under your own account. E.g.:
C:\Windows\System32>wslc run --rm hello-world
Hello from Docker!
[...]
- Create a second defaultly-named session by running a container under your own account, but elevated
- Run
wslc system session list (and see in Task Manager). You now have two session VMs: wslc-cli-User and wslc-cli-admin-User.
Due to being lightweight Hyper-V VMs, your only way of terminating them is with wslc system session terminate.
- Run
wslc system session terminate --help
- Notice the command help specifies it can accept a session name in the description, but the command format does not mention it:
Copyright (c) Microsoft Corporation. All rights reserved.
For privacy information about this product please visit https://aka.ms/privacy.
Terminates an active session. If no session is specified, the default session will be terminated.
Usage: wslc system session terminate [<options>]
The following options are available:
-?,--help Shows help about the selected command
- Attempt to specify a session name (or ID) anyway. Notice it complains about a positional argument that was not expected:
C:\Windows\System32>wslc system session list
ID Creator PID Display Name
1 1234 wslc-cli-User
2 5678 wslc-cli-admin-User
C:\Windows\System32>wslc system session terminate 2
Copyright (c) Microsoft Corporation. All rights reserved.
For privacy information about this product please visit https://aka.ms/privacy.
Found a positional argument when none was expected: '2'
[...help text follows...]
C:\Windows\System32>wslc system session terminate wslc-cli-User
Copyright (c) Microsoft Corporation. All rights reserved.
For privacy information about this product please visit https://aka.ms/privacy.
Found a positional argument when none was expected: 'wslc-cli-User'
[...help text follows...]
- Running an unspecified terminate command works, but of course only terminates the session owned by the current user and integrity level:
C:\Windows\System32>wslc system session terminate
C:\Windows\System32>wslc system session list
ID Creator PID Display Name
1 1234 wslc-cli-User
- Running
[...]terminate a second time fails as the session does not exist anymore:
C:\Windows\System32>wslc system session terminate
Session not found: 'wslc-cli-admin-User'
Error code: WSLC_E_SESSION_NOT_FOUND
The end result is: If you started several sessions across user accounts and integrity levels, those sessions can only be terminated by the users (and integrity levels) who started them.
Expected Behavior
wslc system session terminate should accept a session name (or ID if the ordering of wslc system session list is consistent across calls and can be trusted), and allow a user at or above trust level to terminate another session. I.e.: a non-elevated user account would be able to terminate their own non-elevated session, while an elevated user account would be able to terminate all other users' elevated and non-elevated sessions.
If not, the command description should be amended.
However, in that case, due to Hyper-V lightweight VMs being unmanageable with regular tools, a user can end up with essentially "leaked" VMs if they don't know about the sessions' user + integrity distinction.
Actual Behavior
wslc system session terminate does not accept any other option than --help/-?, and can only terminate the default session.
See repro steps for full console output of this & related commands.
Diagnostic Logs
No response
Windows Version
Microsoft Windows [Version 10.0.26200.8973]
WSL Version
2.9.4.0
Are you using WSL 1 or WSL 2?
Kernel Version
6.18.35.2-1
Distro Version
No response
Other Software
No response
Repro Steps
C:\Windows\System32>wslc run --rm hello-world Hello from Docker! [...]wslc system session list(and see in Task Manager). You now have two session VMs:wslc-cli-Userandwslc-cli-admin-User.Due to being lightweight Hyper-V VMs, your only way of terminating them is with
wslc system session terminate.wslc system session terminate --help[...]terminatea second time fails as the session does not exist anymore:The end result is: If you started several sessions across user accounts and integrity levels, those sessions can only be terminated by the users (and integrity levels) who started them.
Expected Behavior
wslc system session terminateshould accept a session name (or ID if the ordering ofwslc system session listis consistent across calls and can be trusted), and allow a user at or above trust level to terminate another session. I.e.: a non-elevated user account would be able to terminate their own non-elevated session, while an elevated user account would be able to terminate all other users' elevated and non-elevated sessions.If not, the command description should be amended.
However, in that case, due to Hyper-V lightweight VMs being unmanageable with regular tools, a user can end up with essentially "leaked" VMs if they don't know about the sessions' user + integrity distinction.
Actual Behavior
wslc system session terminatedoes not accept any other option than--help/-?, and can only terminate the default session.See repro steps for full console output of this & related commands.
Diagnostic Logs
No response