Skip to content

wslc treats IME commit of 【】 as the Ctrl-P Ctrl-Q detach sequence #41958

Open

Description

Windows Version

Microsoft Windows [Version 10.0.26200.9445]

WSL Version

3.0.3.0 (wslc --version prints wslc 3.0.3.0)

Are you using WSL 1, WSL 2, or WSLC?

  • WSL 2
  • WSL 1
  • WSLC

Kernel Version

Not applicable. The stall is in wslc.exe on the Windows side, before the guest reads the input.

Distro Version

WSLc container. The guest is an Arch Linux userspace started with wslc exec -it.

Other Software

noctty 1.3.131. The same input path is wslc exec -it, so the terminal is only how the keys reach the console.

Repro Steps

  1. wslc exec -it into a container and run cat.
  2. With a Japanese IME, commit the conversion 【】 (U+3010, U+3011). Pasting those two characters back to back does the same thing.

Expected Behavior

cat prints 【】 and keeps accepting input.

Actual Behavior

Input stops. Further keystrokes never reach the guest. The committed text does not show up as an ongoing session. Output from the guest still arrives. This is the same state as the hard-coded detach sequence, Ctrl-P then Ctrl-Q.

wslc 3.0.3 matches the detach sequence against the low byte of each UTF-16 key:

ReadConsoleInputExW fills uChar with a UTF-16 code unit, and AsciiChar is only the low 8 bits. U+3010 is 0x3010 and U+3011 is 0x3011, so the low bytes are 0x10 and 0x11. Two characters in a row match Ctrl-P Ctrl-Q. wslc forwards those two characters, then stops reading the keyboard.

A non-ASCII character should break a partial match, and the comparison should use the whole code unit (or the UTF-8 that is forwarded), not AsciiChar.

This was isolated while reporting the freeze against noctty. noctty delivers U+3010 and U+3011 intact. A child that replays this input loop stops reading immediately after 【】, and keeps reading after 「」 or 日本. Details and the maintainer's notes: amanthanvi/noctty#395

Diagnostic Logs

wslc --version → wslc 3.0.3.0

Activity

  1. github-actions commented on Oct 16, 2026

    @github-actions
    Contributor

    Logs are required for review from WSL team

    If this a feature request, please reply with '/feature'. If this is a question, reply with '/question'.
    Otherwise, please attach logs by following the instructions below, your issue will not be reviewed unless they are added. These logs will help us understand what is going on in your machine.

    How to collect WSL logs

    Download and execute collect-wsl-logs.ps1 in an administrative powershell prompt:

    Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/collect-wsl-logs.ps1" -OutFile collect-wsl-logs.ps1
    Set-ExecutionPolicy Bypass -Scope Process -Force
    .\collect-wsl-logs.ps1
    

    The script will output the path of the log file once done.

    If this is a networking issue, please use .\collect-wsl-logs.ps1 -LogProfile networking instead, following the instructions in Collect WSL logs for networking issues

    Once completed please upload the output files to this GitHub issue.

    See Collect WSL logs (recommended method).

    If you choose to email these logs instead of attaching them to the bug, please send them to wsl-gh-logs@microsoft.com with the GitHub issue number in the subject, and include a link to your GitHub issue comment in the message body, and reply with '/emailed-logs'.

  2. wtcttn commented on Oct 16, 2026

    @wtcttn
    Author

    Diagnostic logs from collect-wsl-logs.ps1 (master, without -Dump):

    https://gist.github.com/wtcttn/2a548f6d8591554d1d88bccf5c6c18b2

    The archive is base64-encoded there. Decode WslLogs-2026-10-16_22-46-30.tar.gz.b64 as described in README.txt in that gist. Original size is 580624 bytes.

    wslc --version is wslc 3.0.3.0. 【】 is displayed, and keyboard input stops after that.

    The collector ran in an elevated PowerShell session. That session could not see the wslc-dev container (WSLC_E_CONTAINER_NOT_FOUND), and attaching to its console was denied, so logs.etl may not contain the detach. The registry export, Windows version, .wslconfig, and service logs are in the archive.

  3. ggarzia-MSFT commented on Oct 16, 2026

    @ggarzia-MSFT
    Contributor

    Thanks for reporting this bug, I was able to repro. See #41960 for the fix

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions