If you write a wrapper, please look at the err2-package 
<https://github.com/lainio/err2>. It's an error-handling package, but we 
needed to build a panic-safe system with automatic stack tracing. Traces 
are context optimized as well. Here's a playground demo 
<https://goplay.tools/snippet/6F3OhyqJLhj>.

You add the following one-liners to your goroutines, and that's it.

go func() {
     *defer err2.CatchTrace(func(err error) {})*
     var b []byte
     b[1] = 0
}()

On Monday, May 30, 2022 at 6:11:47 PM UTC+3 sre.ag...@gmail.com wrote:

> Yes, I was asking about a generic handler.  
>
> I am thinking of writing a wrapper function which takes a function and 
> spuns up a goroutine with the above mentioned defer function by default.  
>
> On Sat, May 28, 2022 at 1:27 AM 'Sean Liao' via golang-nuts <
> golan...@googlegroups.com> wrote:
>
>> I believe this is asking for a single handler that will apply to all 
>> goroutines, to which the answer is no such feature exists
>>
>> - sean
>>
>> On Sat, May 28, 2022, 03:09 Ian Lance Taylor <ia...@golang.org> wrote:
>>
>>> On Fri, May 27, 2022 at 10:42 AM Aggarwal Sre <sre.ag...@gmail.com> 
>>> wrote:
>>> >
>>> > Is there a recommended pattern besides adding a defer call ( with 
>>> recover call, to collect debug stack trace) to each goroutine, for 
>>> collecting a stack trace when a golang is crashing due to any sort of panic.
>>> >
>>> > In other words, is there a way to register an uber handler ( probably 
>>> using OS signals) at the main function level, to indicate that a golang 
>>> program crashed and stacktrace to clearly specify where exactly?
>>>
>>> A panic handle is run at the bottom of the stack.  If you write this:
>>>
>>>     defer func() {
>>>         if recover() != nil {
>>>             fmt.Printf("%s", debug.Stack())
>>>         }
>>>     }()
>>>
>>> in your main function, it will print a stack trace showing the point
>>> of the panic.
>>>
>>> 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...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/golang-nuts/CAOyqgcV4d9HxDbdp_in95j6aKFF_m%2BN_hFdeyUMuMOWRt5%2B6dw%40mail.gmail.com
>>> .
>>>
>> -- 
>> 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...@googlegroups.com.
>>
> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/golang-nuts/CAGabyPoRyv63ztmyrAGkuQ4u8Dcqffo4dUVo6H%3DczLU7%3DvsVcw%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/golang-nuts/CAGabyPoRyv63ztmyrAGkuQ4u8Dcqffo4dUVo6H%3DczLU7%3DvsVcw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/d7987acf-099b-4048-b38a-dcd01db0da47n%40googlegroups.com.

Reply via email to