Here is the catch: Druntime's stack unwinding code relies on frame pointers. Optimized gcc code (at any opt. level > 0) doesn't contain frame pointers. (Unless the architecture requires it for debugging, like x86 or -fno-omit-frame-pointer is given.) That means that using any Linux x86-64 libraries that take callbacks into D results in broken exception handling! Unless the maintainers of a specific distribution added -fno-omit-frame-pointer. You cannot expect that on Gentoo for example.
I don't think this applies anymore (with dwarf eh.). But the case is on the point here - I'm using old runtime, and with Ubuntu Xenial, once exception handling walks from `main` back to `_libc_start_main` it just terminates.
Not an issue anymore since the switch to DWARF EH (just tested with GDC and LDC).