Cgo is not in use; thank you for the quick response! On Saturday, August 6, 2016 at 11:49:22 AM UTC-7, Ian Lance Taylor wrote: > > On Sat, Aug 6, 2016 at 10:08 AM, Carl Mastrangelo > <carl.mas...@gmail.com <javascript:>> wrote: > > TL;DR: Is the uintptr slice returned from runtime.Callers always valid? > > > > Reading the docs* for runtime.Callers says: "Callers fills the slice pc > with > > the return program counters of function invocations on the calling > > goroutine's stack. " Does this imply that once the goroutine is gone, > or > > all the functions have returned, the uintptrs could be pointing to > garbage? > > > > I ask because I would like a cheap-ish stacktrace for some error > handling > > code I am writing, and I don't want to turn the stack frame into a full > > string. If I can capture the functions on the stack and maybe turn them > > into an error message later that would be ideal. > > The pointers are always valid. All executable code is created at > compilation time, and the function pointers returned by > runtime.Callers always point into executable code that is always > present. > > (An exception would be if you used runtime.SetCgoTraceback to collect > a C function address that happens to be in a shared library that you > happened to dlclose. But if you don't use SetCgoTraceback or you > don't dlopen and then dlclose C shared libraries, this won't be a > problem.) > > Ian >
-- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.