diff --git a/node/src/service.rs b/node/src/service.rs
index 8946443088e3857c2f5c5c6feb4c9c43582919f9..fb14fb678a0179ed9744e9f03cda45ec8942059e 100644
--- a/node/src/service.rs
+++ b/node/src/service.rs
@@ -504,6 +504,7 @@ where
                                 >(
                                     &*client, parent, distance_dir, &babe_owner_keys.clone()
                                 )?;
+                            // in case of manual sealing, the distance is forced to succeed
                             Ok((timestamp, babe, distance))
                         }
                     },
@@ -549,7 +550,17 @@ where
                             FullBackend,
                         >(
                             &*client, parent, distance_dir, &babe_owner_keys.clone()
-                        )?;
+                        );
+
+                        // provides fallback when distance inherent data provider crashes
+                        // (only when sealing is not manual)
+                        let distance = match distance {
+                            Ok(distance) => distance,
+                            Err(e) => {
+                                log::warn!("{:?}", e);
+                                sp_distance::InherentDataProvider::new(None)
+                            }
+                        };
 
                         Ok((slot, timestamp, storage_proof, distance))
                     }