Skip to content

Crash in swift::GenericSignatureImpl::getDependentUpperBounds(swift::Type) #65817

Open
@ahoppen

Description

@ahoppen

The following new test case crashes

// RUN: %empty-directory(%t)
// RUN: %target-swift-ide-test -batch-code-completion -source-filename %s -filecheck %raw-FileCheck -completion-output-dir %t

protocol Publisher<Output, Failure> {
  associatedtype Output
  associatedtype Failure : Error
}

func pnReceive<P: Publisher>(_ publisher: P) where P.Failure == Never

func test() {
  pnReceive(#^COMPLETE^#) { }
}

Stack trace

Thread 3 Crashed:
0   libsystem_kernel.dylib        	       0x184c221fc __pthread_kill + 8
1   libsystem_pthread.dylib       	       0x184c59cc0 pthread_kill + 288
2   libsystem_c.dylib             	       0x184b69b24 __abort + 128 (abort.c:155)
3   libsystem_c.dylib             	       0x184b69aa4 abort + 192 (abort.c:126)
4   SourceKitService              	       0x1024bb790 swift::GenericSignatureImpl::getDependentUpperBounds(swift::Type) const (.cold.15) + 80
5   SourceKitService              	       0x1024b361c swift::GenericSignatureImpl::getDependentUpperBounds(swift::Type) const + 1540
6   SourceKitService              	       0x1025f32cc swift::ArchetypeType::getExistentialType() const + 140
7   SourceKitService              	       0x10187291c swift::ide::USRBasedType::fromType(swift::Type, swift::ide::USRBasedTypeArena&) + 140
8   SourceKitService              	       0x101872588 swift::ide::USRBasedTypeContext::USRBasedTypeContext(swift::ide::ExpectedTypeContext const*, swift::ide::USRBasedTypeArena&) + 156
9   SourceKitService              	       0x101869674 swift::ide::SimpleCachingCodeCompletionConsumer::handleResultsAndModules(swift::ide::CodeCompletionContext&, llvm::ArrayRef<swift::ide::RequestedCachedModule>, swift::ide::ExpectedTypeContext const*, swift::DeclContext const*, bool) + 1372
10  SourceKitService              	       0x101855904 swift::ide::deliverCompletionResults(swift::ide::CodeCompletionContext&, swift::ide::CompletionLookup&, swift::DeclContext*, swift::ide::CodeCompletionConsumer&) + 1504
11  SourceKitService              	       0x10185a9d8 (anonymous namespace)::CodeCompletionCallbacksImpl::doneParsing(swift::SourceFile*) + 5768
12  SourceKitService              	       0x1021b7904 swift::Parser::performIDEInspectionSecondPassImpl(swift::IDEInspectionDelayedDeclState&) + 588
13  SourceKitService              	       0x1021b75c8 swift::IDEInspectionSecondPassRequest::evaluate(swift::Evaluator&, swift::SourceFile*, swift::IDEInspectionCallbacksFactory*) const + 168
14  SourceKitService              	       0x1021bdcc4 llvm::Expected<swift::IDEInspectionSecondPassRequest::OutputType> swift::Evaluator::getResultUncached<swift::IDEInspectionSecondPassRequest>(swift::IDEInspectionSecondPassRequest const&) + 280
15  SourceKitService              	       0x1021b7440 swift::IDEInspectionSecondPassRequest::OutputType swift::evaluateOrDefault<swift::IDEInspectionSecondPassRequest>(swift::Evaluator&, swift::IDEInspectionSecondPassRequest, swift::IDEInspectionSecondPassRequest::OutputType) + 36
16  SourceKitService              	       0x100ab1234 void llvm::function_ref<void (swift::ide::IDEInspectionInstanceResult&, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>)>::callback_fn<swift::ide::IDEInspectionInstance::codeComplete(swift::CompilerInvocation&, llvm::ArrayRef<char const*>, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, llvm::MemoryBuffer*, unsigned int, swift::DiagnosticConsumer*, swift::ide::CodeCompletionContext&, std::__1::shared_ptr<std::__1::atomic<bool>>, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>)::$_1::operator()(swift::ide::CancellableResult<swift::ide::IDEInspectionInstanceResult>) const::'lambda'(auto&, auto)>(long, swift::ide::IDEInspectionInstanceResult&, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>) + 912
17  SourceKitService              	       0x100ab0ad0 void swift::ide::CancellableResult<swift::ide::IDEInspectionInstanceResult>::mapAsync<swift::ide::CodeCompleteResult>(llvm::function_ref<void (swift::ide::IDEInspectionInstanceResult&, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>)>, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>) + 84
18  SourceKitService              	       0x100ab0a18 void llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::IDEInspectionInstanceResult>)>::callback_fn<swift::ide::IDEInspectionInstance::codeComplete(swift::CompilerInvocation&, llvm::ArrayRef<char const*>, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, llvm::MemoryBuffer*, unsigned int, swift::DiagnosticConsumer*, swift::ide::CodeCompletionContext&, std::__1::shared_ptr<std::__1::atomic<bool>>, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>)::$_1>(long, swift::ide::CancellableResult<swift::ide::IDEInspectionInstanceResult>) + 128
19  SourceKitService              	       0x100aaf6cc llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::IDEInspectionInstanceResult>)>::operator()(swift::ide::CancellableResult<swift::ide::IDEInspectionInstanceResult>) const + 104
20  SourceKitService              	       0x100aae9f0 swift::ide::IDEInspectionInstance::performCachedOperationIfPossible(llvm::hash_code, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, swift::SearchPathOptions const&, llvm::MemoryBuffer*, unsigned int, swift::DiagnosticConsumer*, std::__1::shared_ptr<std::__1::atomic<bool>>, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::IDEInspectionInstanceResult>)>) + 3392
21  SourceKitService              	       0x100ab03b0 swift::ide::IDEInspectionInstance::performOperation(swift::CompilerInvocation&, llvm::ArrayRef<char const*>, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, llvm::MemoryBuffer*, unsigned int, swift::DiagnosticConsumer*, std::__1::shared_ptr<std::__1::atomic<bool>>, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::IDEInspectionInstanceResult>)>) + 252
22  SourceKitService              	       0x100ab05b8 swift::ide::IDEInspectionInstance::codeComplete(swift::CompilerInvocation&, llvm::ArrayRef<char const*>, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, llvm::MemoryBuffer*, unsigned int, swift::DiagnosticConsumer*, swift::ide::CodeCompletionContext&, std::__1::shared_ptr<std::__1::atomic<bool>>, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>) + 124
23  SourceKitService              	       0x100a6f780 void llvm::function_ref<void (SourceKit::SwiftLangSupport::CompletionLikeOperationParams&, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>)>::callback_fn<swiftCodeCompleteImpl(SourceKit::SwiftLangSupport&, llvm::MemoryBuffer*, unsigned int, llvm::ArrayRef<char const*>, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, SourceKit::CodeCompletion::Options const&, void const*, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>)::$_0::operator()(swift::ide::CancellableResult<SourceKit::SwiftLangSupport::CompletionLikeOperationParams>) const::'lambda'(auto&, auto)>(long, SourceKit::SwiftLangSupport::CompletionLikeOperationParams&, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>) + 148
24  SourceKitService              	       0x100a6f0f4 void swift::ide::CancellableResult<SourceKit::SwiftLangSupport::CompletionLikeOperationParams>::mapAsync<swift::ide::CodeCompleteResult>(llvm::function_ref<void (SourceKit::SwiftLangSupport::CompletionLikeOperationParams&, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>)>, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>) + 84
25  SourceKitService              	       0x100a6f03c void llvm::function_ref<void (swift::ide::CancellableResult<SourceKit::SwiftLangSupport::CompletionLikeOperationParams>)>::callback_fn<swiftCodeCompleteImpl(SourceKit::SwiftLangSupport&, llvm::MemoryBuffer*, unsigned int, llvm::ArrayRef<char const*>, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, SourceKit::CodeCompletion::Options const&, void const*, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>)::$_0>(long, swift::ide::CancellableResult<SourceKit::SwiftLangSupport::CompletionLikeOperationParams>) + 152
26  SourceKitService              	       0x100a7d548 SourceKit::SwiftLangSupport::performWithParamsToCompletionLikeOperation(llvm::MemoryBuffer*, unsigned int, bool, llvm::ArrayRef<char const*>, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, void const*, llvm::function_ref<void (swift::ide::CancellableResult<SourceKit::SwiftLangSupport::CompletionLikeOperationParams>)>) + 3036
27  SourceKitService              	       0x100a6abf0 swiftCodeCompleteImpl(SourceKit::SwiftLangSupport&, llvm::MemoryBuffer*, unsigned int, llvm::ArrayRef<char const*>, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, SourceKit::CodeCompletion::Options const&, void const*, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>) + 392
28  SourceKitService              	       0x100a6cb20 SourceKit::SwiftLangSupport::codeCompleteOpen(llvm::StringRef, llvm::MemoryBuffer*, unsigned int, SourceKit::OptionsDictionary*, llvm::ArrayRef<SourceKit::FilterRule>, SourceKit::GroupedCodeCompletionConsumer&, llvm::ArrayRef<char const*>, llvm::Optional<SourceKit::VFSOptions>, void const*) + 6852
29  SourceKitService              	       0x100a933fc std::__1::__function::__func<handleRequestCodeCompleteOpen(sourcekitd::RequestDict const&, void const*, std::__1::function<void (void*)>)::$_16, std::__1::allocator<handleRequestCodeCompleteOpen(sourcekitd::RequestDict const&, void const*, std::__1::function<void (void*)>)::$_16>, void ()>::operator()() + 1156
30  SourceKitService              	       0x100a92138 void SourceKit::WorkQueue::DispatchData::callAndDelete<handleSemanticRequest(sourcekitd::RequestDict const&, std::__1::function<void (void*)>, std::__1::function<void ()>)::$_8>(void*) + 36
31  libdispatch.dylib             	       0x184aac970 _dispatch_client_callout + 20 (object.m:560)
32  libdispatch.dylib             	       0x184ab03bc _dispatch_block_invoke_direct + 284 (queue.c:496)
33  SourceKitService              	       0x10694605c executeBlock(void*) + 28
34  SourceKitService              	       0x10694608c void* llvm::thread::ThreadProxy<std::__1::tuple<void (*)(void*), void*>>(void*) + 24
35  libsystem_pthread.dylib       	       0x184c5a034 _pthread_start + 136
36  libsystem_pthread.dylib       	       0x184c54e3c thread_start + 8

rdar://108835466

Metadata

Metadata

Assignees

No one assigned

    Labels

    ASTArea → compiler: The libSwiftAST librarycode completionArea → source tooling: code completioncompilerThe Swift compiler itselfcrashBug: A crash, i.e., an abnormal termination of softwarefound by stress testerFlag: An issue found by the SourceKit stress testergenericsFeature: generic declarations and typessource toolingArea: IDE support, SourceKit, and other source toolingswift 5.9

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions