Node crashes when distance tries to read discarded state
Reported here: https://forum.duniter.org/t/mon-noeud-a-crashe/12525
If for any reason, the storage does not contain the key at parent_hash
, the node must not crash anyway, and simply not publish result.
Stacktrace:
2024-09-29 04:56:52 💤 Idle (0 peers), best: #3253555 (0x53ff…ca6d), finalized #3253554 (0x06b2…8f43), ⬇ 7.7kiB/s ⬆ 3.5kiB/s
2024-09-29 04:56:53 💔 Verification failed for block 0xc7466f0b945f9680eec78d2c78b56b6fd06dd4070679e3c1cd0c750f84f89483 received from (12D3KooWGvtbSM9SXMTAukT9zQo26QWegPcvP7pRhPU4HxK151Sx): "Header 0xc7466f0b945f9680eec78d2c78b56b6fd06dd4070679e3c1cd0c750f84f89483 rejected: too far in the future"
2024-09-29 04:56:53 Report 12D3KooWGvtbSM9SXMTAukT9zQo26QWegPcvP7pRhPU4HxK151Sx: -536870912 to -2147483648. Reason: Block verification failed. Banned, disconnecting.
====================
Version: 0.8.0-unknown
0: sp_panic_handler::set::{{closure}}
1: <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call
at /rustc/8ace7ea1f7cbba7b4f031e66c54ca237a0d65de6/library/alloc/src/boxed.rs:2029:9
std::panicking::rust_panic_with_hook
at /rustc/8ace7ea1f7cbba7b4f031e66c54ca237a0d65de6/library/std/src/panicking.rs:785:13
2: std::panicking::begin_panic_handler::{{closure}}
at /rustc/8ace7ea1f7cbba7b4f031e66c54ca237a0d65de6/library/std/src/panicking.rs:659:13
3: std::sys_common::backtrace::__rust_end_short_backtrace
at /rustc/8ace7ea1f7cbba7b4f031e66c54ca237a0d65de6/library/std/src/sys_common/backtrace.rs:171:18
4: rust_begin_unwind
at /rustc/8ace7ea1f7cbba7b4f031e66c54ca237a0d65de6/library/std/src/panicking.rs:647:5
5: core::panicking::panic_fmt
at /rustc/8ace7ea1f7cbba7b4f031e66c54ca237a0d65de6/library/core/src/panicking.rs:72:14
6: core::result::unwrap_failed
at /rustc/8ace7ea1f7cbba7b4f031e66c54ca237a0d65de6/library/core/src/result.rs:1649:5
7: dc_distance::create_distance_inherent_data_provider
8: <F as sp_inherents::client_side::CreateInherentDataProviders<Block,ExtraArgs>>::create_inherent_data_providers::{{closure}}
9: sc_consensus_slots::start_slot_worker::{{closure}}
10: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
11: <sc_service::task_manager::prometheus_future::PrometheusFuture<T> as core::future::future::Future>::poll
12: <futures_util::future::select::Select<A,B> as core::future::future::Future>::poll
13: <tracing_futures::Instrumented<T> as core::future::future::Future>::poll
14: tokio::runtime::context::runtime::enter_runtime
15: tokio::runtime::task::core::Core<T,S>::poll
16: tokio::runtime::task::harness::Harness<T,S>::poll
17: tokio::runtime::blocking::pool::Inner::run
18: std::sys_common::backtrace::__rust_begin_short_backtrace
19: core::ops::function::FnOnce::call_once{{vtable.shim}}
20: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
at /rustc/8ace7ea1f7cbba7b4f031e66c54ca237a0d65de6/library/alloc/src/boxed.rs:2015:9
<alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
at /rustc/8ace7ea1f7cbba7b4f031e66c54ca237a0d65de6/library/alloc/src/boxed.rs:2015:9
std::sys::pal::unix::thread::Thread::new::thread_start
at /rustc/8ace7ea1f7cbba7b4f031e66c54ca237a0d65de6/library/std/src/sys/pal/unix/thread.rs:108:17
21: start_thread
22: clone
Thread 'tokio-runtime-worker' panicked at 'CurrentIndex is Err: UnknownBlock("State already discarded for 0x53ff5f01f535c60e8d50550365d7a738bbc6bf6f5e3bdd78cee9bb20c04eca6d")', /root/client/distance/src/lib.rs:58
This is a bug. Please report it at:
https://forum.duniter.org/
Edited by Hugo Trentesaux