diff --git a/includes/module.inc b/includes/module.inc
index 2e25108..e0c4284 100644
--- a/includes/module.inc
+++ b/includes/module.inc
@@ -872,7 +872,15 @@ function module_hook_info() {
           $function($hook_info);
         }
       }
-      cache_set('hook_info', $hook_info, 'cache_bootstrap');
+      // Store hook_info into cache only if all modules were loaded.
+      // Otherwise is the list of hooks in $hook_info probably not complete and
+      // shouldn't be cached.
+      if (module_load_all(NULL)) {
+        cache_set('hook_info', $hook_info, 'cache_bootstrap');
+      }
+      else {
+        drupal_static_reset('module_hook_info');
+      }
     }
     else {
       $hook_info = $cache->data;
