Skip to content

modpowTest.FastReducer_AssertFailure_RegressionTest hanging/timing out #126212

Description

@kg

Build Information

Build: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1355029&view=logs&jobId=f1f3e473-935f-5de7-3348-701fec448dfb
Build error leg or test failing: System.Numerics.Tests.modpowTest.FastReducer_AssertFailure_RegressionTest

Error Message

Fill the error message using step by step known issues guidance.

{
  "ErrorMessage": ["System.Runtime.Numerics.Tests: [Long Running Test] 'System.Numerics.Tests.modpowTest.FastReducer_AssertFailure_RegressionTest'", "['System.Runtime.Numerics.Tests' END OF WORK ITEM LOG: Command timed out, and was killed]"],
  "BuildRetry": false,
  "ExcludeConsoleLog": false
}

Known issue validation

Build: 🔎 https://dev.azure.com/dnceng-public/public/_build/results?buildId=1355029
Error message validated: [System.Runtime.Numerics.Tests: [Long Running Test] 'System.Numerics.Tests.modpowTest.FastReducer_AssertFailure_RegressionTest' ['System.Runtime.Numerics.Tests' END OF WORK ITEM LOG: Command timed out, and was killed]]
Result validation: ✅ Known issue matched with the provided build.
Validation performed at: 3/27/2026 5:29:45 PM UTC

Report

Build Definition Test Pull Request
1354941 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126157
1355572 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #125759
1356001 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #125406
1356039 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #120326
1355990 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126238
1355962 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126178
1355949 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126236
1355930 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126233
1355912 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126070
1355029 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #125770
1355869 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126140
1355856 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126032
1355847 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126231
1355842 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126226
1355834 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126228
1355822 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126164
1355782 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126229
1355768 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126223
1355765 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126123
1355753 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #125472
1355695 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #125554
1355666 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126225
1355652 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126169
1355638 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #125835
1355623 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #124926
1355621 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution
1355570 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #125868
1355507 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126209
1355504 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126217
1355467 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126215
1355455 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #125973
1355425 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126178
1355410 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126185
1355396 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126061
1355393 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126141
1355349 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126132
1355195 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126116
1355026 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126150
1355019 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126111
1355012 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126204
1355000 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126202
1354974 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126203
1354874 dotnet/runtime System.Runtime.Numerics.Tests.WorkItemExecution #126199

Summary

24-Hour Hit Count 7-Day Hit Count 1-Month Count
0 43 43

Activity

  1. added
    Known Build ErrorUse this to report build issues in the .NET Helix tab
    on Mar 27, 2026
  2. dotnet-policy-service commented on Mar 27, 2026

    @dotnet-policy-service
    Contributor

    Tagging subscribers to this area: @dotnet/area-system-numerics
    See info in area-owners.md if you want to be subscribed.

  3. MihuBot commented on Mar 27, 2026

    @MihuBot

    I'm a bot. Here is a possible related and/or duplicate issue (I may be wrong):

  4. jkotas commented on Mar 27, 2026

    @jkotas
    Member

    The hang seems to hit on 32-bit platforms (x86 and arm32) at this callstack:

    System_Runtime_Numerics_Tests!System_Runtime_Numerics_System_Numerics_BigIntegerCalculator__AddSelf+0x55 [/_/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigIntegerCalculator.AddSub.cs @ 67] 
    System_Runtime_Numerics_Tests!System_Runtime_Numerics_System_Numerics_BigIntegerCalculator_FastReducer__SubMod+0x3d [/_/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigIntegerCalculator.FastReducer.cs @ 115] 
    System_Runtime_Numerics_Tests!System_Runtime_Numerics_System_Numerics_BigIntegerCalculator_FastReducer__Reduce+0xad [/_/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigIntegerCalculator.FastReducer.cs @ 64] 
    System_Runtime_Numerics_Tests!System_Runtime_Numerics_System_Numerics_BigIntegerCalculator__PowCore_7+0x73 [/_/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigIntegerCalculator.PowMod.cs @ 854] 
    System_Runtime_Numerics_Tests!System_Runtime_Numerics_System_Numerics_BigIntegerCalculator__PowCore_6+0x59 [/_/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigIntegerCalculator.PowMod.cs @ 829] 
    System_Runtime_Numerics_Tests!System_Runtime_Numerics_System_Numerics_BigIntegerCalculator__PowCoreBarrett+0x131 [/_/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigIntegerCalculator.PowMod.cs @ 407] 
    System_Runtime_Numerics_Tests!System_Runtime_Numerics_System_Numerics_BigIntegerCalculator__PowCore_3+0x68 [/_/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigIntegerCalculator.PowMod.cs @ 383] 
    System_Runtime_Numerics_Tests!System_Runtime_Numerics_System_Numerics_BigIntegerCalculator__Pow_6+0x10f [/_/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigIntegerCalculator.PowMod.cs @ 287] 
    System_Runtime_Numerics_Tests!System_Runtime_Numerics_System_Numerics_BigInteger__ModPow+0x15a [/_/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigInteger.cs @ 1145] 
    System_Runtime_Numerics_Tests!System_Runtime_Numerics_Tests_System_Numerics_Tests_modpowTest__FastReducer_AssertFailure_RegressionTest+0x42 [/_/src/libraries/System.Runtime.Numerics/tests/BigInteger/modpow.cs @ 383] 
    
  5. added
    disabled-testThe test is disabled in source code against the issue
    on Mar 28, 2026
  6. added this to the 11.0.0 milestone on Mar 28, 2026
  7. danmoseley commented on Mar 28, 2026

    @danmoseley
    Contributor

    Note

    This analysis was generated by GitHub Copilot.

    Root Cause Analysis

    The most likely cause is PR #125799 ("Rewrite BigInteger internals to use native-width (nuint) limbs"), merged on March 26 — one day before this issue was opened.

    That PR is a large rewrite (29 files, thousands of lines) converting all BigInteger internals from uint[] to nuint[]. On 64-bit platforms nuint is 64 bits (fewer limbs, faster), but on 32-bit platforms nuint is still 32 bits.

    Why it times out on 32-bit

    The test isn't failing with an assertion — it's timing out (killed after running too long). The rewrite changed FastReducer.SubMod to include a new compensating loop:

    // Barrett's quotient estimate may overshoot by up to 2
    while (CompareActual(left, right) < 0)
    {
        AddSelf(left, modulus);
    }

    On 32-bit, there are twice as many limbs for the same number, so the multiply/divide/compare operations in the Barrett reduction inner loop are significantly more expensive. The test's large inputs likely push past the timeout threshold on 32-bit.

    Timeline

    Status

    The test is now disabled on 32-bit. The underlying perf regression on 32-bit hasn't been addressed — just the symptom suppressed.

  8. danmoseley commented on Mar 28, 2026

    @danmoseley
    Contributor
  9. added 2 commits that reference this issue on Mar 28, 2026
    8f37f31
    87f7ef2
  10. added a commit that references this issue on Apr 2, 2026
    7891017
  11. added a commit that references this issue on Apr 9, 2026
    24fbdcd
  12. locked and limited conversation to collaborators on May 3, 2026
  13. added a commit that references this issue on Jul 15, 2026
    c4eb203
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Known Build ErrorUse this to report build issues in the .NET Helix tabarea-System.Numericsdisabled-testThe test is disabled in source code against the issue

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions