[swift-users] stack trace of Swift executable
Alex Blewitt
alblue at apple.com
Tue May 2 03:21:43 CDT 2017
If you can reproduce it, and run it under lldb, it will print the source line for you:
$ lldb .build/debug/main
(lldb) target create ".build/debug/main"
ruCurrent executable set to '.build/debug/main' (x86_64).
(lldb) run
Process 19013 launched: '/private/tmp/main/.build/debug/main' (x86_64)
Hello, world!
fatal error: unexpectedly found nil while unwrapping an Optional value
2017-05-02 09:17:11.351608+0100 asdf[19013:54205130] fatal error: unexpectedly found nil while unwrapping an Optional value
Current stack trace:
0 libswiftCore.dylib 0x00000001002c1160 swift_reportError + 125
1 libswiftCore.dylib 0x00000001002ddac0 _swift_stdlib_reportFatalError + 60
2 libswiftCore.dylib 0x00000001000ce260 specialized specialized StaticString.withUTF8Buffer<A> ((UnsafeBufferPointer<UInt8>) -> A) -> A + 342
3 libswiftCore.dylib 0x0000000100249120 partial apply for (_fatalErrorMessage(StaticString, StaticString, file : StaticString, line : UInt, flags : UInt32) -> Never).(closure #2) + 109
4 libswiftCore.dylib 0x00000001000ce260 specialized specialized StaticString.withUTF8Buffer<A> ((UnsafeBufferPointer<UInt8>) -> A) -> A + 342
5 libswiftCore.dylib 0x00000001001fbd00 specialized _fatalErrorMessage(StaticString, StaticString, file : StaticString, line : UInt, flags : UInt32) -> Never + 96
6 main 0x0000000100001340 say(message : String?) -> () + 248
7 main 0x00000001000011e0 main + 328
8 libdyld.dylib 0x00007fffb444d234 start + 1
Process 19013 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
frame #0: 0x00000001001fbd60 libswiftCore.dylib`function signature specialization <preserving fragile attribute, Arg[2] = Dead, Arg[3] = Dead> of Swift._fatalErrorMessage (Swift.StaticString, Swift.StaticString, file : Swift.StaticString, line : Swift.UInt, flags : Swift.UInt32) -> Swift.Never + 96
libswiftCore.dylib`function signature specialization <preserving fragile attribute, Arg[2] = Dead, Arg[3] = Dead> of Swift._fatalErrorMessage (Swift.StaticString, Swift.StaticString, file : Swift.StaticString, line : Swift.UInt, flags : Swift.UInt32) -> Swift.Never:
-> 0x1001fbd60 <+96>: ud2
0x1001fbd62 <+98>: nopw %cs:(%rax,%rax)
libswiftCore.dylib`protocol witness table accessor for <A> Swift.AnySequence<A> : Swift.Sequence in Swift:
0x1001fbd70 <+0>: pushq %rbp
0x1001fbd71 <+1>: movq %rsp, %rbp
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
* frame #0: 0x00000001001fbd60 libswiftCore.dylib`function signature specialization <preserving fragile attribute, Arg[2] = Dead, Arg[3] = Dead> of Swift._fatalErrorMessage (Swift.StaticString, Swift.StaticString, file : Swift.StaticString, line : Swift.UInt, flags : Swift.UInt32) -> Swift.Never + 96
frame #1: 0x0000000100001438 main`say(message=nil) -> () at main.swift:5
frame #2: 0x0000000100001328 main`main at main.swift:8
frame #3: 0x00007fffb444d235 libdyld.dylib`start + 1
frame #4: 0x00007fffb444d235 libdyld.dylib`start + 1
There is a symbolication tool available for Linux in the ~/swift/utils/symbolicate-linux-fatal, and Xcode can do the same symbolication for you as well.
Alex
> On 28 Apr 2017, at 22:28, Nick Snyder via swift-users <swift-users at swift.org> wrote:
>
> I have a simple main.swift that looks like this:
>
> ```
> print("Hello, world!")
> let x: String? = nil
>
> func say(message: String?) {
> print(x!) // intentional crash
> }
>
> say(message: x)
> ```
>
> Running this results in the crash
>
> ```
> $ swift build && ./.build/debug/hello
> Hello, world!
> fatal error: unexpectedly found nil while unwrapping an Optional value
> Current stack trace:
> 0 libswiftCore.dylib 0x0000000110120130 swift_reportError + 129
> 1 libswiftCore.dylib 0x000000011013cb50 _swift_stdlib_reportFatalError + 60
> 2 libswiftCore.dylib 0x000000010ff2d250 specialized specialized StaticString.withUTF8Buffer<A> ((UnsafeBufferPointer<UInt8>) -> A) -> A + 342
> 3 libswiftCore.dylib 0x00000001100a7e90 partial apply for (_fatalErrorMessage(StaticString, StaticString, file : StaticString, line : UInt, flags : UInt32) -> Never).(closure #2) + 109
> 4 libswiftCore.dylib 0x000000010ff2d250 specialized specialized StaticString.withUTF8Buffer<A> ((UnsafeBufferPointer<UInt8>) -> A) -> A + 342
> 5 libswiftCore.dylib 0x000000011005a9a0 specialized _fatalErrorMessage(StaticString, StaticString, file : StaticString, line : UInt, flags : UInt32) -> Never + 96
> 6 hello 0x000000010fee6200 main + 345
> 7 libdyld.dylib 0x00007fffe0375234 start + 1
> Illegal instruction: 4
> ```
>
> From the crash, how do I map back line 6 to an actual line in main.swift?
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170502/fc50af6f/attachment.html>
More information about the swift-users
mailing list