Issue 55508
Summary Segfault when compiling C++2b
Labels
Assignees
Reporter jfgoog
    This is an upstream bug for Android NDK bug https://github.com/android/ndk/issues/1685.

I am attaching same .zip file from that bug, which has the source code and compilation command: 
[Review.zip](https://github.com/llvm/llvm-project/files/8701595/Review.zip)

This bug was originally reported with version 24.0.8215888, for which `clang++ -v` reports:

`Android (8075178, based on r437112b) clang version 14.0.1 (https://android.googlesource.com/toolchain/llvm-project 8671348b81b95fc603505dfc881b45103bee1731)`

I have reproduce the crash with clang built at head (`clang version 15.0.0 ([email protected]:llvm/llvm-project.git 7272a8c23ceb218b3bd6f0dd303c6df2c773cc74)`, built with `cmake -GNinja ../llvm -DLLVM_ENABLE_PROJECTS="clang;compiler-rt;lld;clang-tools-extra;libcxx;libcxxabi" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLLVM_INCLUDE_GO_TESTS=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo`), albeit with a different stack trace:

```
Stack dump:
0.      Program arguments: bin/clang++ -cc1 -triple i686-none-linux-android21 -emit-obj --mrelax-relocations -mnoexecstack -disable-free -disable-llvm-verifier -discard-value-names -main-file-name Review.cpp -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=none -fno-rounding-math -mconstructor-aliases -target-cpu i686 -target-feature +ssse3 -tune-cpu generic -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -target-linker-version 711 -ffunction-sections -fdata-sections -fcoverage-compilation-dir=/Users/MB/Documents/unicorn_client_release/build/unicorn.android/app/.cxx/QA/4o3t1451/x86 -sys-header-deps -D CHEATS=1 -D NDEBUG -D QA_BACKEND=1 -D WEBP_USE_THREAD -D _LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_MEMBERS -D client_EXPORTS -D ANDROID -D _FORTIFY_SOURCE=2 -O3 -Wfatal-errors -std=gnu++2b -fdeprecated-macro -fdebug-compilation-dir=/Users/MB/Documents/unicorn_client_release/build/unicorn.android/app/.cxx/QA/4o3t1451/x86 -ferror-limit 19 -fvisibility hidden -fvisibility-inlines-hidden -stack-protector 2 -mstackrealign -fno-rtti -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -vectorize-loops -vectorize-slp -D__GCC_HAVE_DWARF2_CFI_ASM=1 -x c++ /usr/local/google/home/jamesfarrell/bugs/ld-crash/Review-91221b.cpp
1.      <eof> parser at end of file
2.      /Users/MB/Documents/unicorn_client_release/clientsdk/igl/headers/igl/math/softfp.h:24:1: parsing namespace 'iugo'
3.      /Users/MB/Documents/unicorn_client_release/clientsdk/igl/headers/igl/math/softfp.h:146:3: parsing struct/union/class body 'iugo::softfp'
4.      /Users/MB/Documents/unicorn_client_release/clientsdk/igl/headers/igl/math/softfp.h:347:5: parsing function body 'iugo::softfp::frac'
 #0 0x00000000025c86b3 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/local/google/home/jamesfarrell/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:565:13
 #1 0x00000000025c6a40 llvm::sys::RunSignalHandlers() /usr/local/google/home/jamesfarrell/src/llvm-project/llvm/lib/Support/Signals.cpp:104:18
 #2 0x00000000025c8a3a SignalHandler(int) /usr/local/google/home/jamesfarrell/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1
 #3 0x00007f03f5d9d200 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12200)
 #4 0x000000000477415b clang::CXXRecordDecl::getNumBases() const /usr/local/google/home/jamesfarrell/src/llvm-project/clang/include/clang/AST/DeclCXX.h:590:48
 #5 0x000000000477415b getDefaultInitValue(clang::QualType, clang::APValue&) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/AST/ExprConstant.cpp:4802:51
 #6 0x00000000047954a4 EvaluateVarDecl((anonymous namespace)::EvalInfo&, clang::VarDecl const*) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/AST/ExprConstant.cpp:0:12
 #7 0x0000000004795531 EvaluateDecl((anonymous namespace)::EvalInfo&, clang::Decl const*) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/AST/ExprConstant.cpp:4883:11
 #8 0x0000000004793a33 EvaluateStmt((anonymous namespace)::StmtResult&, (anonymous namespace)::EvalInfo&, clang::Stmt const*, clang::SwitchCase const*) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/AST/ExprConstant.cpp:5217:34
 #9 0x0000000004793953 EvaluateStmt((anonymous namespace)::StmtResult&, (anonymous namespace)::EvalInfo&, clang::Stmt const*, clang::SwitchCase const*) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/AST/ExprConstant.cpp:5247:11
#10 0x0000000004777e11 HandleFunctionCall(clang::SourceLocation, clang::FunctionDecl const*, (anonymous namespace)::LValue const*, llvm::ArrayRef<clang::Expr const*>, (anonymous namespace)::CallRef, clang::Stmt const*, (anonymous namespace)::EvalInfo&, clang::APValue&, (anonymous namespace)::LValue const*) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/AST/ExprConstant.cpp:6201:24
#11 0x0000000004777908 clang::Expr::isPotentialConstantExpr(clang::FunctionDecl const*, llvm::SmallVectorImpl<std::pair<clang::SourceLocation, clang::PartialDiagnostic>>&) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/AST/ExprConstant.cpp:0:0
#12 0x0000000003f2a0d2 CheckConstexprFunctionBody(clang::Sema&, clang::FunctionDecl const*, clang::Stmt*, clang::Sema::CheckConstexprKind) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Sema/SemaDeclCXX.cpp:2390:7
#13 0x0000000003f2a0d2 clang::Sema::CheckConstexprFunctionDefinition(clang::FunctionDecl const*, clang::Sema::CheckConstexprKind) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Sema/SemaDeclCXX.cpp:1814:10
#14 0x0000000003ebc896 clang::Sema::ActOnFinishFunctionBody(clang::Decl*, clang::Stmt*, bool) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Sema/SemaDecl.cpp:15203:11
#15 0x0000000003d57635 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Parse/ParseStmt.cpp:2388:18
#16 0x0000000003cbf947 clang::Token::isNot(clang::tok::TokenKind) const /usr/local/google/home/jamesfarrell/src/llvm-project/clang/include/clang/Lex/Token.h:98:52
#17 0x0000000003cbf947 clang::Parser::ParseLexedMethodDef(clang::Parser::LexedMethod&) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Parse/ParseCXXInlineMethods.cpp:598:14
#18 0x0000000003cbe66a clang::Parser::ParseLexedMethodDefs(clang::Parser::ParsingClass&) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Parse/ParseCXXInlineMethods.cpp:527:33
#19 0x0000000003cecb41 clang::Parser::ParseCXXMemberSpecification(clang::SourceLocation, clang::SourceLocation, clang::ParsedAttributes&, unsigned int, clang::Decl*) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Parse/ParseDeclCXX.cpp:3569:21
#20 0x0000000003ceaacb clang::Parser::ParseClassSpecifier(clang::tok::TokenKind, clang::SourceLocation, clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, bool, clang::Parser::DeclSpecContext, clang::ParsedAttributes&) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Parse/ParseDeclCXX.cpp:0:7
#21 0x0000000003ccc615 llvm::PointerIntPair<void*, 1u, int, llvm::pointer_union_detail::PointerUnionUIntTraits<clang::ParsedAttr*, llvm::SmallVector<clang::ParsedAttr*, 4u>*>, llvm::PointerIntPairInfo<void*, 1u, llvm::pointer_union_detail::PointerUnionUIntTraits<clang::ParsedAttr*, llvm::SmallVector<clang::ParsedAttr*, 4u>*>>>::getPointer() const /usr/local/google/home/jamesfarrell/src/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:60:58
#22 0x0000000003ccc615 llvm::PointerUnion<clang::ParsedAttr*, llvm::SmallVector<clang::ParsedAttr*, 4u>*>::isNull() const /usr/local/google/home/jamesfarrell/src/llvm-project/llvm/include/llvm/ADT/PointerUnion.h:142:43
#23 0x0000000003ccc615 llvm::TinyPtrVector<clang::ParsedAttr*>::empty() const /usr/local/google/home/jamesfarrell/src/llvm-project/llvm/include/llvm/ADT/TinyPtrVector.h:166:13
#24 0x0000000003ccc615 clang::ParsedAttributesView::empty() const /usr/local/google/home/jamesfarrell/src/llvm-project/clang/include/clang/Sema/ParsedAttr.h:904:40
#25 0x0000000003ccc615 clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Parse/ParseDecl.cpp:4103:23
#26 0x0000000003cb5b4d clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Parse/Parser.cpp:1071:10
#27 0x0000000003cb571b clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Parse/Parser.cpp:1172:12
#28 0x0000000003cb4ba7 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsingDeclSpec*) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Parse/Parser.cpp:0:12
#29 0x0000000003ce3e30 clang::AttributePool::~AttributePool() /usr/local/google/home/jamesfarrell/src/llvm-project/clang/include/clang/Sema/ParsedAttr.h:799:22
#30 0x0000000003ce3e30 clang::ParsedAttributes::~ParsedAttributes() /usr/local/google/home/jamesfarrell/src/llvm-project/clang/include/clang/Sema/ParsedAttr.h:995:7
#31 0x0000000003ce3e30 clang::Parser::ParseInnerNamespace(llvm::SmallVector<clang::Parser::InnerNamespaceInfo, 4u> const&, unsigned int, clang::SourceLocation&, clang::ParsedAttributes&, clang::BalancedDelimiterTracker&) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Parse/ParseDeclCXX.cpp:257:5
#32 0x0000000003ce3903 clang::Parser::ParseScope::Exit() /usr/local/google/home/jamesfarrell/src/llvm-project/clang/include/clang/Parse/Parser.h:1120:15
#33 0x0000000003ce3903 clang::Parser::ParseNamespace(clang::DeclaratorContext, clang::SourceLocation&, clang::SourceLocation) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Parse/ParseDeclCXX.cpp:237:18
#34 0x0000000003ccb951 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::SourceLocation*) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Parse/ParseDecl.cpp:1787:12
#35 0x0000000003cb4487 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsingDeclSpec*) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Parse/Parser.cpp:0:3
#36 0x0000000003cb2cc3 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Parse/Parser.cpp:727:10
#37 0x0000000003caec7e clang::ParseAST(clang::Sema&, bool, bool) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Parse/ParseAST.cpp:161:5
#38 0x0000000002dc1008 clang::FrontendAction::Execute() /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1036:10
#39 0x0000000002d46c76 llvm::Error::getPtr() const /usr/local/google/home/jamesfarrell/src/llvm-project/llvm/include/llvm/Support/Error.h:274:12
#40 0x0000000002d46c76 llvm::Error::operator bool() /usr/local/google/home/jamesfarrell/src/llvm-project/llvm/include/llvm/Support/Error.h:234:16
#41 0x0000000002d46c76 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1036:23
#42 0x0000000002e6bf41 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:266:25
#43 0x00000000009ef096 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/tools/driver/cc1_main.cpp:248:15
#44 0x00000000009ecf68 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) /usr/local/google/home/jamesfarrell/src/llvm-project/clang/tools/driver/driver.cpp:317:12
#45 0x00000000009ecddf main /usr/local/google/home/jamesfarrell/src/llvm-project/clang/tools/driver/driver.cpp:388:12
#46 0x00007f03f57f47fd __libc_start_main ./csu/../csu/libc-start.c:332:16
#47 0x00000000009ea0da _start (bin/clang+++0x9ea0da)
Segmentation fault
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to