dotnet / dotnet/diagnostics

Dump Generation Failure on Android in .NET MAUI Blazor Hybrid App

Open
#5,098 3 comments 0 reactions 1 assignee Claimed by @steveisok View on GitHub
documentation Microsoft.Diagnostics.NETCore.Client
Dominant language
C++
Stars
1.3k
Forks
404
Avg merge
2d 3h
Merged PRs (30d)
38

Description

I'm encountering an issue when generating a dump in my .NET MAUI Blazor Hybrid application on .NET 8 using the [Microsoft.Diagnostics.NETCore.Client](https://learn.microsoft.com/en-us/dotnet/core/diagnostics/diagnostics-client-library) library. When the app runs on Windows, it works as expected, but when running on Android, I receive the following error:

My code:

```csharp
public async Task WriteDumpAsync()
{
string appDataDirectory = FileSystem.AppDataDirectory;
string timestamp = DateTime.UtcNow.ToString("yyyyMMdd_HHmmss");
string fileName = $"dump_{timestamp}.dmp";
string dumpPath = Path.Combine(appDataDirectory, "dumps");

int processId = Process.GetCurrentProcess().Id;
DiagnosticsClient client = new DiagnosticsClient(processId);

if (!Directory.Exists(dumpPath))
Directory.CreateDirectory(dumpPath);

DumpType dumpType = DumpType.Normal;

// Attempt to write the dump
await client.WriteDumpAsync(dumpType, Path.Combine(dumpPath, fileName), logDumpGeneration: false, CancellationToken.None);
}
```
Result on android:

```text
Microsoft.Diagnostics.NETCore.Client.ServerNotAvailableException: Unable to connect to Process 28258. Please verify that /data/user/0/com.companyname.androiddumpgeneration/cache/ is writable by the current user. If the target process has environment variable TMPDIR set, please set TMPDIR to the same directory. Please see https://aka.ms/dotnet-diagnostics-port for more information
at Microsoft.Diagnostics.NETCore.Client.PidIpcEndpoint.GetDefaultAddress(Int32 pid)
at Microsoft.Diagnostics.NETCore.Client.PidIpcEndpoint.GetDefaultAddress()
at Microsoft.Diagnostics.NETCore.Client.PidIpcEndpoint.ConnectAsync(CancellationToken token)
at Microsoft.Diagnostics.NETCore.Client.IpcClient.SendMessageGetContinuationAsync(IpcEndpoint endpoint, IpcMessage message, CancellationToken cancellationToken)
at Microsoft.Diagnostics.NETCore.Client.IpcClient.SendMessageAsync(IpcEndpoint endpoint, IpcMessage message, CancellationToken cancellationToken)
at Microsoft.Diagnostics.NETCore.Client.DiagnosticsClient.WriteDumpAsync(DumpType dumpType, String dumpPath, WriteDumpFlags flags, CancellationToken token)
at AndroidDumpGeneration.Components.Pages.Home.WriteDumpAsync() in C:\Users\davic\OneDrive\Documentos\GitRepositories\net-maui-android-dump\AndroidDumpGeneration\Components\Pages\Home.razor:line 49
at AndroidDumpGeneration.Components.Pages.Home.GenerateDumpAsync() in C:\Users\davic\OneDrive\Documentos\GitRepositories\net-maui-android-dump\AndroidDumpGeneration\Components\Pages\Home.razor:line 25
```

To verify directory access, I tried writing a simple `.txt` file to the `/data/user/0/com.companyname.androiddumpgeneration/cache/` directory from my application, and it succeeded. This confirms I have write permissions to that directory. Given that I can write files there, it suggests that the issue might be related to the dump generation library on Android rather than a permissions or environment configuration problem

## Steps to Reproduce

1. Clone and open the [AndroidDumpGeneration](https://github.com/davicbaba/net-maui-android-dump) project.
2. Run the application to an Android device or emulator.
3. Navigate to the home page.
4. Click the **Generate Dump** button.
5. Observe the error displayed on screen.

**Expected Result:**
The dump should be generated successfully on Android.

**Actual Result:**
A runtime error occurs, and the dump is not generated.

## Configuration

- Target: **.NET 8.0 Android**
- Tool/Library: **Microsoft.Diagnostics.NETCore.Client version 0.2.553101**
- IDE: **Visual Studio 2022**
- OS: Android (Emulator or Device)
- Host Machine: Windows 11 x64

**Repository that demostrates the issue:**
[https://github.com/davicbaba/net-maui-android-dump](https://github.com/davicbaba/net-maui-android-dump)

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.