[swift-users] Automatically dump stack trace on trap

Greg Parker gparker at apple.com
Tue Dec 22 18:54:21 CST 2015

> On Dec 22, 2015, at 4:32 PM, Karl Pickett via swift-users <swift-users at swift.org> wrote:
> Having stack traces on critical faults is an "enterprisey" feature that I like.  It would be nice if swift allowed customization of what happened on a trap (like array out of bounds), so it dumped the thread's stack trace to stderr before exiting.
> I can simulate the desired behavior by installing a signal handler for SIGILL, and launch a script that fires up a debugger which attaches to the process and dumps the stack trace(s) before terminating it.
> I wrote it in C pretty easily and it is here: https://gist.github.com/kjpgit/9a1059a5960694767193 <https://gist.github.com/kjpgit/9a1059a5960694767193>
> It's just a small pain to build and link the C code to each swift project.  So my question is, can I use pure swift code for the signal handling instead of that C shim.
> 1)  Does swift on linux support an atomic_fetch_add() equivalent out of the box (or some other signal-safe serialization)
> 2) Any other concerns using swift code in a signal handler.  I'd just be using Glibc system calls, and any char data would be pre-allocated.

You should use the C code. Signal handlers are allowed to do almost nothing. Neither the Swift runtime nor the code generated by the Swift compiler promise to be signal-safe.

Greg Parker     gparker at apple.com <mailto:gparker at apple.com>     Runtime Wrangler

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20151222/5dfeef75/attachment.html>

More information about the swift-users mailing list