microsoft / microsoft/STL

ARM64/ARM64EC runtime assertions in `P0811R3_midpoint_lerp`

Open
#5,685 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

ARM64 ARM64EC test
Dominant language
C++
Stars
11.2k
Forks
1.7k
Avg merge
4d 15h
Merged PRs (30d)
22

Description

With the latest available Windows 11 SDK (10.0.26100.4188), P0811R3_midpoint_lerp fails assert(check_feexcept(0)) at runtime on ARM64:

https://github.com/microsoft/STL/blob/a2686a066284a6475502730bdba87329bc7e167e/tests/std/tests/P0811R3_midpoint_lerp/test.cpp#L1048-L1053

Click to expand test logs for the 2 failing configurations:
C:\GitHub\STL\out\ARM64>python %STL%\tools\scripts\print_failures.py testing_ARM64.log
code: FAIL
name: std :: tests/P0811R3_midpoint_lerp:34
output: Build setup steps:
Build steps:
Command: "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\HostARM64\ARM64\cl.EXE" "C:\GitHub\STL\tests\std\tests\P0811R3_midpoint_lerp\test.cpp" "-IC:\GitHub\STL\out\ARM64\out\inc" "-IC:\GitHub\STL\llvm-project\libcxx\test\support" "-IC:\GitHub\STL\tests\std\include" "/nologo" "/Od" "/W4" "/w14061" "/w14242" "/w14265" "/w14582" "/w14583" "/w14587" "/w14588" "/w14749" "/w14841" "/w14842" "/w15038" "/w15214" "/w15215" "/w15216" "/w15217" "/w15262" "/sdl" "/WX" "/D_ENABLE_STL_INTERNAL_CHECK" "/bigobj" "/FIforce_include.hpp" "/w14365" "/w14668" "/w15267" "/D_ENFORCE_FACET_SPECIALIZATIONS=1" "/w14640" "/Zc:threadSafeInit-" "/EHsc" "/MTd" "/D_ITERATOR_DEBUG_LEVEL=0" "/std:c++latest" "/permissive-" "/fp:strict" "/Od" "-FeC:\GitHub\STL\out\ARM64\tests\std\tests\P0811R3_midpoint_lerp\Output\34\P0811R3_midpoint_lerp.exe" "-link" "-LIBPATH:C:\GitHub\STL\out\ARM64\out\lib\arm64" "-LIBPATH:C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\lib\arm64" "/MANIFEST:EMBED"
Exit Code: 0 (0x0)
Standard Output:
--
test.cpp
--

Intellisense response file steps:
Test setup steps:
Test steps:
Test step failed unexpectedly.
Command: "C:\GitHub\STL\out\ARM64\tests\std\tests\P0811R3_midpoint_lerp\Output\34\P0811R3_midpoint_lerp.exe"
Exit Code: 3 (0x3)
Standard Error:
--
Assertion failed: check_feexcept(0), file C:\GitHub\STL\tests\std\tests\P0811R3_midpoint_lerp\test.cpp, line 1052
abort() has been called--


==================================================
code: FAIL
name: std :: tests/P0811R3_midpoint_lerp:35
output: Build setup steps:
Build steps:
Command: "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\HostARM64\ARM64\cl.EXE" "C:\GitHub\STL\tests\std\tests\P0811R3_midpoint_lerp\test.cpp" "-IC:\GitHub\STL\out\ARM64\out\inc" "-IC:\GitHub\STL\llvm-project\libcxx\test\support" "-IC:\GitHub\STL\tests\std\include" "/nologo" "/Od" "/W4" "/w14061" "/w14242" "/w14265" "/w14582" "/w14583" "/w14587" "/w14588" "/w14749" "/w14841" "/w14842" "/w15038" "/w15214" "/w15215" "/w15216" "/w15217" "/w15262" "/sdl" "/WX" "/D_ENABLE_STL_INTERNAL_CHECK" "/bigobj" "/FIforce_include.hpp" "/w14365" "/w14668" "/w15267" "/D_ENFORCE_FACET_SPECIALIZATIONS=1" "/w14640" "/Zc:threadSafeInit-" "/EHsc" "/MTd" "/D_ITERATOR_DEBUG_LEVEL=0" "/std:c++latest" "/permissive-" "/fp:strict" "/O2" "-FeC:\GitHub\STL\out\ARM64\tests\std\tests\P0811R3_midpoint_lerp\Output\35\P0811R3_midpoint_lerp.exe" "-link" "-LIBPATH:C:\GitHub\STL\out\ARM64\out\lib\arm64" "-LIBPATH:C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\lib\arm64" "/MANIFEST:EMBED"
Exit Code: 0 (0x0)
Standard Output:
--
test.cpp
--
Standard Error:
--
cl : Command line warning D9025 : overriding '/Od' with '/O2'
--

Intellisense response file steps:
Test setup steps:
Test steps:
Test step failed unexpectedly.
Command: "C:\GitHub\STL\out\ARM64\tests\std\tests\P0811R3_midpoint_lerp\Output\35\P0811R3_midpoint_lerp.exe"
Exit Code: 3 (0x3)
Standard Error:
--
Assertion failed: check_feexcept(0), file C:\GitHub\STL\tests\std\tests\P0811R3_midpoint_lerp\test.cpp, line 1052
abort() has been called--

I'm going to skip these asserts for ARM64, but we should investigate the root cause.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with tests/std/tests/P0811R3_midpoint_lerp/test.cpp, especially lines 1048-1053 and the check_feexcept(0) assertions. Reproduce test configurations 34 and 35 on ARM64 with the reported Windows 11 SDK and compare their behavior with other configurations. Done means identifying the ARM64/ARM64EC root cause and determining the appropriate test handling rather than only skipping the assertions.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.