[Clang] Internal compiler error when compiling a project with C++20 modules
- Dominant language
- LLVM
- Stars
- 40.5k
- Forks
- 18.7k
- PR merge metrics
- PR metrics pending
Description
Hello, when compiling my project with clang 22.1.3, I get the following error:
[ScenePresets-5a9b01.sh](https://github.com/user-attachments/files/29312924/ScenePresets-5a9b01.sh)
ScenePresets-5a9b01.cppm file (I was unable to add it to attachments):
```cpp
# 1 "C:\\Projects\\Zest\\src\\Runtime\\ScenePresets.cpp"
# 1 "" 1
# 1 "" 3
# 487 "" 3
# 1 "" 1
# 1 "" 2
# 1 "C:\\Projects\\Zest\\src\\Runtime\\ScenePresets.cpp" 2
module Zest.Runtime:ScenePresets.Impl;
import Zest.Core;
import Zest.Scene;
import Zest.Graphics;
import :ScenePresets;
static void DefaultScene(Scene& scene)
{
const auto& resourcesFolder = ProjectSettings::Get().ResourcesFolder;
EntityHandle cube1 = scene.CreateEntity("cube1");
auto cube2 = scene.CreateEntity("cube2");
auto cube1_1 = scene.CreateEntity("cube1-1", {}, cube1);
auto cube1_2 = scene.CreateEntity("cube1-2", {}, cube1);
scene.DetachFromParent(cube1_1);
scene.AttachToParent(cube1, cube2);
scene.DestroyEntity(cube1_2);
auto _ = scene.ImportEntity(resourcesFolder / "Meshes\\Chess\\chess_set_4k.gltf",
Transform{ .position = { -2, 1, 0 }, .scale = { 0.5f, 0.5f, 0.5f } });
# 34 "C:\\Projects\\Zest\\src\\Runtime\\ScenePresets.cpp"
auto& meshLoader = ResourceManager::Get().meshLoader;
auto cubePath = resourcesFolder / "Meshes\\cube.glb";
auto spherePath = resourcesFolder / "Meshes\\sphere.glb";
auto chessPath = resourcesFolder / "Meshes\\Chess\\chess.gltf";
auto sponzaPath = resourcesFolder / "Meshes\\Sponza\\sponza.glb";
scene.cameras.emplace_back();
# 68 "C:\\Projects\\Zest\\src\\Runtime\\ScenePresets.cpp"
}
static void OrthographicScene(Scene& scene)
{
scene.cameras.emplace_back(
Camera(CameraProjection(CameraProjection::ProjectionType::ORTHOGRAPHIC, 1500, 16.0f / 9.0f, 0.5f)));
auto& meshLoader = ResourceManager::Get().meshLoader;
const auto& resourcesFolder = ProjectSettings::Get().ResourcesFolder;
auto sponzaPath = resourcesFolder / "Meshes\\Sponza\\sponza.glb";
}
void ScenePresets::AddPresets(SceneManager& sceneManager)
{
sceneManager.RegisterScene("Default Scene", &DefaultScene);
sceneManager.RegisterScene("Orthographic Scene", &OrthographicScene);
}
```
Crash log:
```
Stack dump:
0. Program arguments: "C:\\Program Files\\Microsoft Visual Studio\\18\\Insiders\\VC\\Tools\\Llvm\\x64\\bin\\clang-cl.exe" /nologo -TP -DD3D12_AGILITY_SDK_ENABLED -DDIRECTX_AGILITY_SDK_VERSION=618 -DIMGUI_ENABLED=1 -DNOMINMAX -DVEX_DEBUG=1 -DVEX_DEVELOPMENT=0 -DVEX_DX12=1 -DVEX_DXC=0 -DVEX_MODULES=1 -DVEX_SHADER_COMPILER=1 -DVEX_SHIPPING=0 -DVEX_SLANG=1 -DVEX_VULKAN=0 -DWIN32_LEAN_AND_MEAN -DZEST_IMPORT_STD=0 -D_CRT_SECURE_NO_WARNINGS -D_MBCS -DCMAKE_INTDIR=\"Debug\" -IC:\\Projects\\Zest\\out\\_deps\\tinygltf-src -IC:\\Projects\\Zest\\src -IC:\\Projects\\Zest\\shared -IC:\\Projects\\Zest\\out\\_deps\\imgui-src -IC:\\Projects\\Zest\\out\\_deps\\imgui-module-src\\cimgui\\imgui\\backends -IC:\\Projects\\Zest\\external\\Vex\\src -IC:\\Projects\\Zest\\out\\_deps\\vex-build\\src -IC:\\Projects\\Zest\\out\\_deps\\DirectX-AgilitySDK-1.618.4\\build\\native\\include -IC:\\Projects\\Zest\\out\\_deps\\slang_2026.7-src -IC:\\Projects\\Zest\\out\\_deps\\magic_enum-src\\include -IC:\\Projects\\Zest\\out\\_deps\\glfw-src\\include -imsvcC:\\Projects\\Zest\\out\\_deps\\slang_2026.7-src\\include -imsvcC:\\Projects\\Zest\\out\\_deps\\PixEvents\\include /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od -clang:-std=c++23 -MDd -RTC1 -Zi -clang:-MD -clang:-MTCMakeFiles\\Zest.dir\\Debug\\src\\Runtime\\ScenePresets.cpp.obj -clang:-MFCMakeFiles\\Zest.dir\\Debug\\src\\Runtime\\ScenePresets.cpp.obj.d @CMakeFiles\\Zest.dir\\Debug\\src\\Runtime\\ScenePresets.cpp.obj.modmap /FoCMakeFiles\\Zest.dir\\Debug\\src\\Runtime\\ScenePresets.cpp.obj /FdCMakeFiles\\Zest.dir\\Debug\\ -c -- C:\\Projects\\Zest\\src\\Runtime\\ScenePresets.cpp
1. parser at end of file
2. Per-file LLVM IR generation
3. C:\Projects\Zest\src\Runtime\ScenePresets.cpp:9:13: Generating code for declaration 'DefaultScene'
Exception Code: 0xC0000005
#0 0x00007ff6e5234783 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x18e4783)
#1 0x00007ff6e523900f (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x18e900f)
#2 0x00007ff6e52347e2 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x18e47e2)
#3 0x00007ff6e4fa0c66 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x1650c66)
#4 0x00007ff6e5285efc (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x1935efc)
#5 0x00007ff6e5273f75 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x1923f75)
#6 0x00007ff6e52700e0 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x19200e0)
#7 0x00007ff6e5264b7b (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x1914b7b)
#8 0x00007ff6e5262685 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x1912685)
#9 0x00007ff6e52610fc (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x19110fc)
#10 0x00007ff6e3bc3b0e (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x273b0e)
#11 0x00007ff6e5255e29 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x1905e29)
#12 0x00007ff6e4eece9d (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x159ce9d)
#13 0x00007ff6e4f90a1d (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x1640a1d)
#14 0x00007ff6e5260c34 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x1910c34)
#15 0x00007ff6e525736a (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x190736a)
#16 0x00007ff6e5255e11 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x1905e11)
#17 0x00007ff6e4eece9d (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x159ce9d)
#18 0x00007ff6e4f90a1d (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x1640a1d)
#19 0x00007ff6e52737a8 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x19237a8)
#20 0x00007ff6e3959124 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x9124)
#21 0x00007ff6e39586c6 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x86c6)
#22 0x00007ff6e39556fb (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x56fb)
#23 0x00007ff6e395523e (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x523e)
#24 0x00007ff6e4bec10e (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x129c10e)
#25 0x00007ff6e4bebc1f (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x129bc1f)
#26 0x00007ff6e4bea2e2 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x129a2e2)
#27 0x00007ff6e4be6b8d (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x1296b8d)
#28 0x00007ff6e4be5ed5 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x1295ed5)
#29 0x00007ff6e4be57b4 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x12957b4)
#30 0x00007ff6e421c6ce (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x8cc6ce)
#31 0x00007ff6e421c61d (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x8cc61d)
#32 0x00007ff6e4cd998d (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x138998d)
#33 0x00007ff6e71ec953 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x389c953)
#34 0x00007ff6e4ddf610 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x148f610)
#35 0x00007ff6e3f88493 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x638493)
#36 0x00007ff6e3f880cd (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x6380cd)
#37 0x00007ff6e3f862c9 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x6362c9)
#38 0x00007ff6e3f821af (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x6321af)
#39 0x00007ff6e3f80b25 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x630b25)
#40 0x00007ff6e48d8a5d (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0xf88a5d)
#41 0x00007ff6e41501d5 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x8001d5)
#42 0x00007ff6e414ffc8 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x7fffc8)
#43 0x00007ff6e3a9083b (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x14083b)
#44 0x00007ff6e3a9017e (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x14017e)
#45 0x00007ff6e3a8fe92 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x13fe92)
#46 0x00007ff6e3a87b0d (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x137b0d)
#47 0x00007ff6e3a84a83 (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x134a83)
#48 0x00007ff6e59ac9ec (C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin\clang-cl.exe+0x205c9ec)
#49 0x00007ffc383be957 (C:\WINDOWS\System32\KERNEL32.DLL+0x2e957)
#50 0x00007ffc39ac7c1c (C:\WINDOWS\SYSTEM32\ntdll.dll+0x87c1c)
clang-cl: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 22.1.3 (https://github.com/llvm/llvm-project e9846648fd6183ee6d8cbdb4502213fcf902a211)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin
clang-cl: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-cl: note: diagnostic msg: C:\Users\narvi\AppData\Local\Temp\ScenePresets-5a9b01.cppm
clang-cl: note: diagnostic msg: C:\Users\narvi\AppData\Local\Temp\ScenePresets-5a9b01.sh
clang-cl: note: diagnostic msg:
```
Contributor guide
Research direction
Start by running the provided clang-cl command with ScenePresets-5a9b01.cppm and ScenePresets-5a9b01.sh, then inspect the crash at DefaultScene in ScenePresets.cpp. Use the stack dump and preprocessed source to isolate the C++20 modules failure. Done means clang-cl no longer raises an internal compiler error for this reproducer.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 42/100