llvm/llvm-project

C++ Member pointer with module causing clang crash

Open

#167,638 创建于 2025年11月12日

在 GitHub 查看
 (10 评论) (0 反应) (1 负责人)C++ (10,782 fork)batch import
clang:modulescrashhelp wantedplatform:windows

仓库指标

Star
 (26,378 star)
PR 合并指标
 (平均合并 1天 2小时) (30 天内合并 1,000 个 PR)

描述

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.

贡献者指南