[swift-users] Swift 4.0 LLDBFrontend Crash
Alex Blewitt
alblue at apple.com
Mon Oct 16 14:17:18 CDT 2017
Please record this in a bug at bugs.swift.org so that it doesn’t get lost, if you haven’t already.
Thanks!
Alex
Sent from my iPhone 📱
> On 16 Oct 2017, at 19:56, Edward Connell <ewconnell at gmail.com> wrote:
>
> Specifying the clang import location is what is triggering the LLDBFrontend crash.
> 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
> $ swift --version
> Swift version 4.0.1-dev (LLVM 2dedb62a0b, Clang b9d76a314c, Swift 00e34e4b1e)
> 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 = 0x000000000041146c
> (lldb) run
> Process 20745 launched: '/home/ed/Documents/prototest/.build/x86_64-unknown-linux/debug/HelloWorld' (x86_64)
> 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()
> 19
> 20 // Deserialize a received Data object from `binaryData`
> -> 21 let decodedInfo = try BookInfo(serializedData: binaryData)
> 22
> 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 /home/ed/swift/usr/lib/swift/CoreFoundation/CFStream.h:20:
> #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
>
> <prototest.tar.gz>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20171016/d28ec77e/attachment.html>
More information about the swift-users
mailing list