`NamedPipeServerStream` recieves empty string from client

Open
#112,912 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
csharp, rust

Research direction

Start by running the reproduction repository at https://github.com/U-C-S/NamedPipesWindows-IssueRepro and observe the first request after startup. Trace the Rust client and System.IO.Pipes.NamedPipeServerStream interaction to determine why StreamReader receives an empty string; done means the server consistently receives the client’s non-empty string on the stated Windows configuration.

Written by the indexing model from the issue text.

Description

area-System.IO help wanted
Description

When a named pipe client sends a string, System.IO.Pipes.NamedPipeServerStream in my application sometimes, usually the first request after application started running, gets it as a empty string "" from the StreamReader.

Reproduction Steps

Created a repository to reproduce the issue. Note that my client is written in Rust.
https://github.com/U-C-S/NamedPipesWindows-IssueRepro

Expected behavior

Named Pipe Server should get the string from client as it is, on all occasions.

Actual behavior

Named Pipe Server gets an empty string occasionally from client, even when client certainly is sending a non-empty string, usually on first launch of the application the server is part of.

image

Regression?

No response

Known Workarounds

No response

Configuration
  • .NET SDK version: 8.0.404
  • OS and version: Windows 11 stable build 26100.3194
  • architecture: x64
  • Do you know whether it is specific to that configuration? - No
Other information

No response

Dominant language
C#
Stars
18.3k
Forks
5.6k
PR merge metrics
PR metrics pending

Contributor guide

Open the contributing guide

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.

More from dotnet/runtime

All issues in dotnet/runtime

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.