DynamoRIO / DynamoRIO/dynamorio

.NET (dotnet) does not run reliably under DynamoRIO

Open
#7,664 0 comments 1 reaction 0 assignees View on GitHub
OpSys-Linux
Dominant language
C
Stars
3.2k
Forks
629
Avg merge
2d 18h
Merged PRs (30d)
30

Description

On Ubuntu 24.04 install and run .NET like this:
```
sudo apt-get install -y libicu74 wget

wget https://dot.net/v1/dotnet-install.sh
chmod +x dotnet-install.sh
./dotnet-install.sh --version latest
~/.dotnet/dotnet new console -o sample1
cd sample1
~/.dotnet/dotnet run
```

The output was `Hello, World!`.

Under DynamoRIO it fails in various ways.

On Graviton3 (AArch64) without `-fake_ctr_dic` it consistently failed with an error that mentioned `Object reference not set to an instance of an object`, but this is probably expected because of #5771.

On Graviton3 (AArch64) with `-fake_ctr_dic` it sometimes worked and sometimes gave a `Segmentation fault`.

On Intel it sometimes worked and sometimes gave: `/home/.../.dotnet/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(54,5): error MSB4184: The expression "[MSBuild]::GetTargetFrameworkIdentifier(net8.0)" cannot be evaluated. Exception has been thrown by the target of an invocation. [/home/.../sample1/sample1.csproj]`

(There is also an issue relating to .NET on Windows: #3211.)

Contributor guide

Open the contributing guide

Research direction

Reproduce the sample on Ubuntu 24.04 using dotnet-install.sh and sample1/sample1.csproj, first without DynamoRIO and then with and without -fake_ctr_dic. Read the context in issues #5771 and #3211 before tracing the failures. Done means dotnet run behaves reliably without segmentation faults, null-reference failures, or MSBuild errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, ubuntu
Domain
devtools, operating-systems
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.