llvm-project
llvm-project copied to clipboard
Clang crashes in TemplateArgument::isPackExpansion on current main.
The following snippet crashes: https://wandbox.org/permlink/ypCN8tQA9I26lW5L
@CarloWood: Could you please provide crash details?
godbolt with clang (assertions trunk): https://godbolt.org/z/czTG4GG71
clang++: /root/llvm-project/llvm/include/llvm/Support/Casting.h:109: static bool llvm::isa_impl_cl<To, const From*>::doit(const From*) [with To = clang::PackExpansionExpr; From = clang::Expr]: Assertion `Val && "isa<> used on a null pointer"' failed.
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: /opt/compiler-explorer/clang-assertions-trunk/bin/clang++ -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics -std=c++20 <source>
1. <eof> parser at end of file
2. <source>:73:6: instantiating function definition 'print_layout<Bar>'
3. <source>:77:3: instantiating function definition 'print_layout()::(anonymous class)::operator()<std::tuple<Member<float[10]>, const char *, unsigned long>, std::tuple<Member<Foo[3]>, const char *, unsigned long>, std::tuple<Member<Foo>, const char *, unsigned long>>'
#0 0x0000559bd2a62054 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
#1 0x0000559bd2a5fd9c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3e0ad9c)
#2 0x0000559bd29971d8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007f7d7f27c3c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x143c0)
#4 0x00007f7d7ed4903b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4303b)
#5 0x00007f7d7ed28859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
#6 0x00007f7d7ed28729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
#7 0x00007f7d7ed3a006 (/lib/x86_64-linux-gnu/libc.so.6+0x34006)
#8 0x0000559bd6122cf5 (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x74cdcf5)
#9 0x0000559bd6125f54 clang::TemplateArgument::isPackExpansion() const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x74d0f54)
#10 0x0000559bd5a62b78 clang::Sema::collectUnexpandedParameterPacks(clang::TemplateArgument, llvm::SmallVectorImpl<std::pair<llvm::PointerUnion<clang::TemplateTypeParmType const*, clang::NamedDecl*>, clang::SourceLocation>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6e0db78)
#11 0x0000559bd59bb833 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCXXFoldExpr(clang::CXXFoldExpr*) SemaTemplateInstantiate.cpp:0:0
#12 0x0000559bd59b3b36 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) SemaTemplateInstantiate.cpp:0:0
#13 0x0000559bd59e745f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*, clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::StmtDiscardKind) SemaTemplateInstantiate.cpp:0:0
#14 0x0000559bd59e8ce9 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, bool) SemaTemplateInstantiate.cpp:0:0
#15 0x0000559bd59ee289 clang::Sema::SubstStmt(clang::Stmt*, clang::MultiLevelTemplateArgumentList const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6d99289)
#16 0x0000559bd5a3c6da clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6de76da)
#17 0x0000559bd50f5f15 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x64a0f15)
#18 0x0000559bd592ea57 clang::Sema::DeduceReturnType(clang::FunctionDecl*, clang::SourceLocation, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6cd9a57)
#19 0x0000559bd54617da clang::Sema::DiagnoseUseOfDecl(clang::NamedDecl*, llvm::ArrayRef<clang::SourceLocation>, clang::ObjCInterfaceDecl const*, bool, bool, clang::ObjCInterfaceDecl*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x680c7da)
#20 0x0000559bd57b526b CreateFunctionRefExpr(clang::Sema&, clang::FunctionDecl*, clang::NamedDecl*, clang::Expr const*, bool, clang::SourceLocation, clang::DeclarationNameLoc const&) (.constprop.0) SemaOverload.cpp:0:0
#21 0x0000559bd57e14e1 clang::Sema::BuildCallToObjectOfClassType(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6b8c4e1)
#22 0x0000559bd54add90 clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6858d90)
#23 0x0000559bd54b2a3b clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x685da3b)
#24 0x0000559bd59bd043 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) SemaTemplateInstantiate.cpp:0:0
#25 0x0000559bd59b3aa7 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) SemaTemplateInstantiate.cpp:0:0
#26 0x0000559bd59e745f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*, clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::StmtDiscardKind) SemaTemplateInstantiate.cpp:0:0
#27 0x0000559bd59e8ce9 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, bool) SemaTemplateInstantiate.cpp:0:0
#28 0x0000559bd59ee289 clang::Sema::SubstStmt(clang::Stmt*, clang::MultiLevelTemplateArgumentList const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6d99289)
#29 0x0000559bd5a3c6da clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6de76da)
#30 0x0000559bd5a3aa7f clang::Sema::PerformPendingInstantiations(bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6de5a7f)
#31 0x0000559bd51141e0 clang::Sema::ActOnEndOfTranslationUnitFragment(clang::Sema::TUFragmentKind) (.part.0) Sema.cpp:0:0
#32 0x0000559bd51148da clang::Sema::ActOnEndOfTranslationUnit() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x64bf8da)
#33 0x0000559bd4fc4b70 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x636fb70)
#34 0x0000559bd4fb8d8a clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6363d8a)
#35 0x0000559bd3d20788 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x50cb788)
#36 0x0000559bd35c3489 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x496e489)
#37 0x0000559bd354d19e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x48f819e)
#38 0x0000559bd36a3073 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4a4e073)
#39 0x0000559bd001b827 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x13c6827)
#40 0x0000559bd0014908 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#41 0x0000559bd33bccd9 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#42 0x0000559bd299735c llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3d4235c)
#43 0x0000559bd33bd3ef clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#44 0x0000559bd33873d9 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x47323d9)
#45 0x0000559bd3387efd clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4732efd)
#46 0x0000559bd3391f9c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x473cf9c)
#47 0x0000559bd0019ba3 clang_main(int, char**) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x13c4ba3)
#48 0x00007f7d7ed2a0b3 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x240b3)
#49 0x0000559bd00144fe _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x13bf4fe)
clang-16: error: clang frontend command failed with exit code 134 (use -v to see invocation)
Compiler returned: 134
Source code:
#include <iostream>
#include <tuple>
#include <array>
#include <type_traits>
#include <cxxabi.h>
struct Mat2
{
float a[4];
};
struct Base
{
using base_type = Base;
using Float = float;
using mat2 = Mat2;
};
template<typename T>
struct ReflectionOf;
struct Foo : Base
{
Float m_f;
mat2 m_m;
};
#define STRINGIFY(x) STR(x)
#define STR(x) #x
#define MEMBER(classname, membername) \
std::tuple{ Member<decltype(classname::membername)>{}, STRINGIFY(classname) "::" STRINGIFY(membername), offsetof(classname, membername) }
template<typename T>
struct Member
{
using element_type = T;
};
template<typename... Members>
static constexpr std::tuple<std::tuple<Members, char const*, size_t>...> make_members(std::tuple<Members, char const*, size_t>... args)
{
return { args... };
}
template<>
struct ReflectionOf<Foo>
{
static constexpr auto members = make_members(
MEMBER(Foo, m_f),
MEMBER(Foo, m_m)
);
};
struct Bar : Base
{
Float m_fa[10];
Foo m_fooa[3];
Foo m_foo;
};
template<>
struct ReflectionOf<Bar>
{
static constexpr auto members = make_members(
MEMBER(Bar, m_fa),
MEMBER(Bar, m_fooa),
MEMBER(Bar, m_foo)
);
};
template<typename T>
void print_layout()
{
using base_type = typename T::base_type;
[&]<typename... Ts>(std::tuple<Ts...>)
{
constexpr std::array alignments{alignof(Ts)...};
std::cout << "Number of members: " << alignments.size() << '\n';
([&]
{
using element_type = typename std::tuple_element<0, Ts>::type::element_type;
if constexpr (std::is_base_of_v<base_type, element_type>)
{
print_layout<element_type>();
}
else if constexpr (std::is_same_v<element_type, Base::Float>)
std::cout << "Float\n";
else if constexpr (std::is_same_v<element_type, Base::mat2>)
std::cout << "mat2\n";
else
{
int rc;
char const* const demangled_type = abi::__cxa_demangle(typeid(element_type).name(), 0, 0, &rc);
std::cout << "We get here for type " << demangled_type << "\n";
}
}(), ...);
}(ReflectionOf<T>::members);
}
int main()
{
print_layout<Bar>();
std::cout << '\n';
return 0;
}
This looks like: https://github.com/llvm/llvm-project/issues/48732
which has a much simpler reproducer.
@llvm/issue-subscribers-clang-frontend
Maybe it is helpful to know that the last change that I made was to change
char const* const demangled_type = abi::__cxa_demangle(typeid(Ts).name(), 0, 0, &rc);
into
char const* const demangled_type = abi::__cxa_demangle(typeid(element_type).name(), 0, 0, &rc);
The first line compiles and works.
@CarloWood: Could you please provide crash details?
If you click on the link you get the code and the dump... Aka from wandbox. I am sorry that I do not have the time to investigate this, or make a shorter "test case"; I am extremely busy as it is :-/
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: /opt/wandbox/clang-head/bin/clang-16 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name prog.cc -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 -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -fcoverage-compilation-dir=/home/jail -nostdinc++ -resource-dir /opt/wandbox/clang-head/lib/clang/16.0.0 -I /opt/wandbox/clang-head/include/c++/v1 -I /opt/wandbox/clang-head/include/x86_64-unknown-linux-gnu/c++/v1/ -internal-isystem /opt/wandbox/clang-head/lib/clang/16.0.0/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/10/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wall -Wextra -std=gnu++2b -fdeprecated-macro -fdebug-compilation-dir=/home/jail -ferror-limit 19 -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -fcolor-diagnostics -fansi-escape-codes -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/prog-1d916f.o -x c++ prog.cc
1. <eof> parser at end of file
2. prog.cc:73:6: instantiating function definition 'print_layout<Bar>'
3. prog.cc:77:3: instantiating function definition 'print_layout()::(anonymous class)::operator()<std::tuple<Member<float[10]>, const char *, unsigned long>, std::tuple<Member<Foo[3]>, const char *, unsigned long>, std::tuple<Member<Foo>, const char *, unsigned long>>'
#0 0x0000000002874ca3 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/wandbox/clang-head/bin/clang-16+0x2874ca3)
#1 0x0000000002872bae llvm::sys::RunSignalHandlers() (/opt/wandbox/clang-head/bin/clang-16+0x2872bae)
#2 0x000000000287502f SignalHandler(int) Signals.cpp:0:0
#3 0x00007fcd4a6993c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x143c0)
#4 0x0000000004deb94f clang::TemplateArgument::isPackExpansion() const (/opt/wandbox/clang-head/bin/clang-16+0x4deb94f)
#5 0x00000000048b4fe3 clang::Sema::collectUnexpandedParameterPacks(clang::TemplateArgument, llvm::SmallVectorImpl<std::pair<llvm::PointerUnion<clang::TemplateTypeParmType const*, clang::NamedDecl*>, clang::SourceLocation>>&) (/opt/wandbox/clang-head/bin/clang-16+0x48b4fe3)
#6 0x0000000004856d8d clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCXXFoldExpr(clang::CXXFoldExpr*) SemaTemplateInstantiate.cpp:0:0
#7 0x0000000004850662 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*, clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::StmtDiscardKind) SemaTemplateInstantiate.cpp:0:0
#8 0x0000000004867d31 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, bool) SemaTemplateInstantiate.cpp:0:0
#9 0x0000000004850601 clang::Sema::SubstStmt(clang::Stmt*, clang::MultiLevelTemplateArgumentList const&) (/opt/wandbox/clang-head/bin/clang-16+0x4850601)
#10 0x000000000488cbf2 clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) (/opt/wandbox/clang-head/bin/clang-16+0x488cbf2)
#11 0x000000000426e6eb clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/opt/wandbox/clang-head/bin/clang-16+0x426e6eb)
#12 0x00000000047fca40 clang::Sema::DeduceReturnType(clang::FunctionDecl*, clang::SourceLocation, bool) (/opt/wandbox/clang-head/bin/clang-16+0x47fca40)
#13 0x000000000448fcc6 clang::Sema::DiagnoseUseOfDecl(clang::NamedDecl*, llvm::ArrayRef<clang::SourceLocation>, clang::ObjCInterfaceDecl const*, bool, bool, clang::ObjCInterfaceDecl*) (/opt/wandbox/clang-head/bin/clang-16+0x448fcc6)
#14 0x0000000004722720 CreateFunctionRefExpr(clang::Sema&, clang::FunctionDecl*, clang::NamedDecl*, clang::Expr const*, bool, clang::SourceLocation, clang::DeclarationNameLoc const&) SemaOverload.cpp:0:0
#15 0x0000000004729c80 clang::Sema::BuildCallToObjectOfClassType(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation) (/opt/wandbox/clang-head/bin/clang-16+0x4729c80)
#16 0x00000000044ac64a clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) (/opt/wandbox/clang-head/bin/clang-16+0x44ac64a)
#17 0x0000000004858de1 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) SemaTemplateInstantiate.cpp:0:0
#18 0x0000000004850662 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*, clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::StmtDiscardKind) SemaTemplateInstantiate.cpp:0:0
#19 0x0000000004867d31 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, bool) SemaTemplateInstantiate.cpp:0:0
#20 0x0000000004850601 clang::Sema::SubstStmt(clang::Stmt*, clang::MultiLevelTemplateArgumentList const&) (/opt/wandbox/clang-head/bin/clang-16+0x4850601)
#21 0x000000000488cbf2 clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) (/opt/wandbox/clang-head/bin/clang-16+0x488cbf2)
#22 0x000000000488f65a clang::Sema::PerformPendingInstantiations(bool) (/opt/wandbox/clang-head/bin/clang-16+0x488f65a)
#23 0x0000000004270c77 clang::Sema::ActOnEndOfTranslationUnitFragment(clang::Sema::TUFragmentKind) (/opt/wandbox/clang-head/bin/clang-16+0x4270c77)
#24 0x00000000042712de clang::Sema::ActOnEndOfTranslationUnit() (/opt/wandbox/clang-head/bin/clang-16+0x42712de)
#25 0x000000000416830c clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/wandbox/clang-head/bin/clang-16+0x416830c)
#26 0x000000000416438e clang::ParseAST(clang::Sema&, bool, bool) (/opt/wandbox/clang-head/bin/clang-16+0x416438e)
#27 0x000000000316c457 clang::FrontendAction::Execute() (/opt/wandbox/clang-head/bin/clang-16+0x316c457)
#28 0x00000000030e5c56 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/wandbox/clang-head/bin/clang-16+0x30e5c56)
#29 0x000000000320f6db clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/wandbox/clang-head/bin/clang-16+0x320f6db)
#30 0x000000000098cde6 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/wandbox/clang-head/bin/clang-16+0x98cde6)
#31 0x000000000098ad5b ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#32 0x000000000098ab54 clang_main(int, char**) (/opt/wandbox/clang-head/bin/clang-16+0x98ab54)
#33 0x00007fcd4a10d0b3 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x240b3)
#34 0x00000000009878ae _start (/opt/wandbox/clang-head/bin/clang-16+0x9878ae)
clang-16: error: unable to execute command: Segmentation fault (core dumped)
clang-16: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 16.0.0 (https://github.com/llvm/llvm-project.git 773d51ce3bedd091539aa86a5e5fc15a9174ff7b)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/wandbox/clang-head/bin
clang-16: error: unable to execute command: File size limit exceeded (core dumped)
clang-16: note: diagnostic msg: Error generating preprocessed source(s).
Potential duplicate of: https://github.com/llvm/llvm-project/issues/18873