10

私のプロジェクトの 1 つ (純粋な Swift で 200 以上のファイルを含む) が最近、インデックス作成プロセスに干渉し始めました。インデックス作成プロセスが途中でフリーズしてから突然停止し、SourceKitServiceクラッシュが発生します。

問題のあるコードを見つけることができません。何もないように見えるからです!

私のコードは問題なくコンパイルされます (警告は 1 つもありません!) - それでも、インデックスが作成されません。最初は、Xcode 7.2 の問題だと思ったので、最新のベータ版 (7.3) にアップグレードしました。ただし、問題は引き続き発生します。元に戻す作業が多すぎるため、古いコードに戻ることはできず、特定のファイルのせいにすることもできません。クラッシュレポートはこちら.

明確にするために、Xcode自体はクラッシュせず、インデックス作成プロセスのみがクラッシュします(SourceKitService結果として)。

これを修正する方法についてのアイデアはありますか?

4

2 に答える 2

5

.xcodeproj から「xcuserdata」を削除します (.xcodeproj を右クリックし、[パッケージの内容を表示] を選択します。これで問題が解決するはずです。

于 2016-02-09T05:22:42.160 に答える
1

私が正しく読んでいれば、問題はプロセスのこの部分から来ています:

Thread 8 Crashed:
0   com.apple.SourceKitService      0x000000010450d9fc swift::TypeBase::getDesugaredType() + 12
1   com.apple.SourceKitService      0x00000001043bccbe (anonymous namespace)::DeclChecker::checkDynamicSelfReturn(swift::FuncDecl*, swift::TypeRepr*, unsigned int) + 478
2   com.apple.SourceKitService      0x00000001043b7c08 (anonymous namespace)::DeclChecker::visitFuncDecl(swift::FuncDecl*) + 1432
3   com.apple.SourceKitService      0x00000001043acc0d (anonymous namespace)::DeclChecker::visit(swift::Decl*) + 2733
4   com.apple.SourceKitService      0x00000001043a7ea7 swift::TypeChecker::validateDecl(swift::ValueDecl*, bool) + 727
5   com.apple.SourceKitService      0x00000001043b6426 (anonymous namespace)::DeclChecker::visitSubscriptDecl(swift::SubscriptDecl*) + 1478
6   com.apple.SourceKitService      0x00000001043acbdd (anonymous namespace)::DeclChecker::visit(swift::Decl*) + 2685
7   com.apple.SourceKitService      0x00000001043a7ea7 swift::TypeChecker::validateDecl(swift::ValueDecl*, bool) + 727
8   com.apple.SourceKitService      0x00000001044fc003 swift::DeclContext::lookupQualified(swift::Type, swift::DeclName, unsigned int, swift::LazyResolver*, llvm::SmallVectorImpl<swift::ValueDecl*>&) const + 3075
9   com.apple.SourceKitService      0x00000001043c7a7c swift::TypeChecker::lookupMember(swift::DeclContext*, swift::Type, swift::DeclName, swift::OptionSet<swift::NameLookupFlags, unsigned int>) + 556
10  com.apple.SourceKitService      0x00000001043d51b7 (anonymous namespace)::ConformanceChecker::lookupValueWitnesses(swift::ValueDecl*, bool*) + 359
11  com.apple.SourceKitService      0x00000001043d11a1 (anonymous namespace)::ConformanceChecker::resolveWitnessViaLookup(swift::ValueDecl*) + 401
12  com.apple.SourceKitService      0x00000001043ce86f swift::TypeChecker::checkConformance(swift::NormalProtocolConformance*) + 2255
13  com.apple.SourceKitService      0x000000010438011b typeCheckFunctionsAndExternalDecls(swift::TypeChecker&) + 1099
14  com.apple.SourceKitService      0x00000001043809e5 swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>, unsigned int) + 1781
15  com.apple.SourceKitService      0x0000000103fa40c2 swift::CompilerInstance::performSema() + 4738
16  com.apple.SourceKitService      0x0000000103e9a836 SourceKit::SwiftLangSupport::indexSource(llvm::StringRef, SourceKit::IndexingConsumer&, llvm::ArrayRef<char const*>, llvm::StringRef) + 4262
17  com.apple.SourceKitService      0x0000000103eb086a void SourceKit::WorkQueue::DispatchData::callAndDelete<handleRequestImpl(void*, std::__1::function<void (void*)>)::$_2>(void*) + 2170
18  libdispatch.dylib               0x00007fff9b7de33f _dispatch_client_callout + 8
19  libdispatch.dylib               0x00007fff9b7ec03a _dispatch_block_invoke + 474
20  com.apple.SourceKitService      0x00000001056afbbf executeBlock(void*) + 15
21  com.apple.SourceKitService      0x0000000103f3e58d ExecuteOnThread_Dispatch(void*) + 13
22  libsystem_pthread.dylib         0x00007fff8be14c13 _pthread_body + 131
23  libsystem_pthread.dylib         0x00007fff8be14b90 _pthread_start + 168
24  libsystem_pthread.dylib         0x00007fff8be12375 thread_start + 13

これにより、次のことがわかります。

https://github.com/apple/swift/pull/932/files

20日以上前

したがって、既知の問題だと思います。ただし、何が原因なのかわかりません。まだ十分にサポートされていない迅速なコード スタイルであると確信しています。

このクラッシュ テスト プロジェクトでもクラッシュが見つかりました。

https://github.com/practicalswift/swift-compiler-crashes

調べると、これらのクラッシュの 1 つをトリガーする正確なケースが見つかる場合があります。

  • ✓ 28197 迅速な typebase getdesugaredtype
  • ✓ 28200 迅速な typebase getdesugaredtype
  • ✓ 28203 スウィフト タイプベース getdesugaredtype
于 2016-02-05T02:51:23.277 に答える