[linux-ppc64le] SIGSEGV on large test source execution
- 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
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