-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make the light-client more robust to panics by using panic=unwind
#519
Comments
rust-lang/rust#111322 is included in Rust 1.72 |
Unfortunately, using rust-lang/rust#111322 seems incompatible with using Or maybe we could do threads manually instead of using |
panic=unwind
panic=unwind
Ignoring the wasm-node, I think it's a good idea to do this in situations where the light client is embedded in a program where unwinding is enabled. One blocker is the design of the "networking events receivers". It's not possible right now to create a new receiver in case the sync/runtime/etc service dies and takes the receiver with it in its death. |
One issue with the latest comment is that it forces the |
The first thing to do would be to refactor the |
Here are the difficulties I've noted for each module:
Another important point is that subscription IDs should be assigned by the frontend, in order to avoid race conditions. |
After #1376, I've tried to compile smoldot with the instructions given here: rust-lang/rust#111322 This increases the binary size (expectedly) from 2.78 MiB to 3.0 MiB Also, this unfortunately requires defining the No matter what, as explained above, we still want |
Services to make panic-resilient:
|
This isn't possible in Rust yet, but in principle we could use
panic=unwind
when compiling the wasm node. Then, the code could be tweaked in order to restart services if they die.The text was updated successfully, but these errors were encountered: