Repository navigation
modpowTest.FastReducer_AssertFailure_RegressionTest hanging/timing out #126212
Description
Activity
- addedKnown Build ErrorUse this to report build issues in the .NET Helix tabUse this to report build issues in the .NET Helix tab
on Mar 27, 2026 - addeduntriagedNew issue has not been triaged by the area ownerNew issue has not been triaged by the area owner
on Mar 27, 2026 dotnet-policy-service commented
on Mar 27, 2026 ContributorMore actionsTagging subscribers to this area: @dotnet/area-system-numerics
See info in area-owners.md if you want to be subscribed.I'm a bot. Here is a possible related and/or duplicate issue (I may be wrong):
Reacted by Katelyn GaddThe 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]Reacted by Adam Sitnik- added a commit that references this issue
on Mar 27, 2026 - addeddisabled-testThe test is disabled in source code against the issueThe test is disabled in source code against the issue
on Mar 28, 2026 - removeduntriagedNew issue has not been triaged by the area ownerNew issue has not been triaged by the area owner
on Mar 28, 2026 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[]tonuint[]. On 64-bit platformsnuintis 64 bits (fewer limbs, faster), but on 32-bit platformsnuintis 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.SubModto 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
- Mar 26: PR Rewrite BigInteger internals to use native-width (nuint) limbs #125799 merged (nuint rewrite)
- Mar 27: This issue opened — test timing out across 30+ unrelated PRs
- Mar 28: PR Disable FastReducer_AssertFailure_RegressionTest on 32-bit platforms #126216 disabled the test on 32-bit with
[ActiveIssue]
Status
The test is now disabled on 32-bit. The underlying perf regression on 32-bit hasn't been addressed — just the symptom suppressed.
- added 2 commits that reference this issue
on Mar 28, 2026 - added a commit that references this issue
on Apr 2, 2026 - added a commit that references this issue
on Apr 9, 2026 - locked and limited conversation to collaborators
on May 3, 2026 - added a commit that references this issue
on Jul 15, 2026
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
Summary