diff --git a/includes/module.inc.orig b/includes/module.inc
index 2e25108..d05ff2b 100644
--- a/includes/module.inc.orig
+++ b/includes/module.inc
@@ -773,6 +773,11 @@ function module_implements($hook, $sort = FALSE, $reset = FALSE) {
     $implementations[$hook] = array();
     $list = module_list(FALSE, FALSE, $sort);
     foreach ($list as $module) {
+      // profile inheritance results duplicated hook group entries, so it
+      // must be converted from array to string.
+      if ((isset($hook_info[$hook]['group'])) && (is_array($hook_info[$hook]['group']))) {
+        $hook_info[$hook]['group'] = reset($hook_info[$hook]['group']);
+      }
       $include_file = isset($hook_info[$hook]['group']) && module_load_include('inc', $module, $module . '.' . $hook_info[$hook]['group']);
       // Since module_hook() may needlessly try to load the include file again,
       // function_exists() is used directly here.
