dotnet / dotnet/diagnostics

dotnet-trace breaks apps that create their own child processes

Open
#5,501 4 comments 0 reactions 1 assignee Claimed by @mdh1418 View on GitHub
bug
Dominant language
C++
Stars
1.3k
Forks
404
Avg merge
2d 3h
Merged PRs (30d)
38

Description

### Description

I'm not sure if this is a feature request or a bug, but trying to use `dotnet-trace collect --show-child-io -- dotnet package search json` freezes and must be stopped with ctrl-c. The output is:

```text
The runtime has been configured to pause during startup and is awaiting a Diagnostics IPC ResumeStartup command from a Diagnostic Port.
DOTNET_DiagnosticPorts="dotnet-trace-48696-20250614_161420.socket"
DOTNET_DefaultDiagnosticPortSuspend=0
```

The .NET SDK implements most of its NuGet functionality by executing another console app as its own child process. `dotnet-trace` doesn't have a problem with most non-nuget commands, and `dotnet nuget why` is a special case, the first NuGet command to run in-proc, and dotnet-trace works with that as well. Older versions of the .NET SDK ran msbuild as a child process of `dotnet tool restore` and `dotnet tool install`, and dotnet-trace causes those to freeze and never recover as well.

If this is a known limitation, I've been unable to find it documented anywhere, but that could be a limitation in my own search ability.

### Configuration

I can reproduce on Windows and in WSL

### Regression?

### Other information

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.