2016-01-30 16 views
10

Jeden z moich projektów (zawierający ponad 200 plików w czystej wersji Swift) właśnie zaczął ingerować w proces indeksowania. Proces indeksowania zatrzymuje się w połowie, a następnie nagle zatrzymuje, powodując awarię SourceKitService.Jak przywrócić funkcjonalność indeksowania? (Xcode)

Po prostu nie mogę znaleźć błędnego kodu; ponieważ wydaje się, że ich nie ma!

Mój kod kompiluje się dobrze (bez jednego ostrzeżenia!) - a mimo to nie jest indeksowany. Początkowo myślałem, że jest to problem Xcode 7.2 i tak zaktualizowany do najnowszej wersji beta (7.3); jednak problem nadal występuje. Nie mogę powrócić do mojego starego kodu, ponieważ zbyt wiele pracy zostanie przerwane i nie mogę wykryć konkretnego pliku do winy. Raport o awariach to here.

Aby wyjaśnić, sam Xcode nie ulega awarii, tylko proces indeksowania (i SourceKitService w konsekwencji).

Jakieś pomysły na rozwiązanie tego problemu?

+0

Przypuszczam, że tak, ale na wszelki wypadek: "oczyścić projekt i czyste dane pochodne" może pomóc. – Moritz

+0

@EricD .: Próbowałem już. –

+0

Zawsze jest młotek: usuwanie '~/Library/Caches/com.apple.dt.Xcode /' * zwykle * rozwiązuje ten problem, ale także resetuje niektóre prefs i DB, aby mogły mieć uciążliwe efekty uboczne, strzeż się (najpierw wykonaj kopię TimeMachine albo coś w tym stylu). – Moritz

Odpowiedz

5

Usuń "xcuserdata" z .xcodeproj (kliknij prawym przyciskiem myszy na .xcodeproj> wybierz Pokaż zawartość pakietu. To powinno rozwiązać problem.

+0

To zadziałało! Dziękuję bardzo! Gdzie znalazłeś to rozwiązanie, jeśli nie masz nic przeciwko temu, że pytam? –

+0

Właściwie miałem podobny problem. Stwierdziłem, że wszystkie meta-informacje są przechowywane wewnątrz "xcuserdata". Zaryzykowałem, aby go usunąć i była magia :-) – TechBee

+0

Uh oh, mówiłem zbyt szybko. SourceKitService ponownie się zawiesił :( –

1

Jeśli mam poprawnie czytać, problem pochodzi z tej części procesu:

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 

, która prowadzi nas do:

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

20 dni + temu

Sądzę więc, że jest to znany problem. Jednak nie wiem, co jest przyczyną tego. Jestem pewien, że jest to styl szybkiego kodu, który nie jest jeszcze dobrze obsługiwany.

Znalazłem również swoją katastrofę w tym projekcie crash test:

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

Jeśli spojrzeć na nią, można znaleźć dokładną sprawę, że wyzwala jeden z tych wypadków:

  • ✓ 28197 typ swift getdesugaredtype
  • ✓ 28200 szybka baza typów getdesugaredtype
  • ✓ 28203 szybka baza typów getdesugaredtype
+0

Nie, nie można znaleźć uszkodzonego kodu. Ale cieszę się, że jest to poprawione w najnowszej wersji beta! –

+0

Cieszę się, że mogę sprawić, że masz dobry koniec tygodnia :) – Mikael