dotnet / dotnet/runtime

[mono][android-arm64] System.Threading.Volatile.ReadBarrier() never returns (hangs; or StackOverflow/SIGSEGV in deeper call chains)

Open
#130,265 4 comments 0 reactions 1 assignee Claimed by @BrzVlad View on GitHub
area-Codegen-Interpreter-mono
Dominant language
C#
Stars
18.3k
Forks
5.6k
PR merge metrics
PR metrics pending

Description

### Description

Details:
- net10.0-android36.1, RID android-arm64 (arm64-v8a), Debug, Mono JIT/interpreter (no AOT).
- The [Intrinsic] is not recognized on this target; the self-referential managed
fallback executes:
* simple/direct call -> tail-call-optimized into an infinite loop -> HANGS forever
* deep call chain (e.g. Roslyn CSharpCompilation.Emit) -> stack grows ->
StackOverflowException / native SIGSEGV (SEGV_ACCERR, fault addr 16 bytes
below a 4 KB page boundary, e.g. 0x...ff0; observed on Thread-18).
- Output target is irrelevant: MemoryStream vs temp FileStream makes no difference.

Real-world trigger / version boundary:
Microsoft.CodeAnalysis.CSharp 5.3.0 -> OK
Microsoft.CodeAnalysis.CSharp 5.6.0 -> crash (calls ReadBarrier() during Emit)

Ruled out (all reproduce unchanged):
concurrentBuild:false; 16 MB thread stack; CreateFromStream; DOTNET_EnableHWIntrinsic=0;
all ~80 reference assemblies validated intact via PEReader.

### Reproduction Steps

Simply execute in net10.0-android36.1:
Minimal repro (no Roslyn, no stream):
System.Threading.Volatile.ReadBarrier(); // never returns
ReadBarrier() hangs and finally generates a stack overflow

### Expected behavior

System.Threading.Volatile.ReadBarrier();
should not crash.

### Actual behavior

ReadBarrier() hangs and finally generates a stack overflow

### Regression?

The problem occurs in combination with Microsoft.CodeAnalysis.CSharp.Scripting 5.6.0, because only this version uses ReadBarrier().
With Microsoft.CodeAnalysis.CSharp.Scripting 5.3.0 there is no problem.

### Known Workarounds

Use Microsoft.CodeAnalysis.CSharp.Scripting 5.3.0 to avoid calling ReadBarrier().
Do not use Microsoft.CodeAnalysis.CSharp.Scripting 5.6.0 in net10.0-android36.1

### Configuration

.NET SDK: 10.0.301

Android workload:
Workloadversion: 10.0.301.1

Installierte Workload-ID Manifestversion Installationsquelle
-------------------------------------------------------------------------------------
android 36.1.69/10.0.100 SDK 10.0.300, VS 18.7.11925.98
ios 26.5.10284/10.0.100 SDK 10.0.300, VS 18.7.11925.98
maccatalyst 26.5.10284/10.0.100 SDK 10.0.300, VS 18.7.11925.98
maui-windows 10.0.20/10.0.100 SDK 10.0.300, VS 18.7.11925.98

### Other information

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.