As seen from the message, the problem occurs because your routers are making circular references for dispatching requests. One of them matches request, but doesn't dispatch and pushes it to redispatch again. Or no router matches request at all.
I cant directly tell the cause of this error, but can work with you to get the cause of it.
In order to debug it first open app/code/core/Mage/Core/Controller/Varien/Front.php and find these lines or somewhat similar
while (!$request->isDispatched() && $i++<100) {
foreach ($this->_routers as $router) {
}
}
and replace it with (take the backup of the file)
Mage::log('----Matching routers------------------------------');
Mage::log('Total ' . count($this->_routers) . ': ' . implode(', ', array_keys($this->_routers)));
while (!$request->isDispatched() && $i++<100) {
Mage::log('- Iteration ' . $i);
$requestData = array(
'path_info' => $request->getPathInfo(),
'module' => $request->getModuleName(),
'action' => $request->getActionName(),
'controller' => $request->getControllerName(),
'controller_module' => $request->getControllerModule(),
'route' => $request->getRouteName()
);
$st = '';
foreach ($requestData as $key => $val) {
$st .= "[{$key}={$val}]";
}
Mage::log('Request: ' . $st);
foreach ($this->_routers as $name => $router) {
if ($router->match($this->getRequest())) {
Mage::log('Matched by "' . $name . '" router, class ' . get_class($router));
break;
}
}
}
after that wait for the site to produce the error. then open your system.log file and see whats going wrong ? what router break ?
Ideally this issue arises once magento is not able to load a core module.
If you have trouble to find out the solution. Let me know I will try to help you.