llvm-msvc icon indicating copy to clipboard operation
llvm-msvc copied to clipboard

LLVM does not handle SEH binary

Open 54 opened this issue 11 months ago • 2 comments

When compiling xcpt4 test from https://github.com/backengineering/seh-tests with llvm-msvc, the frontend returns with an error. No artifacts included as it cannot even be compiled:

1>PLEASE submit a bug report to https://github.com/backengineering/llvm-msvc/issues and include the crash backtrace, preprocessed source, and associated run script.
1>Stack dump:
1>0.	Program arguments: C:\\Users\\based\\Downloads\\llvm-msvc_X86_64\\bin\\clang-cl.exe -cc1 -triple x86_64-pc-windows-msvc19.39.33519 -emit-llvm-bc -flto=full -flto-unit -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name xcpt4u.c -mrelocation-model pic -pic-level 2 -mframe-pointer=none -relaxed-aliasing -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -fms-volatile -funwind-tables=2 -target-cpu x86-64 -mllvm -x86-asm-syntax=intel -tune-cpu generic -D_MT -flto-visibility-public-std --dependent-lib=libcmt --dependent-lib=oldnames -stack-protector 2 -fexceptions -fasync-exceptions -fdefault-calling-conv=cdecl -fdiagnostics-format msvc -gno-column-info -gcodeview -debug-info-kind=constructor -fdebug-compilation-dir=C:\\Users\\based\\source\\repos\\seh-tests\\src\\xcpt4 -object-file-name=C:\\Users\\based\\source\\repos\\seh-tests\\src\\xcpt4\\x64\\Release\\xcpt4u.obj -ffunction-sections -fcoverage-compilation-dir=C:\\Users\\based\\source\\repos\\seh-tests\\src\\xcpt4 -resource-dir C:\\Users\\based\\Downloads\\llvm-msvc_X86_64\\lib\\clang\\18 -D BAIL_IN_FINALLY -D NDEBUG -D _CONSOLE -D _UNICODE -D UNICODE -internal-isystem C:\\Users\\based\\Downloads\\llvm-msvc_X86_64\\lib\\clang\\18\\include -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.39.33519\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.39.33519\\atlmfc\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\VS\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\um" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\winrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\cppwinrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\Include\\um" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.39.33519\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.39.33519\\atlmfc\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\VS\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\um" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\winrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\cppwinrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\Include\\um" -O2 -Wall -Wno-error -Wsystem-headers -ferror-limit 4294967295 -fno-use-cxa-atexit -fms-extensions -fms-compatibility -Wno-unused-function -Wno-unused-variable -Wno-unused-value -fms-compatibility-version=19.39.33519 -fno-inline -fno-caret-diagnostics -vectorize-loops -vectorize-slp -faddrsig -o x64\\Release\\xcpt4u.obj -x c xcpt4u.c
1>1.	<eof> parser at end of file
1>2.	xcpt4u.c:354:1: LLVM IR generation of declaration 'main'
1>3.	xcpt4u.c:354:1: Generating code for declaration 'main'
1>4.	xcpt4u.c:1342:48: LLVM IR generation of compound statement ('{}')
1>5.	xcpt4u.c:1348:21: LLVM IR generation of compound statement ('{}')
1>Exception Code: 0xC0000005
1> #0 0x00007ff6b28fcf7d (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x12ccf7d)
1> #1 0x00007ff6b28fea72 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x12cea72)
1> #2 0x00007ff6b27c33b9 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x11933b9)
1> #3 0x00007ff6b27c2ff4 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1192ff4)
1> #4 0x00007ff6b367b5c2 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x204b5c2)
1> #5 0x00007ff6b24f8b8c (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0xec8b8c)
1> #6 0x00007ff6b2a9d6c2 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x146d6c2)
1> #7 0x00007ff6b24f912f (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0xec912f)
1> #8 0x00007ff6b2a9da32 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x146da32)
1> #9 0x00007ff6b24f8e1c (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0xec8e1c)
1>#10 0x00007ff6b2a939c1 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x14639c1)
1>#11 0x00007ff6b2a90467 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1460467)
1>#12 0x00007ff6b2a90d4b (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1460d4b)
1>#13 0x00007ff6b2f62aaf (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1932aaf)
1>#14 0x00007ff6b3d75972 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x2745972)
1>#15 0x00007ff6b3156c47 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1b26c47)
1>#16 0x00007ff6b2f6188a (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x193188a)
1>#17 0x00007ff6b3156ad4 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1b26ad4)
1>#18 0x00007ff6b313ff0d (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1b0ff0d)
1>#19 0x00007ff6b31e0be2 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1bb0be2)
1>#20 0x00007ff6b1715b46 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0xe5b46)
1>#21 0x00007ff6b170f097 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0xdf097)
1>#22 0x00007ff6b1710fa1 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0xe0fa1)
1>#23 0x00007ff6b171f9e4 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0xef9e4)
1>#24 0x00007ff6b4ccae58 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x369ae58)
1>#25 0x00007ffaec8853e0 (C:\WINDOWS\System32\KERNEL32.DLL+0x153e0)
1>#26 0x00007ffaed26485b (C:\WINDOWS\SYSTEM32\ntdll.dll+0x485b)
1> #0 0x00007ff6b2481880 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0xe51880)
1> #1 0x00007ff6b24d29f5 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0xea29f5)
1> #2 0x00007ff6b21675ec (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0xb375ec)
1> #3 0x00007ff6b2c83802 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1653802)
1> #4 0x00007ff6b2b53d81 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1523d81)
1> #5 0x00007ff6b2b54045 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1524045)
1> #6 0x00007ff6b2b50ea1 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1520ea1)
1> #7 0x00007ff6b2b53b10 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1523b10)
1> #8 0x00007ff6b2b54045 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1524045)
1> #9 0x00007ff6b2b1d9ca (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x14ed9ca)
1>#10 0x00007ff6b2b1c99b (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x14ec99b)
1>#11 0x00007ff6b2b5437f (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x152437f)
1>#12 0x00007ff6b2b50ea1 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1520ea1)
1>#13 0x00007ff6b2b53b10 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1523b10)
1>#14 0x00007ff6b2b54045 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1524045)
1>#15 0x00007ff6b2b51b68 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1521b68)
1>#16 0x00007ff6b2b5419c (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x152419c)
1>#17 0x00007ff6b2b50ea1 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1520ea1)
1>#18 0x00007ff6b2b3f76d (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x150f76d)
1>#19 0x00007ff6b2a5f9ce (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x142f9ce)
1>#20 0x00007ff6b2a5f6a4 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x142f6a4)
1>#21 0x00007ff6b2a5f0e1 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x142f0e1)
1>#22 0x00007ff6b2a61c78 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1431c78)
1>#23 0x00007ff6b2f68fec (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1938fec)
1>#24 0x00007ff6b2f624b6 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x19324b6)
1>#25 0x00007ff6b3d758f6 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x27458f6)
1>#26 0x00007ff6b3156c47 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1b26c47)
1>#27 0x00007ff6b2f6188a (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x193188a)
1>#28 0x00007ff6b3156ad4 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1b26ad4)
1>#29 0x00007ff6b313ff0d (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1b0ff0d)
1>#30 0x00007ff6b31e0be2 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x1bb0be2)
1>#31 0x00007ff6b1715b46 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0xe5b46)
1>#32 0x00007ff6b170f097 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0xdf097)
1>#33 0x00007ff6b1710fa1 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0xe0fa1)
1>#34 0x00007ff6b171f9e4 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0xef9e4)
1>#35 0x00007ff6b4ccae58 (C:\Users\based\Downloads\llvm-msvc_X86_64\bin\clang-cl.exe+0x369ae58)
1>#36 0x00007ffaec8853e0 (C:\WINDOWS\System32\KERNEL32.DLL+0x153e0)
1>#37 0x00007ffaed26485b (C:\WINDOWS\SYSTEM32\ntdll.dll+0x485b)
1>clang-cl : error : clang frontend command failed due to signal (use -v to see invocation)
1>clang-cl : error : clang frontend command failed due to signal (use -v to see invocation)
1>clang version 18.0.0git (https://github.com/backengineering/llvm-msvc ec97d6534b36923f5de623bcf51c95ae5e953e34)
1>Target: x86_64-pc-windows-msvc
1>Thread model: posix
1>InstalledDir: C:\Users\based\Downloads\llvm-msvc_X86_64\bin
1>Done building project "xcpt4.vcxproj" -- FAILED.

54 avatar Mar 06 '24 02:03 54

here is the source code of the binary causing the crash: https://github.com/microsoft/windows_seh_tests/blob/main/src/xcpt4/xcpt4ex.c

I suspect the crash is happening because the compiler is trying to handle too many __leave operations? Idk, msvc can compile this code and it generates local unwinds.

CR3Swapper avatar Mar 06 '24 02:03 CR3Swapper

The cause of the crash is __finally. It's going to take some time to figure it out.

gmh5225 avatar Mar 07 '24 00:03 gmh5225