[swift-users] Swift 4.0 LLDBFrontend Crash

Edward Connell ewconnell at gmail.com
Mon Oct 16 13:56:34 CDT 2017

Specifying the clang import location is what is triggering the LLDBFrontend
I think you are saying that I should not need to specify the clang include
import location to the compiler.

I've attached the unmodified SwiftProtobuf example program found in the
docs at https://github.com/apple/swift-protobuf.git, so this is independent
from my project.

Are you able to simply do "swift build" and successfully debug and examine
values like "info"?
For me it fails unless I also specify the import location for the clang
include directory.

swift build -I/home/ed/swift/usr/lib/swift/clang/include

And yes I checked, I am picking up the correct swift binary

$ swift --version
Swift version 4.0.1-dev (LLVM 2dedb62a0b, Clang b9d76a314c, Swift
Target: x86_64-unknown-linux-gnu

*LLDB failure output*
$ lldb HelloWorld
(lldb) target create "HelloWorld"
Current executable set to 'HelloWorld' (x86_64).
(lldb) b main.swift:20
Breakpoint 1: where = HelloWorld`main + 1116 at main.swift:21, address =
(lldb) run
Process 20745 launched:
Process 20745 stopped
* thread #1, name = 'HelloWorld', stop reason = breakpoint 1.1
    frame #0: 0x000000000041146c HelloWorld`main at main.swift:21
   18  let binaryData: Data = try info.serializedData()
   20  // Deserialize a received Data object from `binaryData`
-> 21  let decodedInfo = try BookInfo(serializedData: binaryData)
   23  // Serialize to JSON format as a Data object
   24  let jsonData: Data = try info.jsonUTF8Data()
Target 0: (HelloWorld) stopped.
(lldb) p info
error: in auto-import:
failed to get module 'HelloWorld' from AST context:
<module-includes>:1:10: note: in file included from <module-includes>:1:
#include "CoreFoundation.h"

error: /home/ed/swift/usr/lib/swift/CoreFoundation/CoreFoundation.h:26:10:
error: 'stdarg.h' file not found
#include <stdarg.h>

/home/ed/swift/usr/lib/swift/CoreFoundation/CFStream.h:20:10: note: while
building module 'CDispatch' imported from
#include <dispatch/dispatch.h>

<module-includes>:1:10: note: in file included from <module-includes>:1:
#include "dispatch.h"

/home/ed/swift/usr/lib/swift/dispatch/dispatch.h:30:10: note: in file
included from /home/ed/swift/usr/lib/swift/dispatch/dispatch.h:30:
#include <os/linux_base.h>

/home/ed/swift/usr/lib/swift/os/linux_base.h:19:10: note: in file included
from /home/ed/swift/usr/lib/swift/os/linux_base.h:19:
#include <sys/param.h>

error: /usr/include/x86_64-linux-gnu/sys/param.h:23:10: error: 'stddef.h'
file not found
#include <stddef.h>

error: could not build C module 'CoreFoundation'

On Mon, Oct 16, 2017 at 11:00 AM, Alex Blewitt <alblue at apple.com> wrote:

> > On 16 Oct 2017, at 18:52, Edward Connell <ewconnell at gmail.com> wrote:
> >
> > While creating a bug report for this problem I placed my simple repro
> case in a separate project with default build settings and I found that it
> no longer crashes LLDB.
> >
> > My main project links to several system C libraries, because I am using
> libpng, Cuda, etc...
> > In order for LLDB to function with my project and load things from the
> AST context, I was told to specify the clang include directory.
> >
> > swift build -Xswiftc -I${SWIFT_HOME}/lib/swift/clang/include
> >
> > In the past everything worked fine.
> >
> > The stand alone bug repro project has no C library dependencies, however
> if I add this option, LLDB crashes.
> If you can add that information to the bug report, including whawt version
> of swift you're using (with swiftc -v) and the crash report then that would
> allow others to see what problem you're experiencing.
> I assume that SWIFT_HOME is the same location as the swift executable that
> you're running? Might be worth checking with 'which swift'.
> > I tried eliminating this option from my main project, and from a
> separate project using SwiftProtobuf. The result is that I am no longer
> able to debug either of them. Is there some new way we are supposed to pick
> up system imports, or is the a legitimate bug?
> The Swift REPL on Linux needs to have the -I flag in order to work as
> expected. However, the swift compiler shouldn't need to have that
> information, since it will know where the corresponding include directory
> is.
> Alex
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20171016/a6873bd8/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: prototest.tar.gz
Type: application/x-gzip
Size: 5615 bytes
Desc: not available
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20171016/a6873bd8/attachment.gz>

More information about the swift-users mailing list