Issue 203158
Summary [clang][clangd][HLSL] Crash in BuiltinTypeMethodBuilder when completing Texture2D resource type
Labels clang
Assignees
Reporter hongtaihu
    This input is generated by a fuzzer.
source code:
```cxx
Texture2D<float> a
```


use

```
 --driver-mode=g++ \
    -target dxil-pc-shadermodel6.0-library \
    -x hlsl -std=hlsl202x -fsyntax-only Texture2D-default.hlsl
```

and 
```
clangd -check
```

stacktrace
```
Stack dump:
0.      <eof> parser at end of file
 #0 0x00005eed732815e2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/llvm/lib/Support/Unix/Signals.inc:885:3
 #1 0x00005eed7327e35c llvm::sys::RunSignalHandlers() <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/llvm/lib/Support/Signals.cpp:108:20
 #2 0x00005eed7327ebd1 SignalHandler(int, siginfo_t*, void*) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/llvm/lib/Support/Unix/Signals.inc:448:14
 #3 0x00007fe5b4e45330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
 #4 0x00007fe5b4e9eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007fe5b4e9eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x00007fe5b4e9eb2c pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x00007fe5b4e4527e raise ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007fe5b4e288ff abort ./stdlib/abort.c:81:7
 #9 0x00007fe5b4e2881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007fe5b4e3b517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#11 0x00005eed752346f4 clang::hlsl::BuiltinTypeMethodBuilder& clang::hlsl::BuiltinTypeMethodBuilder::accessHandleFieldOnResource<clang::hlsl::BuiltinTypeMethodBuilder::PlaceHolder>(clang::hlsl::BuiltinTypeMethodBuilder::PlaceHolder) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.cpp:756:5
#12 0x00005eed75234947 clang::hlsl::BuiltinTypeDeclBuilder::addSampleMethods(llvm::dxil::ResourceDimension) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.cpp:1648:19
#13 0x00005eed75224ca2 setupTextureType(clang::CXXRecordDecl*, clang::Sema&, llvm::dxil::ResourceClass, bool, llvm::dxil::ResourceDimension) (.constprop.0) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Sema/HLSLExternalSemaSource.cpp:268:28
#14 0x00005eed75224f1e operator() <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Sema/HLSLExternalSemaSource.cpp:677:28
#15 0x00005eed75224f1e __invoke_impl<void, clang::HLSLExternalSemaSource::defineHLSLTypesWithForwardDeclarations()::<lambda(clang::CXXRecordDecl*)>&, clang::CXXRecordDecl*> /usr/include/c++/13/bits/invoke.h:61:36
#16 0x00005eed75224f1e __invoke_r<void, clang::HLSLExternalSemaSource::defineHLSLTypesWithForwardDeclarations()::<lambda(clang::CXXRecordDecl*)>&, clang::CXXRecordDecl*> /usr/include/c++/13/bits/invoke.h:111:28
#17 0x00005eed75224f1e std::_Function_handler<void (clang::CXXRecordDecl*), clang::HLSLExternalSemaSource::defineHLSLTypesWithForwardDeclarations()::'lambda13'(clang::CXXRecordDecl*)>::_M_invoke(std::_Any_data const&, clang::CXXRecordDecl*&&) /usr/include/c++/13/bits/std_function.h:290:30
#18 0x00005eed7522928f std::_Function_base::~_Function_base() /usr/include/c++/13/bits/std_function.h:243:11
#19 0x00005eed7522928f std::function<void (clang::CXXRecordDecl*)>::~function() /usr/include/c++/13/bits/std_function.h:334:11
#20 0x00005eed7522928f clang::HLSLExternalSemaSource::CompleteType(clang::TagDecl*) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Sema/HLSLExternalSemaSource.cpp:733:1
#21 0x00005eed746494e8 llvm::SmallVectorBase<unsigned int>::size() const <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/llvm/include/llvm/ADT/SmallVector.h:83:32
#22 0x00005eed746494e8 clang::MultiplexExternalSemaSource::CompleteType(clang::TagDecl*) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Sema/MultiplexExternalSemaSource.cpp:159:37
#23 0x00005eed73e7ee0a clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser*) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Sema/SemaType.cpp:9753:17
#24 0x00005eed73e7f567 clang::Sema::RequireCompleteType(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser&) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Sema/SemaType.cpp:9467:30
#25 0x00005eed73e7f677 clang::Sema::RequireCompleteType(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, unsigned int) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Sema/SemaType.cpp:9846:1
#26 0x00005eed743cc6b2 clang::Sema::RequireCompleteType(clang::SourceLocation, clang::QualType, unsigned int) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/include/clang/Sema/Sema.h:15546:31
#27 0x00005eed743cc6b2 clang::SemaHLSL::ActOnVariableDeclarator(clang::VarDecl*) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Sema/SemaHLSL.cpp:5421:36
#28 0x00005eed741478a3 clang::Sema::getLangOpts() const <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/include/clang/Sema/Sema.h:932:51
#29 0x00005eed741478a3 clang::Sema::ActOnVariableDeclarator(clang::Scope*, clang::Declarator&, clang::DeclContext*, clang::TypeSourceInfo*, clang::LookupResult&, llvm::MutableArrayRef<clang::TemplateParameterList*>, bool&, llvm::ArrayRef<clang::BindingDecl*>) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Sema/SemaDecl.cpp:8271:18
#30 0x00005eed7415fba7 clang::Sema::HandleDeclarator(clang::Scope*, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Sema/SemaDecl.cpp:6685:34
#31 0x00005eed7416039c clang::Sema::ActOnDeclarator(clang::Scope*, clang::Declarator&) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Sema/SemaDecl.cpp:6318:31
#32 0x00005eed75142ecb clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Parse/ParseDecl.cpp:2585:18
#33 0x00005eed75154ee2 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Parse/ParseDecl.cpp:2382:3
#34 0x00005eed75116779 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Parse/Parser.cpp:1153:73
#35 0x00005eed75116fff clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Parse/Parser.cpp:1175:42
#36 0x00005eed7511db61 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Parse/Parser.cpp:1003:50
#37 0x00005eed7511f827 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Parse/Parser.cpp:711:36
#38 0x00005eed7511fcc3 clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Parse/Parser.cpp:608:32
#39 0x00005eed751040ea clang::ParseAST(clang::Sema&, bool, bool) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Parse/ParseAST.cpp:169:69
#40 0x00005eed74efaa41 clang::FrontendAction::Execute() <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang/lib/Frontend/FrontendAction.cpp:1346:38
#41 0x00005eed748dfbb6 llvm::Error::getPtr() const <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/llvm/include/llvm/Support/Error.h:278:51
#42 0x00005eed748dfbb6 llvm::Error::operator bool() <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/llvm/include/llvm/Support/Error.h:241:22
#43 0x00005eed748dfbb6 clang::clangd::ParsedAST::build(llvm::StringRef, clang::clangd::ParseInputs const&, std::unique_ptr<clang::CompilerInvocation, std::default_delete<clang::CompilerInvocation>>, llvm::ArrayRef<clang::clangd::Diag>, std::shared_ptr<clang::clangd::PreambleData const>) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang-tools-extra/clangd/ParsedAST.cpp:709:42
#44 0x00005eed74980a5c std::unique_ptr<clang::CompilerInvocation, std::default_delete<clang::CompilerInvocation>>::~unique_ptr() /usr/include/c++/13/bits/unique_ptr.h:403:12
#45 0x00005eed74980a5c clang::clangd::(anonymous namespace)::ASTWorker::generateDiagnostics(std::unique_ptr<clang::CompilerInvocation, std::default_delete<clang::CompilerInvocation>>, clang::clangd::ParseInputs, std::vector<clang::clangd::Diag, std::allocator<clang::clangd::Diag>>) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang-tools-extra/clangd/TUScheduler.cpp:1214:74
#46 0x00005eed74981430 std::unique_ptr<clang::CompilerInvocation, std::default_delete<clang::CompilerInvocation>>::~unique_ptr() /usr/include/c++/13/bits/unique_ptr.h:403:12
#47 0x00005eed74981430 clang::clangd::(anonymous namespace)::ASTWorker::updatePreamble(std::unique_ptr<clang::CompilerInvocation, std::default_delete<clang::CompilerInvocation>>, clang::clangd::ParseInputs, std::shared_ptr<clang::clangd::PreambleData const>, std::vector<clang::clangd::Diag, std::allocator<clang::clangd::Diag>>, clang::clangd::WantDiagnostics)::'lambda'()::operator()() (.part.0) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang-tools-extra/clangd/TUScheduler.cpp:1147:24
#48 0x00005eed749757da clang::clangd::(anonymous namespace)::ASTWorker::runTask(llvm::StringRef, llvm::function_ref<void ()>) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang-tools-extra/clangd/TUScheduler.cpp:1328:1
#49 0x00005eed74978dac clang::clangd::(anonymous namespace)::ASTWorker::run() <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang-tools-extra/clangd/TUScheduler.cpp:1462:5
#50 0x00005eed74b5716e llvm::detail::UniqueFunctionBase<void>::operator=(llvm::detail::UniqueFunctionBase<void>&&) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/llvm/include/llvm/ADT/FunctionExtras.h:326:5
#51 0x00005eed74b5716e llvm::detail::UniqueFunctionBase<void>::operator=(llvm::detail::UniqueFunctionBase<void>&&) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/llvm/include/llvm/ADT/FunctionExtras.h:318:23
#52 0x00005eed74b5716e llvm::unique_function<void ()>::operator=(llvm::unique_function<void ()>&&) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/llvm/include/llvm/ADT/FunctionExtras.h:349:20
#53 0x00005eed74b5716e operator() <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/clang-tools-extra/clangd/support/Threading.cpp:103:14
#54 0x00005eed74b5716e operator()<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()>&> <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/llvm/include/llvm/Support/thread.h:46:16
#55 0x00005eed74b5716e __invoke_impl<void, llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> > >(void*)::<lambda(auto:5&&, auto:6&& ...)>, clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()>&> /usr/include/c++/13/bits/invoke.h:61:36
#56 0x00005eed74b5716e __invoke<llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> > >(void*)::<lambda(auto:5&&, auto:6&& ...)>, clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()>&> /usr/include/c++/13/bits/invoke.h:96:40
#57 0x00005eed74b5716e __apply_impl<llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> > >(void*)::<lambda(auto:5&&, auto:6&& ...)>, std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> >&, 0> /usr/include/c++/13/tuple:2302:27
#58 0x00005eed74b5716e apply<llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> > >(void*)::<lambda(auto:5&&, auto:6&& ...)>, std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> >&> /usr/include/c++/13/tuple:2313:31
#59 0x00005eed74b5716e GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> > > <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/llvm/include/llvm/Support/thread.h:44:15
#60 0x00005eed74b5716e void* llvm::thread::ThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::'lambda0'()>>(void*) <REPO_ROOT>/tmp/llvm-project-main-20260608-latest/llvm/include/llvm/Support/thread.h:62:36
#61 0x00007fe5b4e9caa4 start_thread ./nptl/pthread_create.c:447:8
#62 0x00007fe5b4f29c6c clone3 ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:80:0
Signalled during AST worker action: Build AST
  Filename: /tmp/reduce-hlsl756.bL95EF/Texture2D-default.hlsl
  Directory: /tmp/reduce-hlsl756.bL95EF
  Command Line: /usr/lib/llvm-18/bin/clang++ --driver-mode=g++ -target dxil-pc-shadermodel6.0-library -x hlsl -std=hlsl202x -fsyntax-only -resource-dir=<REPO_ROOT>/tmp/build-assert-clangd-main-20260608-latest/lib/clang/23 -- /tmp/reduce-hlsl756.bL95EF/Texture2D-default.hlsl
  Version: 1
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>
BrokenPipeError: [Errno 32] Broken pipe
<REPO_ROOT>/harness/scripts/run_clangd_didopen_workspace.sh: line 117: 5948 Exit 120                { emit_lsp "$INIT"; emit_lsp "$INITIALIZED"; emit_lsp "$DIDOPEN"; sleep "$DIDOPEN_WAIT_SECS"; if [[ -n "$POST_OPEN" ]]; then
    emit_lsp "$POST_OPEN";
fi; emit_lsp "$SHUTDOWN"; emit_lsp "$EXIT"; }
      5949 Aborted                 (core dumped) | ( cd "$WORKDIR"; "$TARGET" "${TARGET_ARGS[@]}" )
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to