DirectXShaderCompiler icon indicating copy to clipboard operation
DirectXShaderCompiler copied to clipboard

ExecutionTest::ATOProgOffset is crashes on ARM64

Open hekota opened this issue 2 years ago • 2 comments

Description ExecutionTest::ATOProgOffset is failing on ARM64

Steps to Reproduce Repros in internal ARM64 testing pipeline. Reach out to @hekota for access to the device.

Actual Behavior

FAIL: clang-taef-exec :: ExecHLSLTests.dll/ExecutionTest::ATOProgOffset (206 of 206)
******************** TEST 'clang-taef-exec :: ExecHLSLTests.dll/ExecutionTest::ATOProgOffset' FAILED ********************
Test Authoring and Execution Framework v10.68 for arm64

Warning: TAEF will not listen for crashes from Windows Error Reporting because it failed to set up the listener. ([HRESULT 0x80070005] Failed to enable the Microsoft.Windows.FaultReporting TraceLogging provider in an ETW trace.)

Agility SDK not enabled.

Experimental mode enabled.

Debug layer enabled.



StartGroup: ExecutionTest::ATOProgOffset

Using Adapter:Microsoft Basic Render Driver

Using Adapter:Microsoft Basic Render Driver

Using Adapter:Microsoft Basic Render Driver

No error message given in the logs. When run directly on the machine TAEF reports crash (0xC0000005 - access violation).

Environment DXC version: main as of 1/22/2024 Surface Pro, Windows 11 (26016.1001, arm64)

hekota avatar Jan 23 '24 01:01 hekota

I have verified that it does not repro on x64 (pre-release Windows build 23H2 version 26016.1001).

hekota avatar Jan 25 '24 00:01 hekota

FYI @hekota @damyanp, this was a bug in WARP's arm64 code generation backend. Essentially, in the arm64 ISA, there's multiple variations of add instructions, and depending on which one is used, register 31 has a different meaning, either the stack pointer, or an always-zero value. WARP used the wrong one and ended up producing pointers that were 0-based instead of stack-based.

I coincidentally fixed this a few weeks ago due to a report on the DirectX Discord server (https://discord.com/channels/590611987420020747/596046911010504754/1227755899037286512). I confirmed that this test is passing on latest WARP bits on arm64, but crashes if I revert that fix. I'm hoping to get fixed binaries available via the WARP NuGet 1.0.12 soon.

jenatali avatar May 13 '24 21:05 jenatali

Fixed binaries are available in https://www.nuget.org/packages/Microsoft.Direct3D.WARP/1.0.12.

jenatali avatar May 17 '24 23:05 jenatali