[clang] [C++20] [Modules] [Serialization] Delay marking pending incomplete decl chains until the end of `finishPendingActions`. (PR #121245)
Michael Park via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 28 23:58:00 PST 2025
mpark wrote:
Okay folks, I've finally managed to get a reasonable repro as a unit test!
The new unit test, with `Debug` build fails like this:
```
FAIL: Clang :: Modules/pr121245.cpp (8522 of 22154)
******************** TEST 'Clang :: Modules/pr121245.cpp' FAILED ********************
Exit Code: 134
Command Output (stderr):
--
RUN: at line 1: rm -rf /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp
+ rm -rf /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp
RUN: at line 2: mkdir -p /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp
+ mkdir -p /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp
RUN: at line 3: split-file /home/mcypark/llvm-project/clang/test/Modules/pr121245.cpp /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp
+ split-file /home/mcypark/llvm-project/clang/test/Modules/pr121245.cpp /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp
RUN: at line 4: cd /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp
+ cd /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp
RUN: at line 6: /home/mcypark/llvm-project/build-debug/bin/clang -cc1 -internal-isystem /home/mcypark/llvm-project/build-debug/lib/clang/21/include -nostdsysteminc -std=c++20 -emit-header-unit -xc++-user-header /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.h -fcxx-exceptions -o /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.pcm
+ /home/mcypark/llvm-project/build-debug/bin/clang -cc1 -internal-isystem /home/mcypark/llvm-project/build-debug/lib/clang/21/include -nostdsysteminc -std=c++20 -emit-header-unit -xc++-user-header /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.h -fcxx-exceptions -o /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.pcm
RUN: at line 9: /home/mcypark/llvm-project/build-debug/bin/clang -cc1 -internal-isystem /home/mcypark/llvm-project/build-debug/lib/clang/21/include -nostdsysteminc -std=c++20 -emit-header-unit -xc++-user-header /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-02.h -Wno-experimental-header-units -fcxx-exceptions -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.pcm -o /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-02.pcm
+ /home/mcypark/llvm-project/build-debug/bin/clang -cc1 -internal-isystem /home/mcypark/llvm-project/build-debug/lib/clang/21/include -nostdsysteminc -std=c++20 -emit-header-unit -xc++-user-header /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-02.h -Wno-experimental-header-units -fcxx-exceptions -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.pcm -o /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-02.pcm
RUN: at line 13: /home/mcypark/llvm-project/build-debug/bin/clang -cc1 -internal-isystem /home/mcypark/llvm-project/build-debug/lib/clang/21/include -nostdsysteminc -std=c++20 -emit-header-unit -xc++-user-header /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-03.h -Wno-experimental-header-units -fcxx-exceptions -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.pcm -o /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-03.pcm
+ /home/mcypark/llvm-project/build-debug/bin/clang -cc1 -internal-isystem /home/mcypark/llvm-project/build-debug/lib/clang/21/include -nostdsysteminc -std=c++20 -emit-header-unit -xc++-user-header /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-03.h -Wno-experimental-header-units -fcxx-exceptions -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.pcm -o /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-03.pcm
RUN: at line 17: /home/mcypark/llvm-project/build-debug/bin/clang -cc1 -internal-isystem /home/mcypark/llvm-project/build-debug/lib/clang/21/include -nostdsysteminc -std=c++20 -emit-header-unit -xc++-user-header /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-04.h -Wno-experimental-header-units -fcxx-exceptions -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.pcm -o /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-04.pcm
+ /home/mcypark/llvm-project/build-debug/bin/clang -cc1 -internal-isystem /home/mcypark/llvm-project/build-debug/lib/clang/21/include -nostdsysteminc -std=c++20 -emit-header-unit -xc++-user-header /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-04.h -Wno-experimental-header-units -fcxx-exceptions -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.pcm -o /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-04.pcm
RUN: at line 21: /home/mcypark/llvm-project/build-debug/bin/clang -cc1 -internal-isystem /home/mcypark/llvm-project/build-debug/lib/clang/21/include -nostdsysteminc -std=c++20 -emit-header-unit -xc++-user-header /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-05.h -Wno-experimental-header-units -fcxx-exceptions -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-03.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-04.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.pcm -o /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-05.pcm
+ /home/mcypark/llvm-project/build-debug/bin/clang -cc1 -internal-isystem /home/mcypark/llvm-project/build-debug/lib/clang/21/include -nostdsysteminc -std=c++20 -emit-header-unit -xc++-user-header /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-05.h -Wno-experimental-header-units -fcxx-exceptions -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-03.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-04.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.pcm -o /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-05.pcm
RUN: at line 26: /home/mcypark/llvm-project/build-debug/bin/clang -cc1 -internal-isystem /home/mcypark/llvm-project/build-debug/lib/clang/21/include -nostdsysteminc -std=c++20 -emit-obj /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/main.cpp -Wno-experimental-header-units -fcxx-exceptions -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-02.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-05.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-04.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-03.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.pcm
+ /home/mcypark/llvm-project/build-debug/bin/clang -cc1 -internal-isystem /home/mcypark/llvm-project/build-debug/lib/clang/21/include -nostdsysteminc -std=c++20 -emit-obj /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/main.cpp -Wno-experimental-header-units -fcxx-exceptions -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-02.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-05.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-04.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-03.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.pcm
should not call this with unresolved exception specs
UNREACHABLE executed at /home/mcypark/llvm-project/clang/lib/AST/Type.cpp:3760!
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: /home/mcypark/llvm-project/build-debug/bin/clang -cc1 -internal-isystem /home/mcypark/llvm-project/build-debug/lib/clang/21/include -nostdsysteminc -std=c++20 -emit-obj /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/main.cpp -Wno-experimental-header-units -fcxx-exceptions -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-02.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-05.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-04.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-03.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.pcm
1. <eof> parser at end of file
2. Per-file LLVM IR generation
3. /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.h:9:3: Generating code for declaration 'EBO<A<long>>::EBO'
#0 0x0000000005682a18 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/mcypark/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:22
#1 0x0000000005682e60 PrintStackTraceSignalHandler(void*) /home/mcypark/llvm-project/llvm/lib/Support/Unix/Signals.inc:874:1
#2 0x0000000005680646 llvm::sys::RunSignalHandlers() /home/mcypark/llvm-project/llvm/lib/Support/Signals.cpp:105:20
#3 0x00000000056823e1 SignalHandler(int) /home/mcypark/llvm-project/llvm/lib/Support/Unix/Signals.inc:415:1
#4 0x00007f0f2363e730 __restore_rt (/lib64/libc.so.6+0x3e730)
#5 0x00007f0f2368bbdc __pthread_kill_implementation (/lib64/libc.so.6+0x8bbdc)
#6 0x00007f0f2363e686 gsignal (/lib64/libc.so.6+0x3e686)
#7 0x00007f0f23628833 abort (/lib64/libc.so.6+0x28833)
#8 0x00000000055bf183 bindingsErrorHandler(void*, char const*, bool) /home/mcypark/llvm-project/llvm/lib/Support/ErrorHandling.cpp:223:55
#9 0x000000000af32485 clang::FunctionProtoType::canThrow() const /home/mcypark/llvm-project/clang/lib/AST/Type.cpp:3766:12
#10 0x0000000006466ec3 clang::CodeGen::CodeGenFunction::EmitStartEHSpec(clang::Decl const*) /home/mcypark/llvm-project/clang/lib/CodeGen/CGException.cpp:534:32
#11 0x0000000005e53edf clang::CodeGen::CodeGenFunction::StartFunction(clang::GlobalDecl, clang::QualType, llvm::Function*, clang::CodeGen::CGFunctionInfo const&, clang::CodeGen::FunctionArgList const&, clang::SourceLocation, clang::SourceLocation) /home/mcypark/llvm-project/clang/lib/CodeGen/CodeGenFunction.cpp:1247:46
#12 0x0000000005e55537 clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) /home/mcypark/llvm-project/clang/lib/CodeGen/CodeGenFunction.cpp:1540:16
#13 0x00000000063dd3aa clang::CodeGen::CodeGenModule::codegenCXXStructor(clang::GlobalDecl) /home/mcypark/llvm-project/clang/lib/CodeGen/CGCXX.cpp:212:3
#14 0x000000000601dd57 (anonymous namespace)::ItaniumCXXABI::emitCXXStructor(clang::GlobalDecl) /home/mcypark/llvm-project/clang/lib/CodeGen/ItaniumCXXABI.cpp:4748:46
#15 0x0000000005e820a9 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) /home/mcypark/llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:4231:29
#16 0x0000000005e7dd6a clang::CodeGen::CodeGenModule::EmitDeferred() /home/mcypark/llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:3331:31
#17 0x0000000005e7ddb8 clang::CodeGen::CodeGenModule::EmitDeferred() /home/mcypark/llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:3333:7
#18 0x0000000005e7ddb8 clang::CodeGen::CodeGenModule::EmitDeferred() /home/mcypark/llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:3333:7
#19 0x0000000005e7ddb8 clang::CodeGen::CodeGenModule::EmitDeferred() /home/mcypark/llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:3333:7
#20 0x0000000005e7ddb8 clang::CodeGen::CodeGenModule::EmitDeferred() /home/mcypark/llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:3333:7
#21 0x0000000005e7ddb8 clang::CodeGen::CodeGenModule::EmitDeferred() /home/mcypark/llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:3333:7
#22 0x0000000005e70ce7 clang::CodeGen::CodeGenModule::Release() /home/mcypark/llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:853:23
#23 0x0000000006511145 (anonymous namespace)::CodeGeneratorImpl::HandleTranslationUnit(clang::ASTContext&) /home/mcypark/llvm-project/clang/lib/CodeGen/ModuleBuilder.cpp:291:11
#24 0x00000000064fe949 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) /home/mcypark/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:242:9
#25 0x00000000093210db clang::ParseAST(clang::Sema&, bool, bool) /home/mcypark/llvm-project/clang/lib/Parse/ParseAST.cpp:191:14
#26 0x000000000681a5e0 clang::ASTFrontendAction::ExecuteAction() /home/mcypark/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1186:11
#27 0x000000000650311d clang::CodeGenAction::ExecuteAction() /home/mcypark/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:1102:5
#28 0x0000000006819efa clang::FrontendAction::Execute() /home/mcypark/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1076:38
#29 0x000000000673ac6b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /home/mcypark/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1056:42
#30 0x00000000069cc73e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /home/mcypark/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:296:38
#31 0x0000000000e3d926 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /home/mcypark/llvm-project/clang/tools/driver/cc1_main.cpp:290:40
#32 0x0000000000e2fa70 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) /home/mcypark/llvm-project/clang/tools/driver/driver.cpp:218:20
#33 0x0000000000e2ff67 clang_main(int, char**, llvm::ToolContext const&) /home/mcypark/llvm-project/clang/tools/driver/driver.cpp:259:26
#34 0x0000000000e67029 main /home/mcypark/llvm-project/build-debug/tools/clang/tools/driver/clang-driver.cpp:17:20
#35 0x00007f0f236295d0 __libc_start_call_main (/lib64/libc.so.6+0x295d0)
#36 0x00007f0f23629680 __libc_start_main at GLIBC_2.2.5 (/lib64/libc.so.6+0x29680)
#37 0x0000000000e2eea5 _start (/home/mcypark/llvm-project/build-debug/bin/clang+0xe2eea5)
/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.script: line 10: 3521235 Aborted (core dumped) /home/mcypark/llvm-project/build-debug/bin/clang -cc1 -internal-isystem /home/mcypark/llvm-project/build-debug/lib/clang/21/include -nostdsysteminc -std=c++20 -emit-obj /home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/main.cpp -Wno-experimental-header-units -fcxx-exceptions -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-02.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-05.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-04.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-03.pcm -fmodule-file=/home/mcypark/llvm-project/build-debug/tools/clang/test/Modules/Output/pr121245.cpp.tmp/hu-01.pcm
--
********************
********************
Failed Tests (1):
Clang :: Modules/pr121245.cpp
Testing Time: 5323.62s
Total Discovered Tests: 46289
Skipped : 4 (0.01%)
Unsupported : 95 (0.21%)
Passed : 46157 (99.71%)
Expectedly Failed: 32 (0.07%)
Failed : 1 (0.00%)
FAILED: tools/clang/test/CMakeFiles/check-clang /home/mcypark/llvm-project/build-debug/tools/clang/test/CMakeFiles/check-clang
```
https://github.com/llvm/llvm-project/pull/121245
More information about the cfe-commits
mailing list