microsoft / microsoft/openvmm

Virtio Serial fails to connect to name pipe on Windows

Open
#2,089 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Rust
Stars
1.9k
Forks
238
Avg merge
1d 15h
Merged PRs (30d)
100

Description

Running openvmm.exe with the options --virtio-serial=term --virtio-console opens a new terminal window, but it does not appear to be connected to anything. These options launch a child process to copy data back and forth from a named pipe (openvmm.exe --relay-console-path \\.\pipe\219476404589302878345095266126242352181 --relay-console-title "VIRTIO_SERIAL [OpenVMM]"), but this process silently exits immediately with the error code

0:000> !gle
LastErrorValue: (Win32) 0x6d (109) - The pipe has been ended.
LastStatusValue: (NTSTATUS) 0xc000014b - The pipe operation has failed because the other end of the pipe has been closed.

This leaves an orphaned terminal window behind with the title "VIRTIO_SERIAL [OpenVMM]", but there is nothing reading or writing to/from its stdin/stdio.

I'm not entirely sure where the failure is occurring in the code, I captured a ttd trace of the process, but windbg is having a hard time with the async closure in openvmm!console_relay::relay_console. I also don't see any logging coming from this process; I collected ETW events from the Microsoft.HvLite provider, but I don't see any events from this child process.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the console_relay::relay_console path and reproduce the issue using openvmm.exe --virtio-serial=term --virtio-console. Trace the child process and named-pipe connection around the reported ERROR_BROKEN_PIPE failure. Done means the virtio serial terminal connects successfully and does not leave an orphaned window.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.