diff --git a/typo3/sysext/backend/Classes/RecordList/DatabaseRecordList.php b/typo3/sysext/backend/Classes/RecordList/DatabaseRecordList.php
index 5dfc4fc12a3ae4856cb2655ab5d425ba1647eb54..cf680f4f3db51dbaddd7cd8483b4cd33dd023c91 100644
--- a/typo3/sysext/backend/Classes/RecordList/DatabaseRecordList.php
+++ b/typo3/sysext/backend/Classes/RecordList/DatabaseRecordList.php
@@ -45,8 +45,11 @@ use TYPO3\CMS\Core\Imaging\IconFactory;
 use TYPO3\CMS\Core\LinkHandling\Exception\UnknownLinkHandlerException;
 use TYPO3\CMS\Core\LinkHandling\LinkService;
 use TYPO3\CMS\Core\Localization\LanguageService;
+use TYPO3\CMS\Core\Messaging\FlashMessage;
+use TYPO3\CMS\Core\Messaging\FlashMessageService;
 use TYPO3\CMS\Core\Service\DependencyOrderingService;
 use TYPO3\CMS\Core\Type\Bitmask\Permission;
+use TYPO3\CMS\Core\Type\ContextualFeedbackSeverity;
 use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\MathUtility;
@@ -2242,8 +2245,21 @@ class DatabaseRecordList
                 }
             }
         }
-        $orderedTableNames = GeneralUtility::makeInstance(DependencyOrderingService::class)
-            ->orderByDependencies($tableNames);
+        try {
+            $orderedTableNames = GeneralUtility::makeInstance(DependencyOrderingService::class)
+                ->orderByDependencies($tableNames);
+        } catch (\UnexpectedValueException $e) {
+            // If you have circular dependencies we just keep the original order and give a notice
+            // Example mod.web_list.tableDisplayOrder.pages.after = tt_content
+            $lang = $this->getLanguageService();
+            $header = $lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:warning.tableDisplayOrder.title');
+            $msg = $lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:warning.tableDisplayOrder.message');
+            $flashMessage = GeneralUtility::makeInstance(FlashMessage::class, $msg, $header, ContextualFeedbackSeverity::WARNING, true);
+            $flashMessageService = GeneralUtility::makeInstance(FlashMessageService::class);
+            $defaultFlashMessageQueue = $flashMessageService->getMessageQueueByIdentifier();
+            $defaultFlashMessageQueue->enqueue($flashMessage);
+            $orderedTableNames = $tableNames;
+        }
         return array_keys($orderedTableNames);
     }
 
diff --git a/typo3/sysext/core/Resources/Private/Language/locallang_core.xlf b/typo3/sysext/core/Resources/Private/Language/locallang_core.xlf
index 1a09696d0b15173ebd320baa77ffe4d9a09ee16c..ed75e592f3f3b3b67318199d7d090234829cc8a0 100644
--- a/typo3/sysext/core/Resources/Private/Language/locallang_core.xlf
+++ b/typo3/sysext/core/Resources/Private/Language/locallang_core.xlf
@@ -1314,6 +1314,12 @@ Do you want to refresh it now?</source>
 			<trans-unit id="warning.inline_use_combination" resname="warning.inline_use_combination">
 				<source>This record will be modified globally.</source>
 			</trans-unit>
+			<trans-unit id="warning.tableDisplayOrder.message" resname="warning.tableDisplayOrder.message">
+				<source>The TSconfig setting for "mod.web_list.tableDisplayOrder" contains a circular dependency and cannot be resolved.</source>
+			</trans-unit>
+			<trans-unit id="warning.tableDisplayOrder.title" resname="warning.tableDisplayOrder.title">
+				<source>Circular table ordering detected</source>
+			</trans-unit>
 			<trans-unit id="error.formProtection.tokenInvalid" resname="error.formProtection.tokenInvalid">
 				<source>Validating the security token of this form has failed. Please reload the form and submit it again.</source>
 			</trans-unit>