1

When debugging my Swift iOS project that also contains Objective-C parts, I cannot use breakpoints otherwise the debug server crashes, logging:

Message from debugger: The LLDB RPC server has crashed. The crash log is located in
~/Library/Logs/DiagnosticReports and has a prefix 'lldb-rpc-server'. Please file a bug and
attach the most recent crash log.

I am using the latest Xcode (11.5) but this happens since a number of updates. I suspect this started to happen at the time one of the latest Xcode updates has been installed but I am not 100% sure.

I know this question can be a duplicate, so I will add as much details as I can. The log contains, at the top:

Process:               lldb-rpc-server [57486]
Path:                  /Applications/Xcode.app/Contents/SharedFrameworks/LLDBRPC.framework/Versions/A/Resources/lldb-rpc-server
Identifier:            lldb-rpc-server
Version:               2
Code Type:             X86-64 (Native)
Parent Process:        Xcode [44264]
Responsible:           Xcode [44264]
User ID:               501

Date/Time:             2020-06-27 20:11:09.502 +0200
OS Version:            Mac OS X 10.15.5 (19F101)
Report Version:        12
Bridge OS Version:     4.5 (17P5300)
Anonymous UUID:        AAD489A9-72D8-BF2A-EF2C-48E06D701EBA

Sleep/Wake UUID:       4DA8CC95-35BE-4383-A87D-E24E0A2C6A42

Time Awake Since Boot: 130000 seconds
Time Since Wake:       11000 seconds

System Integrity Protection: disabled

Crashed Thread:        9  RPC packet thread for client tid 002da567 (2991463)

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       EXC_I386_GPFLT
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [57486]

Then, I will attach the crashing thread log:

Thread 9 Crashed:: RPC packet thread for client tid 002da567 (2991463)
0   com.apple.LLDB.framework        0x0000000109aff3f2 clang::ASTReader::ReadSLocEntry(int) + 226
1   com.apple.LLDB.framework        0x000000010a68e7ca clang::SourceManager::getFileIDLoaded(unsigned int) const + 618
2   com.apple.LLDB.framework        0x000000010a358a24 clang::SourceManager::getDecomposedLoc(clang::SourceLocation) const + 148
3   com.apple.LLDB.framework        0x0000000109b1f3ab clang::ASTReader::ReadPragmaDiagnosticMappings(clang::DiagnosticsEngine&) + 1131
4   com.apple.LLDB.framework        0x0000000109b1bf89 clang::ASTReader::InitializeContext() + 969
5   com.apple.LLDB.framework        0x0000000109b1b039 clang::ASTReader::ReadAST(llvm::StringRef, clang::serialization::ModuleKind, clang::SourceLocation, unsigned int, llvm::SmallVectorImpl<clang::ASTReader::ImportedSubmodule>*) + 3833
6   com.apple.LLDB.framework        0x00000001098ca8da clang::CompilerInstance::loadModule(clang::SourceLocation, llvm::ArrayRef<std::__1::pair<clang::IdentifierInfo*, clang::SourceLocation> >, clang::Module::NameVisibilityKind, bool) + 11034
7   com.apple.LLDB.framework        0x0000000107e00f47 swift::ClangImporter::Implementation::loadModuleClang(swift::SourceLoc, llvm::ArrayRef<std::__1::pair<swift::Identifier, swift::SourceLoc> >)::$_6::operator()(llvm::ArrayRef<std::__1::pair<clang::IdentifierInfo*, clang::SourceLocation> >, bool) const + 311
8   com.apple.LLDB.framework        0x0000000107e00cb5 swift::ClangImporter::Implementation::loadModuleClang(swift::SourceLoc, llvm::ArrayRef<std::__1::pair<swift::Identifier, swift::SourceLoc> >) + 869
9   com.apple.LLDB.framework        0x0000000107e01320 swift::ClangImporter::loadModule(swift::SourceLoc, llvm::ArrayRef<std::__1::pair<swift::Identifier, swift::SourceLoc> >) + 32
10  com.apple.LLDB.framework        0x0000000107d4c3f1 swift::ModuleFile::getModule(llvm::ArrayRef<swift::Identifier>, bool) + 881
11  com.apple.LLDB.framework        0x0000000107d7c1ab swift::ModuleFile::associateWithFileContext(swift::FileUnit*, swift::SourceLoc, bool) + 1627
12  com.apple.LLDB.framework        0x0000000107dd64a2 swift::SerializedModuleLoaderBase::loadAST(swift::ModuleDecl&, llvm::Optional<swift::SourceLoc>, llvm::StringRef, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, bool, bool) + 642
13  com.apple.LLDB.framework        0x0000000107dd83d4 swift::SerializedModuleLoaderBase::loadModule(swift::SourceLoc, llvm::ArrayRef<std::__1::pair<swift::Identifier, swift::SourceLoc> >) + 452
14  com.apple.LLDB.framework        0x0000000107f09884 swift::ASTContext::getModule(llvm::ArrayRef<std::__1::pair<swift::Identifier, swift::SourceLoc> >) + 244
15  com.apple.LLDB.framework        0x0000000107d4c34c swift::ModuleFile::getModule(llvm::ArrayRef<swift::Identifier>, bool) + 716
16  com.apple.LLDB.framework        0x0000000107d7c1ab swift::ModuleFile::associateWithFileContext(swift::FileUnit*, swift::SourceLoc, bool) + 1627
17  com.apple.LLDB.framework        0x0000000107dd64a2 swift::SerializedModuleLoaderBase::loadAST(swift::ModuleDecl&, llvm::Optional<swift::SourceLoc>, llvm::StringRef, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, bool, bool) + 642
18  com.apple.LLDB.framework        0x0000000107dd85dd swift::MemoryBufferSerializedModuleLoader::loadModule(swift::SourceLoc, llvm::ArrayRef<std::__1::pair<swift::Identifier, swift::SourceLoc> >) + 285
19  com.apple.LLDB.framework        0x0000000107f09bb5 swift::ASTContext::getModuleByName(llvm::StringRef) + 773
20  com.apple.LLDB.framework        0x0000000106edea5d lldb_private::SwiftASTContext::GetModule(lldb_private::SourceModule const&, lldb_private::Status&) + 749
21  com.apple.LLDB.framework        0x0000000106eed644 LoadOneModule(lldb_private::SourceModule const&, lldb_private::SwiftASTContext&, std::__1::weak_ptr<lldb_private::StackFrame>&, llvm::SmallVectorImpl<swift::SourceFile::ImportedModuleDesc>&, lldb_private::Status&) + 516
22  com.apple.LLDB.framework        0x0000000106eedf79 lldb_private::SwiftASTContext::PerformAutoImport(lldb_private::SwiftASTContext&, lldb_private::SymbolContext&, std::__1::weak_ptr<lldb_private::StackFrame>&, swift::SourceFile*, lldb_private::Status&) + 281
23  com.apple.LLDB.framework        0x0000000106f4f13b lldb_private::Target::GetScratchSwiftASTContext(lldb_private::Status&, lldb_private::ExecutionContextScope&, bool) + 1291
24  com.apple.LLDB.framework        0x0000000106dc233c lldb_private::ValueObject::GetScratchSwiftASTContext() + 108
25  com.apple.LLDB.framework        0x0000000106f88744 lldb_private::SwiftLanguageRuntime::GetDynamicTypeAndAddress(lldb_private::ValueObject&, lldb::DynamicValueType, lldb_private::TypeAndOrName&, lldb_private::Address&, lldb_private::Value::ValueType&) + 148
26  com.apple.LLDB.framework        0x000000010711b8ff lldb_private::SwiftLanguage::GetPossibleFormattersMatches(lldb_private::ValueObject&, lldb::DynamicValueType) + 303
27  com.apple.LLDB.framework        0x0000000106dd5654 lldb_private::FormatManager::GetPossibleMatches(lldb_private::ValueObject&, lldb_private::CompilerType, unsigned int, lldb::DynamicValueType, std::__1::vector<lldb_private::FormattersMatchCandidate, std::__1::allocator<lldb_private::FormattersMatchCandidate> >&, bool, bool, bool, bool) + 1492
28  com.apple.LLDB.framework        0x0000000106dd4a85 lldb_private::FormattersMatchData::GetMatchesVector() + 117
29  com.apple.LLDB.framework        0x0000000106de6a08 void lldb_private::TypeCategoryMap::Get<std::__1::shared_ptr<lldb_private::TypeSummaryImpl> >(lldb_private::FormattersMatchData&, std::__1::shared_ptr<lldb_private::TypeSummaryImpl>&) + 392
30  com.apple.LLDB.framework        0x0000000106dd9420 std::__1::shared_ptr<lldb_private::TypeSummaryImpl> lldb_private::FormatManager::GetCached<std::__1::shared_ptr<lldb_private::TypeSummaryImpl> >(lldb_private::FormattersMatchData&) + 448
31  com.apple.LLDB.framework        0x0000000106dd739c std::__1::shared_ptr<lldb_private::TypeSummaryImpl> lldb_private::FormatManager::Get<std::__1::shared_ptr<lldb_private::TypeSummaryImpl> >(lldb_private::ValueObject&, lldb::DynamicValueType) + 60
32  com.apple.LLDB.framework        0x0000000106dd734e lldb_private::FormatManager::GetSummaryFormat(lldb_private::ValueObject&, lldb::DynamicValueType) + 14
33  com.apple.LLDB.framework        0x0000000106dd18c3 lldb_private::DataVisualization::GetSummaryFormat(lldb_private::ValueObject&, lldb::DynamicValueType) + 51
34  com.apple.LLDB.framework        0x0000000106dbd827 lldb_private::ValueObject::UpdateFormatsIfNeeded() + 439
35  com.apple.LLDB.framework        0x0000000106dc358e lldb_private::ValueObject::CalculateSyntheticValue(bool) + 94
36  com.apple.LLDB.framework        0x0000000106dc3842 lldb_private::ValueObject::GetSyntheticValue(bool) + 34
37  com.apple.LLDB.framework        0x0000000106d2cd5d ValueImpl::GetSP(lldb_private::ProcessRunLock::ProcessRunLocker&, std::__1::unique_lock<std::__1::recursive_mutex>&, lldb_private::Status&) + 557
38  com.apple.LLDB.framework        0x0000000106d1b33b lldb::SBValue::GetSP(ValueLocker&) const + 139
39  com.apple.LLDB.framework        0x0000000106d1bf4b lldb::SBValue::GetValueType() + 187
40  lldb-rpc-server                 0x00000001068a39e4 rpc_server::_ZN4lldb7SBValue12GetValueTypeEv::HandleRPCCall(rpc_common::Connection&, rpc_common::RPCStream&, rpc_common::RPCStream&) + 36
41  lldb-rpc-server                 0x00000001068a6ce1 rpc_common::Connection::PrivateHandleRPCPacket(rpc_common::RPCPacket&, rpc_common::RPCPacket&, bool&) + 1553
42  lldb-rpc-server                 0x00000001068aa36d Packets::ProcessPackets() + 1005
43  lldb-rpc-server                 0x00000001068a9e96 Packets::ReadThread() + 214
44  lldb-rpc-server                 0x00000001068a9db9 Packets::RunReadThread(void*) + 9
45  libsystem_pthread.dylib         0x00007fff72ea4109 _pthread_start + 148
46  libsystem_pthread.dylib         0x00007fff72e9fb8b thread_start + 15

Only in a few cases, I can temporally solve the problem by deleting the app from the simulator / device and cleaning the project in Xcode.

I have tried the following:

  1. I completely removed all Cocoapods related stuff from the project, and replaced Cocoapods dependencies with mostly Carthage, and a few libraries added by and with their entire source. The problem persists.

  2. After Cocoapods deintegrate, I tried to remove all remaining entries referencing Cocoapods from the build settings.

The problem persists and it must be something project specific since I don't experience it on any other project. I even tried to attach hopper disassembler to the debug server to better follow the crash, but for the moment I have not found the root cause of the problem. Any help will be greatly appreciated.

EDIT:

After countless hours, I could at least determine a further important detail: The crash occurs only when I set the configuration to Debug, it never happens in Release. I am now changing the different build settings one by one. This is a very lengthy process because the issue is consistent only 80% of the times, meaning that a bad configuration might temporarily work. The only certainty is that it has never occurred in Release mode. Thanks for your interest and help.

Alfonso Tesauro
  • 1,730
  • 13
  • 21
  • Create a minimal, reproducible example and [report it to Apple](http://feedbackassistant.apple.com). – zrzka Jun 29 '20 at 10:43
  • does the log appear on the first interaction or without interaction after compiling the runtime? – Ol Sen Jun 29 '20 at 16:13
  • As a last resort, you could completely remove Xcode and all its preferences, libraries, etc, and start from scratch. See also https://stackoverflow.com/questions/47093252/xcode-9-stop-debugging-and-running-application-and-giving-error-the-lldb-rpc-se – koen Jun 29 '20 at 20:19

2 Answers2

1

This isn’t a problem with breakpoints directly, they are just the first thing that causes lldb to read the debug information for your project. The crash is coming when lldb tries to reconstruct a clang module needed to bind some ObjC classes into the swift module info. There’s not much more to be gathered from the crash report. But the lldb “types” log will show what lldb was working on at the time of the crash. To generate that log, put the command:

log enable -f /tmp/lldb-log.txt lldb types

In your ~/.lldbinit, and redo your debug session. When it crashes, file a bug with the log and the crash with http://bugs.swift.org.

Jim Ingham
  • 25,260
  • 2
  • 55
  • 63
0

It may help to unset all project breakpoints, as well as unsetting all filters and actions to thrown errors and clean up, re-compile at least once before you set new breakpoints in an updated Xcode version. Also check if you dont have exidently set breakpoint follow-ship in the debug icons row below your source while running. Uncheck at least once and try again.

Exact same error was driving me crazy unless i did the explained steps.

now i know where changes in Xcode's breakpoint management can lead to after an proper update.

Ol Sen
  • 3,163
  • 2
  • 21
  • 30