Catching panics
Open
@marten-seemann is already working on this.
Since Jul 23, 2022.
- #1376 by @Stebalien — closed without merging
P3
- Dominant language
- Go
- Stars
- 6.9k
- Forks
- 1.3k
- Avg merge
- 13d 21h
- Merged PRs (30d)
- 1
Description
(moving a discussion from a private conversation to somewhere more public)
Libp2p performs quite a bit of complex parsing, which has occasionally lead to panics at runtime. When uncaught, these panics crash the entire node.
Proposal: Catch panics at "failure boundaries". E.g.:
- If we have some form of "connection" worker, catch panics in the worker and kill the entire connection if the worker panics. Same for streams.
- Catch panics in per-peer stream handlers, cleaning up all state related to the peer.
- Catch panics in low-level parsing logic. Parsing tends to be pretty self-contained but also pretty error prone.
- Stretch: Where possible, catch service-level panics, cancel all current requests, close all resources, and restart. But we do need to be a bit careful to not continue running in a corrupted state.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.