You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on May 24, 2022. It is now read-only.
Panic in goroutines other than the main one cannot be recovered explicitly, they have to be handled in the goroutine itself[1].
For ConTest this means that if a test step or any other plugin has a goroutine that panics, we are not able to catch it.
We should write a tool to detect (statically or dynamically) whether each spawned goroutine attempts to recover, and warn that the plugin may break the service run.
Write a special function to create safe goroutines, we may declare it as goroutine.Run(func()).
Write a static-analysis tool using the go/ set of packages to find any direct go use (and warn about it). This way we will enforce to use goroutine.Run instead. This should be easy because there's method Inspect out-of-the-box. So we just need to call Inspect() and comparing incoming data with go.
Panic in goroutines other than the main one cannot be recovered explicitly, they have to be handled in the goroutine itself[1].
For ConTest this means that if a test step or any other plugin has a goroutine that panics, we are not able to catch it.
We should write a tool to detect (statically or dynamically) whether each spawned goroutine attempts to recover, and warn that the plugin may break the service run.
[1] https://stackoverflow.com/questions/50409011/handling-panics-in-go-routines
The text was updated successfully, but these errors were encountered: