llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
28.22k stars 11.64k forks source link

clangd 13 crash when background indexing source code in xgboost project #53096

Open zhwufd opened 2 years ago

zhwufd commented 2 years ago

coredump stacktrace:

0 0x00000000006834c0 in clang::Expr::getType (this=0x0) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/include/clang/AST/Expr.h:141

1 0x0000000003df9ec9 in checkOpenMPLoop (DKind=llvm::omp::Directive::OMPD_parallel_for, CollapseLoopCountExpr=0x0, OrderedLoopCountExpr=0x0, AStmt=0x7febd65c3a58, SemaRef=..., DSA=..., VarsWithImplicitDSA=..., Built=...)

at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Sema/SemaOpenMP.cpp:9037

2 0x0000000003dff0a8 in clang::Sema::ActOnOpenMPParallelForDirective (this=0x7febd45f09f0, Clauses=..., AStmt=0x7febd65c3a58, StartLoc=..., EndLoc=..., VarsWithImplicitDSA=...)

at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Sema/SemaOpenMP.cpp:10014

3 0x0000000003dea1ed in clang::Sema::ActOnOpenMPExecutableDirective (this=0x7febd45f09f0, Kind=llvm::omp::Directive::OMPD_parallel_for, DirName=..., CancelRegion=llvm::omp::Directive::OMPD_unknown, Clauses=..., AStmt=0x7febd65c3a58, StartLoc=..., EndLoc=...)

at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Sema/SemaOpenMP.cpp:5903

4 0x0000000003351a9a in clang::Parser::ParseOpenMPDeclarativeOrExecutableDirective (this=0x7febd45fb1d0, StmtCtx=clang::Parser::ParsedStmtContext::Compound) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseOpenMP.cpp:2579

5 0x0000000003380129 in clang::Parser::ParseStatementOrDeclarationAfterAttributes (this=0x7febd45fb1d0, Stmts=..., StmtCtx=clang::Parser::ParsedStmtContext::Compound, TrailingElseLoc=0x0, Attrs=...)

at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseStmt.cpp:410

6 0x000000000337eef9 in clang::Parser::ParseStatementOrDeclaration (this=0x7febd45fb1d0, Stmts=..., StmtCtx=clang::Parser::ParsedStmtContext::Compound, TrailingElseLoc=0x0)

at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseStmt.cpp:114

7 0x00000000033829a5 in clang::Parser::ParseCompoundStatementBody (this=0x7febd45fb1d0, isStmtExpr=false) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseStmt.cpp:1107

8 0x000000000338204a in clang::Parser::ParseCompoundStatement (this=0x7febd45fb1d0, isStmtExpr=false, ScopeFlags=4194312) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseStmt.cpp:917

9 0x0000000003381fca in clang::Parser::ParseCompoundStatement (this=0x7febd45fb1d0, isStmtExpr=false) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseStmt.cpp:883

10 0x000000000337f7bd in clang::Parser::ParseStatementOrDeclarationAfterAttributes (this=0x7febd45fb1d0, Stmts=..., StmtCtx=clang::Parser::ParsedStmtContext::SubStmt, TrailingElseLoc=0x0, Attrs=...)

at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseStmt.cpp:258

11 0x000000000337eef9 in clang::Parser::ParseStatementOrDeclaration (this=0x7febd45fb1d0, Stmts=..., StmtCtx=clang::Parser::ParsedStmtContext::SubStmt, TrailingElseLoc=0x0)

at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseStmt.cpp:114

12 0x000000000337edf6 in clang::Parser::ParseStatement (this=0x7febd45fb1d0, TrailingElseLoc=0x0, StmtCtx=clang::Parser::ParsedStmtContext::SubStmt) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseStmt.cpp:41

13 0x00000000033845d0 in clang::Parser::ParseWhileStatement (this=0x7febd45fb1d0, TrailingElseLoc=0x0) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseStmt.cpp:1649

14 0x000000000337f86a in clang::Parser::ParseStatementOrDeclarationAfterAttributes (this=0x7febd45fb1d0, Stmts=..., StmtCtx=clang::Parser::ParsedStmtContext::Compound, TrailingElseLoc=0x0, Attrs=...)

at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseStmt.cpp:270

15 0x000000000337eef9 in clang::Parser::ParseStatementOrDeclaration (this=0x7febd45fb1d0, Stmts=..., StmtCtx=clang::Parser::ParsedStmtContext::Compound, TrailingElseLoc=0x0)

at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseStmt.cpp:114

16 0x00000000033829a5 in clang::Parser::ParseCompoundStatementBody (this=0x7febd45fb1d0, isStmtExpr=false) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseStmt.cpp:1107

17 0x0000000003386fd7 in clang::Parser::ParseFunctionStatementBody (this=0x7febd45fb1d0, Decl=0x7febd65bd2d8, BodyScope=...) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseStmt.cpp:2276

18 0x00000000032b0840 in clang::Parser::ParseFunctionDefinition (this=0x7febd45fb1d0, D=..., TemplateInfo=..., LateParsedAttrs=0x7febe67f85c0) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/Parser.cpp:1377

19 0x00000000032cce74 in clang::Parser::ParseDeclGroup (this=0x7febd45fb1d0, DS=..., Context=clang::DeclaratorContext::File, DeclEnd=0x0, FRI=0x0) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseDecl.cpp:2030

20 0x00000000032af83d in clang::Parser::ParseDeclOrFunctionDefInternal (this=0x7febd45fb1d0, attrs=..., DS=..., AS=clang::AS_none) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/Parser.cpp:1137

21 0x00000000032af8f8 in clang::Parser::ParseDeclarationOrFunctionDefinition (this=0x7febd45fb1d0, attrs=..., DS=0x0, AS=clang::AS_none) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/Parser.cpp:1153

22 0x00000000032aee06 in clang::Parser::ParseExternalDeclaration (this=0x7febd45fb1d0, attrs=..., DS=0x0) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/Parser.cpp:975

23 0x00000000032ebffa in clang::Parser::ParseInnerNamespace (this=0x7febd45fb1d0, InnerNSs=..., index=0, InlineLoc=..., attrs=..., Tracker=...) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseDeclCXX.cpp:246

24 0x00000000032ebe2c in clang::Parser::ParseNamespace (this=0x7febd45fb1d0, Context=clang::DeclaratorContext::File, DeclEnd=..., InlineLoc=...) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseDeclCXX.cpp:224

25 0x00000000032cbfd2 in clang::Parser::ParseDeclaration (this=0x7febd45fb1d0, Context=clang::DeclaratorContext::File, DeclEnd=..., attrs=..., DeclSpecStart=0x0)

at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseDecl.cpp:1731

26 0x00000000032ae999 in clang::Parser::ParseExternalDeclaration (this=0x7febd45fb1d0, attrs=..., DS=0x0) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/Parser.cpp:909

27 0x00000000032ebffa in clang::Parser::ParseInnerNamespace (this=0x7febd45fb1d0, InnerNSs=..., index=0, InlineLoc=..., attrs=..., Tracker=...) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseDeclCXX.cpp:246

28 0x00000000032ebe2c in clang::Parser::ParseNamespace (this=0x7febd45fb1d0, Context=clang::DeclaratorContext::File, DeclEnd=..., InlineLoc=...) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseDeclCXX.cpp:224

29 0x00000000032cbfd2 in clang::Parser::ParseDeclaration (this=0x7febd45fb1d0, Context=clang::DeclaratorContext::File, DeclEnd=..., attrs=..., DeclSpecStart=0x0)

at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseDecl.cpp:1731

30 0x00000000032ae999 in clang::Parser::ParseExternalDeclaration (this=0x7febd45fb1d0, attrs=..., DS=0x0) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/Parser.cpp:909

31 0x00000000032aded9 in clang::Parser::ParseTopLevelDecl (this=0x7febd45fb1d0, Result=..., IsFirstDecl=false) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/Parser.cpp:720

32 0x00000000032a959f in clang::ParseAST (S=..., PrintStats=false, SkipFunctionBodies=true) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Parse/ParseAST.cpp:158

33 0x000000000301dd6f in clang::ASTFrontendAction::ExecuteAction (this=0x7febd456dbb0) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Frontend/FrontendAction.cpp:1058

34 0x000000000301d69b in clang::FrontendAction::Execute (this=0x7febd456dbb0) at /data/llvm/llvm-project-llvmorg-13.0.0/clang/lib/Frontend/FrontendAction.cpp:951

--Type for more, q to quit, c to continue without paging--

35 0x0000000001889c10 in clang::clangd::BackgroundIndex::index (this=0xabd2df0, Cmd=...) at /data/llvm/llvm-project-llvmorg-13.0.0/clang-tools-extra/clangd/index/Background.cpp:324

36 0x0000000001888760 in clang::clangd::BackgroundIndex::<lambda()>::operator()(void) const (__closure=0x7fea50e5ea90) at /data/llvm/llvm-project-llvmorg-13.0.0/clang-tools-extra/clangd/index/Background.cpp:168

37 0x000000000188b33d in std::_Function_handler<void(), clang::clangd::BackgroundIndex::indexFileTask(std::cxx11::string)::<lambda()> >::_M_invoke(const std::_Any_data &) (functor=...) at /usr/include/c++/8.3.0/bits/std_function.h:297

38 0x00000000010484c2 in std::function<void ()>::operator()() const (this=0x7febe67fbc90) at /usr/include/c++/8.3.0/bits/std_function.h:687

39 0x000000000189d76f in clang::clangd::BackgroundQueue::work(std::function<void ()>) (this=0xabd2fc0, OnIdle=...) at /data/llvm/llvm-project-llvmorg-13.0.0/clang-tools-extra/clangd/index/BackgroundQueue.cpp:42

40 0x0000000001887a9a in clang::clangd::BackgroundIndex::<lambda()>::operator()(void) (__closure=0xabdf600) at /data/llvm/llvm-project-llvmorg-13.0.0/clang-tools-extra/clangd/index/Background.cpp:114

41 0x000000000188baf7 in llvm::detail::UniqueFunctionBase::CallImpl<clang::clangd::BackgroundIndex::BackgroundIndex(const clang::clangd::ThreadsafeFS&, const clang::clangd::GlobalCompilationDatabase&, clang::clangd::BackgroundIndexStorage::Factory, clang::clangd::BackgroundIndex::Options)::<lambda()> >(void *) (CallableAddr=0xabdf600) at /data/llvm/llvm-project-llvmorg-13.0.0/llvm/include/llvm/ADT/FunctionExtras.h:216

42 0x0000000001280cc7 in llvm::unique_function<void ()>::operator()() (this=0xabdf600) at /data/llvm/llvm-project-llvmorg-13.0.0/llvm/include/llvm/ADT/FunctionExtras.h:378

43 0x00000000019581e3 in clang::clangd::AsyncTaskRunner::<lambda()>::operator()(void) (__closure=0xabdf5e0) at /data/llvm/llvm-project-llvmorg-13.0.0/clang-tools-extra/clangd/support/Threading.cpp:93

44 0x0000000001958d42 in llvm::thread::Apply<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> >(std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> > &, std::index_sequence) (Callee=...) at /data/llvm/llvm-project-llvmorg-13.0.0/llvm/include/llvm/Support/thread.h:42

45 0x0000000001958c10 in llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> > >(void *) (Ptr=0xabdf5e0)

at /data/llvm/llvm-project-llvmorg-13.0.0/llvm/include/llvm/Support/thread.h:50

46 0x0000000001958a90 in llvm::thread::ThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> > >(void *) (Ptr=0xabdf5e0)

at /data/llvm/llvm-project-llvmorg-13.0.0/llvm/include/llvm/Support/thread.h:60

47 0x00007fed0e609ea5 in start_thread () from /lib64/libpthread.so.0

48 0x00007fed0d2489fd in clone () from /lib64/libc.so.6

source file: https://github.com/dmlc/xgboost/blob/71eaa26c7bb564d0291a34bbcdcb606b6c299937/src/common/hist_util.cc

https://github.com/llvm/llvm-project/blob/d7b669b3a30345cfcdb2fde2af6f48aa4b94845d/clang/lib/Sema/SemaOpenMP.cpp#L9036

since N0 in above code is a nullptr, clangd crashed.

HighCommander4 commented 1 year ago

Please see https://github.com/clangd/clangd/issues/1731#issuecomment-1681167424 for a workaround