pkg / errors

Simple error handling primitives
https://godoc.org/github.com/pkg/errors
BSD 2-Clause "Simplified" License
8.18k stars 691 forks source link

RFC: Allow custom StackTraces #216

Open cyphar opened 4 years ago

cyphar commented 4 years ago

At the moment, there is no way to provide a custom stack trace for an error -- the stack trace is captured at Wrapf (or other such wrapping) time. While this is totally acceptable for pure-Go code, it would be useful to be able to add a stacktrace from a non-Go library which generates its own stacktraces.

The usecase that drives this is https://github.com/openSUSE/libpathrs -- it's a Rust library for which I'm writing some Go bindings. The fundamental cause of the error is within Rust code, but the Rust code provides (through C FFI) a full backtrace at the point the error occurred. Being able to produce loss-free Go errors would be pretty useful IMHO.

This proposal basically boils down to having something as simple as:

func (*stack) WithCustomStacktrace(s StackTrace) { /* ... */ }