Skip to content

Crash compiling modules with address sanitizers #134790

Open
@mrwsl

Description

@mrwsl

I was testing llvm 20.1.2 and saw that sanitizer enabled builds are failing:

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: /usr/lib/llvm-20/bin/clang -cc1 -triple x86_64-pc-linux-gnu -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name tests.ixx -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debug-info-kind=constructor -dwarf-version=5 -debugger-tuning=gdb -fdebug-compilation-dir=/workspace/build -fcoverage-compilation-dir=/workspace/build -resource-dir /usr/lib/llvm-20/lib/clang/20 -Wmicrosoft -Watomic-implicit-seq-cst -Wcustom-atomic-properties -Warray-bounds-pointer-arithmetic -Warray-parameter -Wstring-concatenation -Wnon-virtual-dtor -Wdelete-non-abstract-non-virtual-dtor -Wweak-vtables -Wmissing-braces -Wdtor-name -Wexit-time-destructors -Winaccessible-base -Woverloaded-virtual -Woverriding-method-mismatch -Wsuggest-destructor-override -Wsuggest-override -Winconsistent-missing-destructor-override -Wsuper-class-method-mismatch -Wabstract-vbase-init -Wdirect-ivar-access -Wdeprecated-copy -Wdeprecated-copy-with-dtor -Wdeprecated-copy-with-user-provided-copy -Wmisleading-indentation -Wconditional-uninitialized -Wswitch-default -Wrange-loop-bind-reference -Wrange-loop-construct -Wfor-loop-analysis -Wunreachable-code-aggressive -Wsometimes-uninitialized -Wimplicit-fallthrough-per-function -Wempty-init-stmt -Wtautological-compare -Wassign-enum -Wanon-enum-enum-conversion -Wbitfield-enum-conversion -Wduplicate-enum -Wenum-compare-conditional -Wenum-conversion -Wenum-enum-conversion -Wenum-float-conversion -Wint-in-bool-context -Wpacked -Wpadded-bitfield -Wunaligned-access -Wformat-nonliteral -Wformat-pedantic -Wformat-type-confusion -Wformat=2 -Winfinite-recursion -Wmissing-noreturn -Wduplicate-method-arg -Wduplicate-method-match -Wstrict-selector-match -Wexplicit-ownership-type -Wundefined-func-template -Wextra-semi-stmt -Wheader-hygiene -Wold-style-cast -Wover-aligned -Wparentheses -Wdeprecated-dynamic-exception-spec -Wdeprecated-redundant-constexpr-static-def -Wduplicate-decl-specifier -Wsemicolon-before-method-body -Wdeprecated-literal-operator -Wreserved-identifier -Wbitwise-op-parentheses -Widiomatic-parentheses -Wimplicit-int -Wreorder -Wcompound-token-split-by-space -Wctad-maybe-unsupported -Wfour-char-constants -Wlogical-op-parentheses -Wcomma -Wdate-time -Wembedded-directive -Wdisabled-macro-expansion -Wkeyword-macro -Wunknown-pragmas -Wvariadic-macros -Wundef -Wundef-prefix -Wnull-pointer-arithmetic -Wnull-pointer-subtraction -Wzero-as-null-pointer-constant -Wunsafe-buffer-usage -Wpragma-pack -Wpragmas -Wprofile-instr-missing -Winvalid-or-nonexistent-directory -Wpoison-system-directories -Wfuse-ld-path -Wimport-preprocessor-directive-pedantic -Wconversion -Wbad-function-cast -Wcast-qual -Wcast-align -Wcast-function-type-strict -Wimplicit-int-conversion -Wimplicit-int-float-conversion -Wshorten-64-to-32 -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wfloat-conversion -Wdouble-promotion -Wundefined-reinterpret-cast -Wsign-conversion -Wuninitialized -Wstatic-in-inline -Wshift-sign-overflow -Wsign-compare -Wself-assign -Wself-move -Wmissing-field-initializers -Woverlength-strings -Wpessimizing-move -Wredundant-move -Wbitwise-instead-of-logical -Wbool-operation -Wundefined-internal-type -Wgcc-compat -Wdeprecated-implementations -Wdocumentation -Wdocumentation-unknown-command -Wfortify-source -Winvalid-utf8 -Wquoted-include-in-framework-header -Wshadow-all -Wno-shadow-field-in-constructor -Wthread-safety -Wunused -Wcompletion-handler -Wcomplex-component-init -Wfloat-equal -std=c++23 -fdeprecated-macro -ferror-limit 19 -fgnuc-version=4.2.1 -fno-implicit-modules -fmodule-file=Calibration:common=src/CMakeFiles/Calibration.dir/Calibration-common.pcm -fmodule-file=Calibration:DefaultGCODE=src/CMakeFiles/Calibration.dir/Calibration-DefaultGCODE.pcm -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o src/CMakeFiles/Calibration.dir/__/tests/tests.ixx.o -x pcm src/CMakeFiles/Calibration.dir/Calibration-tests.pcm
1.	<eof> parser at end of file
 #0 0x00007ad292e27c7f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-20/bin/../lib/libLLVM.so.20.1+0x102bc7f)
 #1 0x00007ad292e25989 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-20/bin/../lib/libLLVM.so.20.1+0x1029989)
 #2 0x00007ad292e28390 (/usr/lib/llvm-20/bin/../lib/libLLVM.so.20.1+0x102c390)
 #3 0x00007ad29188f330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
 #4 0x00007ad29b7eb2e9 clang::DynamicRecursiveASTVisitor::TraverseTemplateInstantiations(clang::FunctionTemplateDecl*) (/usr/lib/llvm-20/bin/../lib/libclang-cpp.so.20.1+0x10612e9)
 #5 0x00007ad29b7f43a5 clang::DynamicRecursiveASTVisitor::TraverseFunctionTemplateDecl(clang::FunctionTemplateDecl*) (/usr/lib/llvm-20/bin/../lib/libclang-cpp.so.20.1+0x106a3a5)
 #6 0x00007ad29b7e9e95 clang::DynamicRecursiveASTVisitor::TraverseDecl(clang::Decl*) (/usr/lib/llvm-20/bin/../lib/libclang-cpp.so.20.1+0x105fe95)
 #7 0x00007ad29b7edb3c clang::DynamicRecursiveASTVisitor::TraverseNamespaceDecl(clang::NamespaceDecl*) (/usr/lib/llvm-20/bin/../lib/libclang-cpp.so.20.1+0x1063b3c)
 #8 0x00007ad29b7ea3aa clang::DynamicRecursiveASTVisitor::TraverseDecl(clang::Decl*) (/usr/lib/llvm-20/bin/../lib/libclang-cpp.so.20.1+0x10603aa)
 #9 0x00007ad29b7edb3c clang::DynamicRecursiveASTVisitor::TraverseNamespaceDecl(clang::NamespaceDecl*) (/usr/lib/llvm-20/bin/../lib/libclang-cpp.so.20.1+0x1063b3c)
#10 0x00007ad29b7ea3aa clang::DynamicRecursiveASTVisitor::TraverseDecl(clang::Decl*) (/usr/lib/llvm-20/bin/../lib/libclang-cpp.so.20.1+0x10603aa)
#11 0x00007ad29b7eb55c clang::DynamicRecursiveASTVisitor::TraverseTranslationUnitDecl(clang::TranslationUnitDecl*) (/usr/lib/llvm-20/bin/../lib/libclang-cpp.so.20.1+0x106155c)
#12 0x00007ad29be28cf8 clang::sema::AnalysisBasedWarnings::IssueWarnings(clang::TranslationUnitDecl*) (/usr/lib/llvm-20/bin/../lib/libclang-cpp.so.20.1+0x169ecf8)
#13 0x00007ad29beab06b clang::Sema::ActOnEndOfTranslationUnit() (/usr/lib/llvm-20/bin/../lib/libclang-cpp.so.20.1+0x172106b)
#14 0x00007ad29b5b20a8 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/usr/lib/llvm-20/bin/../lib/libclang-cpp.so.20.1+0xe280a8)
#15 0x00007ad29b5b1e75 clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/usr/lib/llvm-20/bin/../lib/libclang-cpp.so.20.1+0xe27e75)
#16 0x00007ad29b4f8753 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/llvm-20/bin/../lib/libclang-cpp.so.20.1+0xd6e753)
#17 0x00007ad29d45b4b2 clang::FrontendAction::Execute() (/usr/lib/llvm-20/bin/../lib/libclang-cpp.so.20.1+0x2cd14b2)
#18 0x00007ad29d3d3e54 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm-20/bin/../lib/libclang-cpp.so.20.1+0x2c49e54)
#19 0x00007ad29d4dee8c clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm-20/bin/../lib/libclang-cpp.so.20.1+0x2d54e8c)
#20 0x00005aa5a410d72f cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm-20/bin/clang+0x1372f)
#21 0x00005aa5a410a5b4 (/usr/lib/llvm-20/bin/clang+0x105b4)
#22 0x00005aa5a41099e2 clang_main(int, char**, llvm::ToolContext const&) (/usr/lib/llvm-20/bin/clang+0xf9e2)
#23 0x00005aa5a4116ef3 main (/usr/lib/llvm-20/bin/clang+0x1cef3)
#24 0x00007ad2918741ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#25 0x00007ad29187428b call_init ./csu/../csu/libc-start.c:128:20
#26 0x00007ad29187428b __libc_start_main ./csu/../csu/libc-start.c:347:5
#27 0x00005aa5a4108415 _start (/usr/lib/llvm-20/bin/clang+0xe415)
clang++: error: unable to execute command: Segmentation fault (core dumped)
clang++: error: clang frontend command failed due to signal (use -v to see invocation)
Ubuntu clang version 20.1.2 (++20250402124932+58df0ef89dd6-1~exp1~20250402004952.98)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-20/bin
clang++: note: diagnostic msg: 

I have the preprocessed sources and run scripts but I need to check first if they contain any critical information (or send them via a more private channel if possible).

Metadata

Metadata

Assignees

No one assigned

    Labels

    clang:modulesC++20 modules and Clang Header Modulescompiler-rt:asanAddress sanitizercrashPrefer [crash-on-valid] or [crash-on-invalid]

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions