Problem/Motivation

Hello,

After the upgrade from Drupal 10.2.7 to 10.3.3, I got this error when I tried to login to BO

The website encountered an unexpected error. Try again later.

Error: Xdebug has detected a possible infinite loop, and aborted your script with a stack depth of '512' frames in Drupal\Core\Cache\Context\CacheContextsManager->optimizeTokens() (line 164 of core/lib/Drupal/Core/Cache/Context/CacheContextsManager.php).
Drupal\Core\Cache\Context\CacheContextsManager->convertTokensToKeys() (Line: 242)
Drupal\Core\Cache\VariationCache->createCacheIdFast() (Line: 173)
Drupal\Core\Cache\VariationCache->getRedirectChain() (Line: 35)
Drupal\Core\Cache\VariationCache->get() (Line: 80)
Drupal\Core\Session\AccessPolicyProcessor->processAccessPolicies() (Line: 23)
Drupal\Core\Session\PermissionChecker->hasPermission() (Line: 129)
Drupal\Core\Session\UserSession->hasPermission() (Line: 121)
Drupal\Core\Session\AccountProxy->hasPermission() (Line: 154)
Drupal\Core\Access\AccessResult::allowedIfHasPermissions() (Line: 43)
Drupal\user\Access\PermissionAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)

Steps to reproduce

Create a menu link where the route_name and parent_name are the same.

mymodule.admin:
  title: Administrative Users
  route_name: system.admin
  weight: 0
  parent: system.admin

Proposed resolution

Remaining tasks

Add a test
Review

User interface changes

Introduced terminology

API changes

Data model changes

Release notes snippet

Any idea about how to fix it please ?

Issue fork drupal-3473554

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

enimae1 created an issue. See original summary.

cilefen’s picture

Issue tags: -Drupal 10.3, -infinite loop

In the short-term have you tried turning xdebug off? Are there any core patches installed on the site?

cilefen’s picture

enimae1’s picture

I don't have any core patches, and I tried to turning xdebug off but I got probably the same error :

Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
cilefen’s picture

Can you check on what error is logged there?

cilefen’s picture

Also please get the entire stack trace.

enimae1’s picture

you can find below the entire log error

The website encountered an unexpected error. Try again later.

Error: Xdebug has detected a possible infinite loop, and aborted your script with a stack depth of '512' frames in Drupal\Core\Cache\Context\CacheContextsManager->optimizeTokens() (line 164 of core/lib/Drupal/Core/Cache/Context/CacheContextsManager.php).
Drupal\Core\Cache\Context\CacheContextsManager->convertTokensToKeys() (Line: 242)
Drupal\Core\Cache\VariationCache->createCacheIdFast() (Line: 173)
Drupal\Core\Cache\VariationCache->getRedirectChain() (Line: 35)
Drupal\Core\Cache\VariationCache->get() (Line: 80)
Drupal\Core\Session\AccessPolicyProcessor->processAccessPolicies() (Line: 23)
Drupal\Core\Session\PermissionChecker->hasPermission() (Line: 129)
Drupal\Core\Session\UserSession->hasPermission() (Line: 121)
Drupal\Core\Session\AccountProxy->hasPermission() (Line: 154)
Drupal\Core\Access\AccessResult::allowedIfHasPermissions() (Line: 43)
Drupal\user\Access\PermissionAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 106)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->hasAccessToChildMenuItems() (Line: 79)
Drupal\system\Access\SystemAdminMenuBlockAccessCheck->access()
call_user_func_array() (Line: 160)
Drupal\Core\Access\AccessManager->performCheck() (Line: 136)
Drupal\Core\Access\AccessManager->check() (Line: 93)
Drupal\Core\Access\AccessManager->checkNamedRoute() (Line: 218)
Drupal\Core\Menu\DefaultMenuLinkTreeManipulators->menuLinkCheckAccess() (Line: 107)
Drupal\Core\Menu\DefaultMenuLinkTreeManipulators->checkAccess()
call_user_func() (Line: 153)
Drupal\Core\Menu\MenuLinkTree->transform() (Line: 124)
Drupal\toolbar\Controller\ToolbarController::preRenderGetRenderedSubtrees()
call_user_func_array() (Line: 113)
Drupal\Core\Render\Renderer->doTrustedCallback() (Line: 870)
Drupal\Core\Render\Renderer->doCallback() (Line: 432)
Drupal\Core\Render\Renderer->doRender() (Line: 248)
Drupal\Core\Render\Renderer->render() (Line: 283)
{closure}() (Line: 638)
Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 282)
toolbar_get_rendered_subtrees() (Line: 295)
_toolbar_get_subtrees_hash() (Line: 168)
toolbar_toolbar() (Line: 53)
Drupal\hook_event_dispatcher\HookEventDispatcherModuleHandler::Drupal\hook_event_dispatcher\{closure}() (Line: 395)
Drupal\Core\Extension\ModuleHandler->invokeAllWith() (Line: 68)
Drupal\hook_event_dispatcher\HookEventDispatcherModuleHandler->invokeAllWith() (Line: 52)
Drupal\hook_event_dispatcher\HookEventDispatcherModuleHandler->invokeAll() (Line: 78)
Drupal\toolbar\Element\Toolbar::preRenderToolbar()
call_user_func_array() (Line: 113)
Drupal\Core\Render\Renderer->doTrustedCallback() (Line: 870)
Drupal\Core\Render\Renderer->doCallback() (Line: 432)
Drupal\Core\Render\Renderer->doRender() (Line: 504)
Drupal\Core\Render\Renderer->doRender() (Line: 248)
Drupal\Core\Render\Renderer->render() (Line: 475)
Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 77)
__TwigTemplate_24fac3dae8c1b7d00e1c3b78d133fc00->doDisplay() (Line: 360)
Twig\Template->yield() (Line: 335)
Twig\Template->render() (Line: 38)
Twig\TemplateWrapper->render() (Line: 33)
twig_render_template() (Line: 348)
Drupal\Core\Theme\ThemeManager->render() (Line: 491)
Drupal\Core\Render\Renderer->doRender() (Line: 248)
Drupal\Core\Render\Renderer->render() (Line: 158)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 638)
Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 153)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse() (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray()
call_user_func() (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch() (Line: 186)
Symfony\Component\HttpKernel\HttpKernel->handleRaw() (Line: 76)
Symfony\Component\HttpKernel\HttpKernel->handle() (Line: 53)
Drupal\Core\StackMiddleware\Session->handle() (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle() (Line: 28)
Drupal\Core\StackMiddleware\ContentLength->handle() (Line: 106)
Drupal\page_cache\StackMiddleware\PageCache->pass() (Line: 85)
Drupal\page_cache\StackMiddleware\PageCache->handle() (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() (Line: 36)
Drupal\Core\StackMiddleware\AjaxPageState->handle() (Line: 51)
Drupal\Core\StackMiddleware\StackedHttpKernel->handle() (Line: 741)
Drupal\Core\DrupalKernel->handle() (Line: 19)
cilefen’s picture

Which core and contributed modules are installed in this site and what are their versions?

vensires’s picture

I experience the same issue in a website with Drupal 10.3, Groups 3.2.x, Flexible Permissions 1.x and VariationCache 8.x-1.5.
If I disable XDebug, I then really receive a WSOD with no error I could track.

If I modify \Drupal\system\Access\SystemAdminMenuBlockAccessCheck::access() so that ::hasAccessToChildMenuItems() is not called, it works.

@enimae1, might you have the same setup?

vensires’s picture

vensires’s picture

Component: cache system » system.module
Status: Active » Needs work
StatusFileSize
new2.03 KB

Adding patch from current MR as a quick fix.

vensires’s picture

Status: Needs work » Postponed (maintainer needs more info)
Related issues: -#3413508: Admin page access denied even when access is given to child items

Seems I was too fast to blame the previous issue or my set of contrib modules installed.

In a custom module I had the following mymodule.links.menu.yml file:

mymodule.admin:
  title: Administrative Users
  route_name: system.admin
  weight: 0
  parent: system.admin

Having the same parent and route_name is not necessarily bad in logic but does cause the recursion in SystemAdminMenuBlockAccessCheck::hasAccessToChildMenuItems() seen above.

@enimae1, might you have have something related in your own installation?

tcrawford’s picture

We had the same issue on a project. The above hint was very helpful. Thank you.
I wonder if the menu item recursion should not be checked during a cache clear to prevent such configurations getting into production.

quietone’s picture

Version: 10.3.x-dev » 11.x-dev
Issue summary: View changes
Status: Postponed (maintainer needs more info) » Active
Issue tags: +Needs tests

I'm doing triage on issues assigned to the maintenance minor.

@vensires, thanks for providing steps to reproduce. In the future, that should be added to the issue summary to help all contributors, reviewers and committers.

Using those steps to reproduce I verified that this fails on 11.x.

quietone’s picture

Title: Infinite loop after upgrade to 10.3 » Infinite loop when menu route_name and parent are the same
mstrelan’s picture

We could probably add recursion detection / prevention to \Drupal\system\Access\SystemAdminMenuBlockAccessCheck::access. This access check is currently tested in \Drupal\Tests\system\Functional\Menu\MenuAccessTest::testSystemAdminMenuBlockAccessCheck. We should add another test case there for this recursion. See also menu_test.routing.yml and menu_test.links.menu.yml.

Version: 11.x-dev » main

Drupal core is now using the main branch as the primary development branch. New developments and disruptive changes should now be targeted to the main branch.

Read more in the announcement.

boychev’s picture

Version: main » 11.3.x-dev
Priority: Normal » Critical
Status: Active » Needs review
Issue tags: +Needs review
StatusFileSize
new1.92 KB

Attaching a recursion guard approach (static $visiting[]) for Drupal 11.3.x. Verified against 11.3.8 + pwa module (node 3220515) where pwa.config registers its route with the systemAdminMenuBlockPage controller, causing hasAccessToChildMenuItems() to re-enter itself for the same plugin ID before the first call returns. Under PHP 8.3's stricter 8MB zend.max_allowed_stack_size, this exhausts the stack and returns a 504 on every /admin page load.

The guard unsets the plugin ID on all return paths so it does not leak across separate access checks. The upstream MR !9794 avoids the recursion via early-exit but does not explicitly detect it — comment #17 (mstrelan) notes recursion detection is still needed. This patch fills that gap.

Attaching patch against 11.3.x. A functional test covering the self-referencing menu route scenario still needs to be added.

smustgrave’s picture

Version: 11.3.x-dev » main
Priority: Critical » Major
Status: Needs review » Needs work

Not sure this hits critical so lowered it to least major. But fixes need to be against main