diff --git a/src/init.cpp b/src/init.cpp
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -2116,12 +2116,10 @@
         std::string strLoadError;
 
         uiInterface.InitMessage(_("Loading block index..."));
-
-        LOCK(cs_main);
-
         nStart = GetTimeMillis();
         do {
             try {
+                LOCK(cs_main);
                 UnloadBlockIndex();
                 pcoinsTip.reset();
                 pcoinsdbview.reset();
@@ -2223,9 +2221,7 @@
                         break;
                     }
                     assert(chainActive.Tip() != nullptr);
-                }
 
-                if (!is_coinsview_empty) {
                     uiInterface.InitMessage(_("Verifying blocks..."));
                     if (fHavePruned &&
                         gArgs.GetArg("-checkblocks", DEFAULT_CHECKBLOCKS) >