diff --git a/src/solver/solver_manager.cpp b/src/solver/solver_manager.cpp
index 498d6ec35208951c79b3047a7e2eae3e72959fdb..8fff62bb4fa57ac42e58ecad5cc53dbf818d7f20 100644
--- a/src/solver/solver_manager.cpp
+++ b/src/solver/solver_manager.cpp
@@ -301,6 +301,7 @@ void SolverManager::updateStateBlockStatus(const StateBlockPtr& state_ptr)
 
 void SolverManager::updateStateBlockState(const StateBlockPtr& state_ptr)
 {
+    assert(state_ptr->isValid() && "SolverManager::updateStateBlockState state block state not valid (local parameterization)");
     Eigen::VectorXd new_state = state_ptr->getState();
     // We assume the same size for the states in both WOLF and the solver.
     std::copy(new_state.data(),new_state.data()+new_state.size(),getAssociatedMemBlockPtr(state_ptr));