llvm/llvm-project

C++ Member pointer with module causing clang crash

Open

#167.638 aperta il 12 nov 2025

Vedi su GitHub
 (10 commenti) (0 reazioni) (1 assegnatario)C++ (10.782 fork)batch import
clang:modulescrashhelp wantedplatform:windows

Metriche repository

Star
 (26.378 star)
Metriche merge PR
 (Merge medio 1g 2h) (1000 PR mergiate in 30 g)

Descrizione

these code can reproduce the issue, using clang 21.1.5

module1

export module test;

export
struct foo{
	int v;
	int get() const noexcept{
		return v;
	}
};

module2

export module test_2;

import test;
import std;

export
void bar(){
	std::vector<foo> foos;
	[[maybe_unused]] auto itr = std::ranges::find(foos, 0, &foo::get);
}

main.cpp

import test_2;
import std;

int main() {
    bar();
}

Move the function bar into module test and import test; then the issue CANNOT be reproduced.

Both member pointer and member function pointer seem cause this issue.

My console output, conataining compile option

[  1%]: <mo_yanxi> generating.module.deps src\main.cpp
d:\lib\llvm\bin\clang-scan-deps.exe --format=p1689 -- D:\lib\LLVM\bin\clang++ -x c++ -Qunused-arguments -m64 --target=x86_64-windows-msvc -g -Wall -O0 -std=c++26 -fexceptions -fcxx-exceptions -finput-charset=UTF-8 -fexec-charset=UTF-8 -c src\main.cpp -o build\.objs\mo_yanxi\windows\x64\debug\src\main.cpp.obj
[  1%]: <mo_yanxi> generating.module.deps src\test.ixx
d:\lib\llvm\bin\clang-scan-deps.exe --format=p1689 -- D:\lib\LLVM\bin\clang++ -x c++ -Qunused-arguments -m64 --target=x86_64-windows-msvc -g -Wall -O0 -std=c++26 -fexceptions -fcxx-exceptions -finput-charset=UTF-8 -fexec-charset=UTF-8 -c src\test.ixx -o build\.objs\mo_yanxi\windows\x64\debug\src\test.ixx.obj
[ 25%]: <mo_yanxi> compiling.module.bmi.debug test
D:\lib\LLVM\bin\clang++ -c -Qunused-arguments -m64 --target=x86_64-windows-msvc -g -Wall -O0 -std=c++26 -fexceptions -fcxx-exceptions -finput-charset=UTF-8 -fexec-charset=UTF-8 -x c++-module --precompile -o build\.gens\mo_yanxi\windows\x64\debug\rules\bmi\cache\interfaces\5df994ea6185f58f\test.pcm src\test.ixx
[ 34%]: <mo_yanxi> compiling.module.bmi.debug test_2
D:\lib\LLVM\bin\clang++ -c -Qunused-arguments -m64 --target=x86_64-windows-msvc -g -Wall -O0 -std=c++26 -fexceptions -fcxx-exceptions -finput-charset=UTF-8 -fexec-charset=UTF-8 -fmodule-file=std=build\.gens\mo_yanxi\windows\x64\debug\rules\bmi\cache\interfaces\af132e7790dc3ea1\std.pcm -fmodule-file=test=build\.gens\mo_yanxi\windows\x64\debug\rules\bmi\cache\interfaces\5df994ea6185f58f\test.pcm -x c++-module --precompile -o build\.gens\mo_yanxi\windows\x64\debug\rules\bmi\cache\interfaces\effb05a9a0b27bb6\test_2.pcm src\test2.ixx
[ 43%]: compiling.debug src\test.ixx
D:\lib\LLVM\bin\clang++ -c -Qunused-arguments -m64 --target=x86_64-windows-msvc -g -Wall -O0 -std=c++26 -fexceptions -fcxx-exceptions -finput-charset=UTF-8 -fexec-charset=UTF-8 -o build\.objs\mo_yanxi\windows\x64\debug\src\test.ixx.obj build\.gens\mo_yanxi\windows\x64\debug\rules\bmi\cache\interfaces\5df994ea6185f58f\test.pcm
[ 51%]: compiling.debug src\test2.ixx
D:\lib\LLVM\bin\clang++ -c -Qunused-arguments -m64 --target=x86_64-windows-msvc -g -Wall -O0 -std=c++26 -fexceptions -fcxx-exceptions -finput-charset=UTF-8 -fexec-charset=UTF-8 -fmodule-file=std=build\.gens\mo_yanxi\windows\x64\debug\rules\bmi\cache\interfaces\af132e7790dc3ea1\std.pcm -fmodule-file=test=build\.gens\mo_yanxi\windows\x64\debug\rules\bmi\cache\interfaces\5df994ea6185f58f\test.pcm -o build\.objs\mo_yanxi\windows\x64\debug\src\test2.ixx.obj build\.gens\mo_yanxi\windows\x64\debug\rules\bmi\cache\interfaces\effb05a9a0b27bb6\test_2.pcm
[ 69%]: compiling.debug src\main.cpp
D:\lib\LLVM\bin\clang++ -c -Qunused-arguments -m64 --target=x86_64-windows-msvc -g -Wall -O0 -std=c++26 -fexceptions -fcxx-exceptions -finput-charset=UTF-8 -fexec-charset=UTF-8 -fmodule-file=std=build\.gens\mo_yanxi\windows\x64\debug\rules\bmi\cache\interfaces\af132e7790dc3ea1\std.pcm -fmodule-file=test_2=build\.gens\mo_yanxi\windows\x64\debug\rules\bmi\cache\interfaces\effb05a9a0b27bb6\test_2.pcm -fmodule-file=test=build\.gens\mo_yanxi\windows\x64\debug\rules\bmi\cache\interfaces\5df994ea6185f58f\test.pcm -o build\.objs\mo_yanxi\windows\x64\debug\src\main.cpp.obj src\main.cpp
error: PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: D:\\lib\\LLVM\\bin\\clang++ -c -Qunused-arguments -m64 --target=x86_64-windows-msvc -g -Wall -O0 -std=c++26 -fexceptions -fcxx-exceptions -finput-charset=UTF-8 -fexec-charset=UTF-8 -fmodule-file=std=build\\.gens\\mo_yanxi\\windows\\x64\\debug\\rules\\bmi\\cache\\interfaces\\af132e7790dc3ea1\\std.pcm -fmodule-file=test=build\\.gens\\mo_yanxi\\windows\\x64\\debug\\rules\\bmi\\cache\\interfaces\\5df994ea6185f58f\\test.pcm -fdiagnostics-color=always -o build\\.objs\\mo_yanxi\\windows\\x64\\debug\\src\\test2.ixx.obj build\\.gens\\mo_yanxi\\windows\\x64\\debug\\rules\\bmi\\cache\\interfaces\\effb05a9a0b27bb6\\test_2.pcm
1.      <eof> parser at end of file
2.      D:\projects\untitled\src\test2.ixx:7:6: LLVM IR generation of declaration 'bar'
3.      D:\projects\untitled\src\test2.ixx:7:6: Generating code for declaration 'bar'
Exception Code: 0xC0000005
 #0 0x00007ff766c084a7 (D:\lib\LLVM\bin\clang++.exe+0x17e84a7)
 #1 0x00007ff7654845df (D:\lib\LLVM\bin\clang++.exe+0x645df)
 #2 0x00007ff766e71201 (D:\lib\LLVM\bin\clang++.exe+0x1a51201)
 #3 0x00007ff766e8c5e4 (D:\lib\LLVM\bin\clang++.exe+0x1a6c5e4)
 #4 0x00007ff766e8ae89 (D:\lib\LLVM\bin\clang++.exe+0x1a6ae89)
 #5 0x00007ff766e86c01 (D:\lib\LLVM\bin\clang++.exe+0x1a66c01)
 #6 0x00007ff766e90bc9 (D:\lib\LLVM\bin\clang++.exe+0x1a70bc9)
 #7 0x00007ff766e7a1ac (D:\lib\LLVM\bin\clang++.exe+0x1a5a1ac)
 #8 0x00007ff7656f593e (D:\lib\LLVM\bin\clang++.exe+0x2d593e)
 #9 0x00007ff7656f564d (D:\lib\LLVM\bin\clang++.exe+0x2d564d)
#10 0x00007ff766e8cd3d (D:\lib\LLVM\bin\clang++.exe+0x1a6cd3d)
#11 0x00007ff766e8ced1 (D:\lib\LLVM\bin\clang++.exe+0x1a6ced1)
#12 0x00007ff766e8c965 (D:\lib\LLVM\bin\clang++.exe+0x1a6c965)
#13 0x00007ff76663a8a2 (D:\lib\LLVM\bin\clang++.exe+0x121a8a2)
#14 0x00007ff765430c6d (D:\lib\LLVM\bin\clang++.exe+0x10c6d)
#15 0x00007ff76542eefb (D:\lib\LLVM\bin\clang++.exe+0xeefb)
#16 0x00007ff7666328c9 (D:\lib\LLVM\bin\clang++.exe+0x12128c9)
#17 0x00007ff7666303ae (D:\lib\LLVM\bin\clang++.exe+0x12103ae)
#18 0x00007ff76662fefe (D:\lib\LLVM\bin\clang++.exe+0x120fefe)
#19 0x00007ff76662e515 (D:\lib\LLVM\bin\clang++.exe+0x120e515)
#20 0x00007ff76662bf4e (D:\lib\LLVM\bin\clang++.exe+0x120bf4e)
#21 0x00007ff76662b4cd (D:\lib\LLVM\bin\clang++.exe+0x120b4cd)
#22 0x00007ff766abef37 (D:\lib\LLVM\bin\clang++.exe+0x169ef37)
#23 0x00007ff766abbb12 (D:\lib\LLVM\bin\clang++.exe+0x169bb12)
#24 0x00007ff7673c0cbc (D:\lib\LLVM\bin\clang++.exe+0x1fa0cbc)
#25 0x00007ff7673b353f (D:\lib\LLVM\bin\clang++.exe+0x1f9353f)
#26 0x00007ff768a8fa80 (D:\lib\LLVM\bin\clang++.exe+0x366fa80)
#27 0x00007ff767d4d181 (D:\lib\LLVM\bin\clang++.exe+0x292d181)
#28 0x00007ff767359fa4 (D:\lib\LLVM\bin\clang++.exe+0x1f39fa4)
#29 0x00007ff765a4a493 (D:\lib\LLVM\bin\clang++.exe+0x62a493)
#30 0x00007ff765a4a0dd (D:\lib\LLVM\bin\clang++.exe+0x62a0dd)
#31 0x00007ff765a46d96 (D:\lib\LLVM\bin\clang++.exe+0x626d96)
#32 0x00007ff765a438f8 (D:\lib\LLVM\bin\clang++.exe+0x6238f8)
#33 0x00007ff765a4218e (D:\lib\LLVM\bin\clang++.exe+0x62218e)
#34 0x00007ff76632ee5d (D:\lib\LLVM\bin\clang++.exe+0xf0ee5d)
#35 0x00007ff765bd2685 (D:\lib\LLVM\bin\clang++.exe+0x7b2685)
#36 0x00007ff765bd2478 (D:\lib\LLVM\bin\clang++.exe+0x7b2478)
#37 0x00007ff7658f7825 (D:\lib\LLVM\bin\clang++.exe+0x4d7825)
#38 0x00007ff7658f716e (D:\lib\LLVM\bin\clang++.exe+0x4d716e)
#39 0x00007ff7658f6d4d (D:\lib\LLVM\bin\clang++.exe+0x4d6d4d)
#40 0x00007ff7658eda86 (D:\lib\LLVM\bin\clang++.exe+0x4cda86)
#41 0x00007ff7658eb023 (D:\lib\LLVM\bin\clang++.exe+0x4cb023)
#42 0x00007ff76740d0a0 (D:\lib\LLVM\bin\clang++.exe+0x1fed0a0)
#43 0x00007fff470ae8d7 (C:\WINDOWS\System32\KERNEL32.DLL+0x2e8d7)
#44 0x00007fff490cc53c (C:\WINDOWS\SYSTEM32\ntdll.dll+0x8c53c)
clang++: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 21.1.5
Target: x86_64-unknown-windows-msvc
Thread model: posix
InstalledDir: D:\lib\LLVM\bin
clang++: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.

Guida contributor