Yes, my first inclination would be to simply use libunwind.   We already use it for stack unwinding on task failures, so why not use it for extracting stack traces?

The only problem I see with it would be in cases when fault happens somewhere inside Windows system dll, which do not have DWARF unwind info, obviously.   But system dlls do not use FPO, so if libunwind falls back to frame base pointers, it'll be fine.

Full disclosure: I have not actually tried this.  Perhaps at this point I should simply checkout your PR and try...