New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[SR-12076] repl completion for struct Bar:
crashes
#54512
Comments
@swift-ci create |
I found some slightly different code that produces a similar crash, probably another instance of the same thing. // RUN: %target-swift-ide-test -repl-code-completion -source-filename %s
struct Foo<T> {}
extension Foo whe swift-ide-test: /usr/local/google/home/marcrasi/swift-base-master/llvm-project/llvm/include/llvm/ADT/Optional.h:173: T &llvm::optional_detail::OptionalStorage<unsigned int, true>::getValue() & [T = unsigned int]: Assertion `hasVal' failed.
Stack dump:
0. Program arguments: /usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test -target x86_64-unknown-linux-gnu -module-cache-path /usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/swift-test-results/x86_64-unknown-linux-gnu/clang-module-cache -completion-cache-path /usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/swift-test-results/x86_64-unknown-linux-gnu/completion-cache -swift-version 4 -repl-code-completion -source-filename /usr/local/google/home/marcrasi/swift-base-master/swift/test/IDE/complete_negative_2.swift
1. While evaluating request TypeCheckSourceFileRequest(source_file "", 0)
2. While evaluating request ParseMembersRequest(extension of Foo)
#​0 0x00000000047b6db4 PrintStackTraceSignalHandler(void*) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x47b6db4)
#​1 0x00000000047b49de llvm::sys::RunSignalHandlers() (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x47b49de)
#​2 0x00000000047b71d6 SignalHandler(int) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x47b71d6)
#​3 0x00007f551a6db510 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x13510)
#​4 0x00007f5519feb081 raise (/lib/x86_64-linux-gnu/libc.so.6+0x3a081)
#​5 0x00007f5519fd6535 abort (/lib/x86_64-linux-gnu/libc.so.6+0x25535)
#​6 0x00007f5519fd640f (/lib/x86_64-linux-gnu/libc.so.6+0x2540f)
#​7 0x00007f5519fe3b92 (/lib/x86_64-linux-gnu/libc.so.6+0x32b92)
#​8 0x00000000010de3fc swift::ParseMembersRequest::evaluate(swift::Evaluator&, swift::IterableDeclContext*) const (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x10de3fc)
#​9 0x00000000010de635 swift::SimpleRequest<swift::ParseMembersRequest, swift::FingerprintAndMembers (swift::IterableDeclContext*), (swift::CacheKind)1>::evaluateRequest(swift::ParseMembersRequest const&, swift::Evaluator&) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x10de635)
#​10 0x00000000013aedd4 llvm::Expected<swift::ParseMembersRequest::OutputType> swift::Evaluator::getResultUncached<swift::ParseMembersRequest>(swift::ParseMembersRequest const&) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x13aedd4)
#​11 0x00000000013ae840 llvm::Expected<swift::ParseMembersRequest::OutputType> swift::Evaluator::getResultCached<swift::ParseMembersRequest, (void*)0>(swift::ParseMembersRequest const&) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x13ae840)
#​12 0x00000000013ac369 swift::ParseMembersRequest::OutputType swift::evaluateOrDefault<swift::ParseMembersRequest>(swift::Evaluator&, swift::ParseMembersRequest, swift::ParseMembersRequest::OutputType) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x13ac369)
#​13 0x00000000013abd99 swift::IterableDeclContext::loadAllMembers() const (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x13abd99)
#​14 0x00000000013abc69 swift::IterableDeclContext::getMembers() const (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x13abc69)
#​15 0x000000000131f587 swift::ASTVisitor<(anonymous namespace)::Traversal, swift::Expr*, swift::Stmt*, bool, swift::Pattern*, bool, void>::visit(swift::Decl*) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x131f587)
#​16 0x000000000131af9b (anonymous namespace)::Traversal::doIt(swift::Decl*) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x131af9b)
#​17 0x000000000131aec3 swift::Decl::walk(swift::ASTWalker&) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x131aec3)
#​18 0x0000000000dac47a swift::TypeChecker::buildTypeRefinementContextHierarchy(swift::SourceFile&, unsigned int) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0xdac47a)
#​19 0x0000000000e8dfba swift::TypeCheckSourceFileRequest::evaluate(swift::Evaluator&, swift::SourceFile*, unsigned int) const (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0xe8dfba)
#​20 0x0000000000e5f1e0 swift::SimpleRequest<swift::TypeCheckSourceFileRequest, bool (swift::SourceFile*, unsigned int), (swift::CacheKind)2>::evaluateRequest(swift::TypeCheckSourceFileRequest const&, swift::Evaluator&) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0xe5f1e0)
#​21 0x0000000000e900c3 llvm::Expected<swift::TypeCheckSourceFileRequest::OutputType> swift::Evaluator::getResultUncached<swift::TypeCheckSourceFileRequest>(swift::TypeCheckSourceFileRequest const&) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0xe900c3)
#​22 0x0000000000e8fe19 llvm::Expected<swift::TypeCheckSourceFileRequest::OutputType> swift::Evaluator::getResultCached<swift::TypeCheckSourceFileRequest, (void*)0>(swift::TypeCheckSourceFileRequest const&) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0xe8fe19)
#​23 0x0000000000e8dd57 swift::TypeCheckSourceFileRequest::OutputType swift::evaluateOrDefault<swift::TypeCheckSourceFileRequest>(swift::Evaluator&, swift::TypeCheckSourceFileRequest, swift::TypeCheckSourceFileRequest::OutputType) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0xe8dd57)
#​24 0x0000000000e8dd2d swift::performTypeChecking(swift::SourceFile&, unsigned int) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0xe8dd2d)
#​25 0x00000000005ad9dc doCodeCompletion(swift::SourceFile&, llvm::StringRef, unsigned int*, swift::CodeCompletionCallbacksFactory*) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x5ad9dc)
#​26 0x00000000005ad49a swift::REPLCompletions::populate(swift::SourceFile&, llvm::StringRef) (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x5ad49a)
#​27 0x000000000049387c main (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x49387c)
#​28 0x00007f5519fd7bbb __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x26bbb)
#​29 0x000000000048cc5a _start (/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test+0x48cc5a)
/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/test-linux-x86_64/IDE/Output/complete_negative_2.swift.script: line 1: 44451 Aborted /usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift-ide-test -target x86_64-unknown-linux-gnu -module-cache-path '/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/swift-test-results/x86_64-unknown-linux-gnu/clang-module-cache' -completion-cache-path '/usr/local/google/home/marcrasi/swift-base-master/build/Ninja-ReleaseAssert/swift-linux-x86_64/swift-test-results/x86_64-unknown-linux-gnu/completion-cache' -swift-version 4 -repl-code-completion -source-filename /usr/local/google/home/marcrasi/swift-base-master/swift/test/IDE/complete_negative_2.swift |
@marcrasi Yup, that's the same issue, it happens basically any time we try to perform delayed parsing on the decl being completed. I'll add it as a test case in my upcoming fix, thanks! |
Cool, thanks for working on this! Do you know about when your fix will be ready? We want to do a release of Swift for TensorFlow soon, and this is one issue that we'd like to have a fix for in our release, so any estimate about when it'll be fixed would be helpful 🙂 |
Fixed by the above linked PR |
Additional Detail from JIRA
md5: a121d8c686e3418cd04e169f9c6784e0
Issue Description:
The following testcase crashes at head for me (my current commit hash is f193548):
Oddly, if I type `struct Bar:<TAB>` in the LLDB repl I don't get the crash.
PR with negative test: #29416
The stack trace is:
The text was updated successfully, but these errors were encountered: