Skip to content

Fix conhost clipboard handling bugs#16457

Merged
DHowett merged 8 commits intomainfrom
dev/lhecker/fix-clipboard-bugs
Jan 29, 2024
Merged

Fix conhost clipboard handling bugs#16457
DHowett merged 8 commits intomainfrom
dev/lhecker/fix-clipboard-bugs

Conversation

@lhecker
Copy link
Member

@lhecker lhecker commented Dec 12, 2023

conhost has 2 bugs related to clipboard handling:

  • Missing retry on OpenClipboard: When copying to the clipboard
    explorer.exe is very eager to open the clipboard and peek into it.
    I'm not sure why it happens, but I can see CFSDropTarget in the
    call stack. It uses COM RPC and so this takes ~20ms every time.
    That breaks conhost's clipboard randomly during ConsoleBench.
    During non-benchmarks I expect this to break during RDP.
  • Missing null-terminator check during paste: CF_UNICODETEXT is
    documented to be a null-terminated string, which conhost v2
    failed to handle as it relied entirely on GlobalSize.

Additionally, this changeset simplifies the HGLOBAL code slightly
by adding _copyToClipboard to abstract it away.

Validation Steps Performed

@lhecker lhecker added Product-Conhost For issues in the Console codebase Area-Interaction Interacting with the vintage console window (as opposed to driving via API or hooks) Issue-Bug It either shouldn't be doing this or needs an investigation. Priority-3 A description (P3) labels Dec 12, 2023
@lhecker
Copy link
Member Author

lhecker commented Dec 12, 2023

@DHowett This is another PR we could merge into 1.19 inbox if we wanted to. It does fix actual bugs, but they have been in conhost since forever and so I'm not sure how important fixing it ASAP is.

@microsoft-github-policy-service microsoft-github-policy-service bot added Needs-Author-Feedback The original author of the issue/PR needs to come back and respond to something and removed Needs-Author-Feedback The original author of the issue/PR needs to come back and respond to something labels Dec 12, 2023
@DHowett
Copy link
Member

DHowett commented Jan 29, 2024

@lhecker merge conflict from Tushar's work

@DHowett DHowett enabled auto-merge (squash) January 29, 2024 22:43
@DHowett DHowett merged commit 86c30bd into main Jan 29, 2024
@DHowett DHowett deleted the dev/lhecker/fix-clipboard-bugs branch January 29, 2024 23:23
lhecker added a commit that referenced this pull request Jan 30, 2024
conhost has 2 bugs related to clipboard handling:
* Missing retry on `OpenClipboard`: When copying to the clipboard
  explorer.exe is very eager to open the clipboard and peek into it.
  I'm not sure why it happens, but I can see `CFSDropTarget` in the
  call stack. It uses COM RPC and so this takes ~20ms every time.
  That breaks conhost's clipboard randomly during `ConsoleBench`.
  During non-benchmarks I expect this to break during RDP.
* Missing null-terminator check during paste: `CF_UNICODETEXT` is
  documented to be a null-terminated string, which conhost v2
  failed to handle as it relied entirely on `GlobalSize`.

Additionally, this changeset simplifies the `HGLOBAL` code slightly
by adding `_copyToClipboard` to abstract it away.

* `ConsoleBench` (#16453) doesn't fail randomly anymore ✅

(cherry picked from commit 86c30bd)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area-Interaction Interacting with the vintage console window (as opposed to driving via API or hooks) Issue-Bug It either shouldn't be doing this or needs an investigation. Priority-3 A description (P3) Product-Conhost For issues in the Console codebase

Projects

No open projects
Status: Rejected

Development

Successfully merging this pull request may close these issues.

3 participants