llvm/llvm-project

C++ Member pointer with module causing clang crash

Open

#167,638 opened on Nov 12, 2025

View on GitHub
 (10 comments) (0 reactions) (1 assignee)C++ (10,782 forks)batch import
clang:modulescrashhelp wantedplatform:windows

Repository metrics

Stars
 (26,378 stars)
PR merge metrics
 (Avg merge 1d 2h) (1,000 merged PRs in 30d)

Description

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.

Contributor guide