PhpMetrics icon indicating copy to clipboard operation
PhpMetrics copied to clipboard

Xdebug has detected a possible infinite loop,

Open olleharstedt opened this issue 3 years ago • 4 comments

Bug report

PhpMetrics v2.7.4

...PHP Fatal error: Uncaught Error: Xdebug has detected a possible infinite loop, and aborted your script with a stack depth of '3000' frames in /third_party/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php:28

third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(110): PhpParser\Node\Expr\BinaryOp->getSubNodeNames()
third_party/phpmetrics/phpmetrics/src/Hal/Component/Ast/Php7NodeTraverser.php(25): PhpParser\NodeTraverser->traverseNode()
third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(146): Hal\Component\Ast\Php7NodeTraverser->traverseNode()
third_party/phpmetrics/phpmetrics/src/Hal/Component/Ast/Php7NodeTraverser.php(25): PhpParser\NodeTraverser->traverseNode()
third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(146): Hal\Component\Ast\Php7NodeTraverser->traverseNode()
third_party/phpmetrics/phpmetrics/src/Hal/Component/Ast/Php7NodeTraverser.php(25): PhpParser\NodeTraverser->traverseNode()
third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(146): Hal\Component\Ast\Php7NodeTraverser->traverseNode()
third_party/phpmetrics/phpmetrics/src/Hal/Component/Ast/Php7NodeTraverser.php(25): PhpParser\NodeTraverser->traverseNode()
third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(146): Hal\Component\Ast\Php7NodeTraverser->traverseNode()
third_party/phpmetrics/phpmetrics/src/Hal/Component/Ast/Php7NodeTraverser.php(25): PhpParser\NodeTraverser->traverseNode()
/third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(146): Hal\Component\Ast\Php7NodeTraverser->traverseNode()
/third_party/phpmetrics/phpmetrics/src/Hal/Component/Ast/Php7NodeTraverser.php(25): PhpParser\NodeTraverser->traverseNode()
/third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(146): Hal\Component\Ast\Php7NodeTraverser->traverseNode()
/third_party/phpmetrics/phpmetrics/src/Hal/Component/Ast/Php7NodeTraverser.php(25): PhpParser\NodeTraverser->traverseNode()
/third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(146): Hal\Component\Ast\Php7NodeTraverser->traverseNode()
/third_party/phpmetrics/phpmetrics/src/Hal/Component/Ast/Php7NodeTraverser.php(25): PhpParser\NodeTraverser->traverseNode()
/third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(146): Hal\Component\Ast\Php7NodeTraverser->traverseNode()
/third_party/phpmetrics/phpmetrics/src/Hal/Component/Ast/Php7NodeTraverser.php(25): PhpParser\NodeTraverser->traverseNode()
/third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(146): Hal\Component\Ast\Php7NodeTraverser->traverseNode()
/third_party/phpmetrics/phpmetrics/src/Hal/Component/Ast/Php7NodeTraverser.php(25): PhpParser\NodeTraverser->traverseNode()
/third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(146): Hal\Component\Ast\Php7NodeTraverser->traverseNode()
/third_party/phpmetrics/phpmetrics/src/Hal/Component/Ast/Php7NodeTraverser.php(25): PhpParser\NodeTraverser->traverseNode()
/third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(146): Hal\Component\Ast\Php7NodeTraverser->traverseNode()
/third_party/phpmetrics/phpmetrics/src/Hal/Component/Ast/Php7NodeTraverser.php(25): PhpParser\NodeTraverser->traverseNode()
/third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(146): Hal\Component\Ast\Php7NodeTraverser->traverseNode()
/third_party/phpmetrics/phpmetrics/src/Hal/Component/Ast/Php7NodeTraverser.php(25): PhpParser\NodeTraverser->traverseNode()
/third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(146): Hal\Component\Ast\Php7NodeTraverser->traverseNode()
/third_party/phpmetrics/phpmetrics/src/Hal/Component/Ast/Php7NodeTraverser.php(25): PhpParser\NodeTraverser->traverseNode()
/third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(146): Hal\Component\Ast\Php7NodeTraverser->traverseNode()
/third_party/phpmetrics/phpmetrics/src/Hal/Component/Ast/Php7NodeTraverser.php(25): PhpParser\NodeTraverser->traverseNode()
/third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(146): Hal\Component\Ast\Php7NodeTraverser->traverseNode()
/third_party/phpmetrics/phpmetrics/src/Hal/Component/Ast/Php7NodeTraverser.php(25): PhpParser\NodeTraverser->traverseNode()
/third_party/nikic/php-parser/lib/PhpParser/NodeTraverser.php(146): Hal\Component\Ast\Php7NodeTraverser->traverseNode()

olleharstedt avatar Oct 10 '21 10:10 olleharstedt

Tips on how to debug?

olleharstedt avatar Oct 10 '21 10:10 olleharstedt

Looks like this file breaks the parser: https://github.com/LimeSurvey/LimeSurvey/blob/master/application/helpers/Zend/Validate/Hostname/Biz.php

Maybe it's just too weird? Remove infinite loop check?

olleharstedt avatar Oct 10 '21 11:10 olleharstedt

Hm, setting xdebug.max_nesting_level to -1 in php.ini does not resolve the issue.

olleharstedt avatar Oct 10 '21 11:10 olleharstedt

@olleharstedt It might have been due to PhpParser. In v3.0.0rc4, we are using an updated version of PhpParser. Could you please give it a try and check if the issue still occurs?

Thanks a lot.

niconoe- avatar Sep 15 '23 14:09 niconoe-