dotnet / dotnet/runtime

[linux-ppc64le] SIGSEGV on large test source execution

Open
#129,537 2 comments 0 reactions 0 assignees View on GitHub
arch-ppc64le area-Codegen-JIT-mono
Dominant language
C#
Stars
18.3k
Forks
5.6k
PR merge metrics
PR metrics pending

Description

### Description

After significantly increasing test count I started getting a SIGSEGV. The test works properly on another platforms like linux-s390x, windows x64, macOS ARM64/x64.

### Reproduction Steps

Checkout repository https://github.com/JetBrains/format-ripper/ and checkout the branch `ww898/crash-on-ppc64le`. Go to `./format-ripper/net/JetBrains.FormatRipper/tests/` and run `dotnet test -f net9.0 -p:JB_TargetFramework=net9.0 -p:UseAppHost=false`

### Expected behavior

No crash

### Actual behavior

.NET 9.0 and 10.0 behave differently (the failure depends solely on the number of elements initialized in the `ElfFileTest.Sources` variable):
```
$ dotnet test -f net9.0 -p:JB_TargetFramework=net9.0 -p:UseAppHost=false
JetBrains.FormatRipper net9.0 succeeded (0.3s) → /home/fedora/format-ripper/net/JetBrains.FormatRipper/src/bin/Debug/net9.0/JetBrains.FormatRipper.dll
JetBrains.FormatRipper.Tests net9.0 succeeded (0.3s) → bin/Debug/net9.0/JetBrains.FormatRipper.Tests.dll
NUnit Adapter 4.6.0.0: Test execution started
Running all tests in /home/fedora/format-ripper/net/JetBrains.FormatRipper/tests/bin/Debug/net9.0/JetBrains.FormatRipper.Tests.dll
=================================================================
=================================================================
External Debugger Dump:
=================================================================
Native Crash Reporting
=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================
=================================================================
Native stacktrace:
=================================================================
0x7fffafdea998 - /usr/lib64/dotnet/shared/Microsoft.NETCore.App/9.0.16/libcoreclr.so :
0x7fffafd938ac - /usr/lib64/dotnet/shared/Microsoft.NETCore.App/9.0.16/libcoreclr.so :
0x7fffafcddaac - /usr/lib64/dotnet/shared/Microsoft.NETCore.App/9.0.16/libcoreclr.so :
0x7fffb0ad04a4 - linux-vdso64.so.1 : __kernel_sigtramp_rt64

0x7fffafce0e70 - /usr/lib64/dotnet/shared/Microsoft.NETCore.App/9.0.16/libcoreclr.so :
0x7fffaff97618 - /usr/lib64/dotnet/shared/Microsoft.NETCore.App/9.0.16/libcoreclr.so : mono_runtime_invoke_checked
0x7fffaffbe664 - /usr/lib64/dotnet/shared/Microsoft.NETCore.App/9.0.16/libcoreclr.so :
0x7fffb02b6da0 - /lib64/libc.so.6 :
=================================================================
Basic Fault Address Reporting
=================================================================
Memory around native instruction pointer (0x7fffa4737f28):0x7fffa4737f18 78 c3 17 7f 00 00 38 2c 30 00 82 41 00 00 18 eb x.....8,0..A....
0x7fffa4737f28 30 00 78 80 02 00 23 28 1c 00 80 41 20 00 78 e8 0.x...#(...A .x.
0x7fffa4737f38 00 00 63 88 74 07 63 7c 04 00 63 70 00 00 23 28 ..c.t.c|..cp..#(
0x7fffa4737f48 08 00 82 40 00 00 e0 3a 78 bb e3 7e 00 00 23 28 ...@...:x..~..#(
=================================================================
Managed Stacktrace:
=================================================================
at NUnit.Framework.Internal.TypeHelper:ConvertArgumentList <0x000f0>
at NUnit.Framework.Internal.Builders.NUnitTestCaseBuilder:CheckTestMethodSignature <0x00ec0>
at NUnit.Framework.Internal.Builders.NUnitTestCaseBuilder:BuildTestMethod <0x001cc>
at d__19:MoveNext <0x00290>
at NUnit.Framework.Internal.Builders.DefaultTestCaseBuilder:BuildFrom <0x00740>
at NUnit.Framework.Internal.Builders.NUnitTestFixtureBuilder:BuildTestCase <0x000d0>
at NUnit.Framework.Internal.Builders.NUnitTestFixtureBuilder:AddTestCasesToFixture <0x002ac>
at NUnit.Framework.Internal.Builders.NUnitTestFixtureBuilder:BuildFrom <0x010ac>
at d__47:MoveNext <0x000b8>
at NUnit.Framework.Internal.Builders.DefaultSuiteBuilder:BuildFrom <0x00348>
at NUnit.Framework.Api.DefaultTestAssemblyBuilder:GetFixtures <0x003e4>
at NUnit.Framework.Api.DefaultTestAssemblyBuilder:Build <0x00cc0>
at NUnit.Framework.Api.DefaultTestAssemblyBuilder:Build <0x0029c>
at <>c__DisplayClass34_0:b__0 <0x00088>
at NUnit.Framework.Api.NUnitTestAssemblyRunner:WrapInNUnitCallCo
at NUnit.Engine.Runners.DirectTestRunner:LoadPackage <0x00558>
at NUnit.Engine.Runners.DirectTestRunner:EnsurePackageIsLoaded <0x00080>
at NUnit.Engine.Runners.DirectTestRunner:Explore <0x000a8>
at NUnit.Engine.Runners.MasterTestRunner:Explore <0x000a0>
at NUnit.VisualStudio.TestAdapter.NUnitEngine.NUnitEngineAdapter:Explore <0x000f4>
at NUnit.VisualStudio.TestAdapter.NUnit3TestExecutor:RunAssembly <0x002e0>
at NUnit.VisualStudio.TestAdapter.NUnit3TestExecutor:RunAssemblies <0x0037c>
at NUnit.VisualStudio.TestAdapter.NUnit3TestExecutor:RunTests <0x00648>
at Microsoft.VisualStudio.TestPlatform.Common.ExtensionDecorators.SerialTestRunDecorator:RunTests <0x00148>
at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution.RunTestsWithSources:InvokeExecutor <0x0010c>
at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution.BaseRunTests:RunTestInternalWithExecutors <0x01068>
at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution.BaseRunTests:RunTestsInternal <0x001a8>
at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution.BaseRunTests:RunTests <0x00100>
at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution.ExecutionManager:StartTestRun <0x00214>
at <>c__DisplayClass45_4:b__3 <0x001dc>
at <>c:<.ctor>b__31_2 <0x00068>
at Microsoft.VisualStudio.TestPlatform.Utilities.JobQueue`1:SafeProcessJob <0x0007c>
at Microsoft.VisualStudio.TestPlatform.Utilities.JobQueue`1:BackgroundJobProcessor <0x005dc>
at Microsoft.VisualStudio.TestPlatform.Utilities.JobQueue`1:<.ctor>b__16_0 <0x00074>
at System.Threading.Tasks.Task:InnerInvoke <0x000b0>
at <>c:<.cctor>b__292_0 <0x00064>
at System.Threading.ExecutionContext:RunInternal <0x00150>
at System.Threading.Tasks.Task:ExecuteWithThreadLocal <0x00450>
at System.Threading.Tasks.Task:ExecuteEntryUnsafe <0x00144>
at <>c:<.cctor>b__10_0 <0x000b0>
at System.Threading.Thread:StartCallback <0x001bc>
at System.Object:runtime_invoke_void__this__ <0x00110>
=================================================================
The active test run was aborted. Reason: Test host process crashed : =================================================================
External Debugger Dump:
=================================================================

JetBrains.FormatRipper.Tests test net9.0 failed with 1 error(s) (2.9s)
/home/fedora/format-ripper/net/JetBrains.FormatRipper/tests/bin/Debug/net9.0/JetBrains.FormatRipper.Tests.dll : error TESTRUNABORT: Test Run Aborted.

Build failed with 1 error(s) in 3.9s
```

### Regression?

_No response_

### Known Workarounds

Split `ElfFileTest.Sources` initialization initialization into make small functions.

### Configuration

OS: Fedora Linux 42 (Cloud Edition)
Arch: ppc64le
```
$ dotnet --info
.NET SDK:
Version: 10.0.108
Commit: 94ea82652c
Workload version: 10.0.100-manifests.b47d7e23
MSBuild version: 18.0.11+94ea82652

Runtime Environment:
OS Name: fedora
OS Version: 42
OS Platform: Linux
RID: fedora.42-ppc64le
Base Path: /usr/lib64/dotnet/sdk/10.0.108/

.NET workloads installed:
There are no installed workloads to display.
Configured to use workload sets when installing new manifests.
No workload sets are installed. Run "dotnet workload restore" to install a workload set.

Host:
Version: 10.0.8
Architecture: ppc64le
Commit: 94ea82652c

.NET SDKs installed:
9.0.117 [/usr/lib64/dotnet/sdk]
10.0.108 [/usr/lib64/dotnet/sdk]

.NET runtimes installed:
Microsoft.AspNetCore.App 9.0.16 [/usr/lib64/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 10.0.8 [/usr/lib64/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 9.0.16 [/usr/lib64/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 10.0.8 [/usr/lib64/dotnet/shared/Microsoft.NETCore.App]

Other architectures found:
None

Environment variables:
DOTNET_BUNDLE_EXTRACT_BASE_DIR [/home/fedora/.cache/dotnet_bundle_extract]
DOTNET_ROOT [/usr/lib64/dotnet]

global.json file:
Not found

Learn more:
https://aka.ms/dotnet/info

Download .NET:
https://aka.ms/dotnet/download
```

### Other information

_No response_

Contributor guide

Open the contributing guide

Research direction

Check the format-ripper repository on branch `ww898/crash-on-ppc64le`, starting in `net/JetBrains.FormatRipper/tests/` and the `ElfFileTest.Sources` initialization. Run the provided `dotnet test` command on Fedora ppc64le and inspect the NUnit `TypeHelper:ConvertArgumentList` crash, comparing .NET 9 and 10. Done means the large test source executes without a SIGSEGV.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
operating-systems, testing-qa
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.