diff --git a/src/feature/rend/rendcache.c b/src/feature/rend/rendcache.c
index 04748edbd5457c1c996fb728a45258b65357990d..0890a81d8f23ca6dabfd241924b38754dc7cbdf3 100644
--- a/src/feature/rend/rendcache.c
+++ b/src/feature/rend/rendcache.c
@@ -526,9 +526,16 @@ rend_cache_lookup_entry(const char *query, int version, rend_cache_entry_t **e)
   rend_cache_entry_t *entry = NULL;
   static const int default_version = 2;
 
-  tor_assert(rend_cache);
   tor_assert(query);
 
+  /* This is possible if we are in the shutdown process and the cache was
+   * freed while some other subsystem might do a lookup to the cache for
+   * cleanup reasons such HS circuit cleanup for instance. */
+  if (!rend_cache) {
+    ret = -ENOENT;
+    goto end;
+  }
+
   if (!rend_valid_v2_service_id(query)) {
     ret = -EINVAL;
     goto end;