Recursion and nesting level 1000 on dns resolve
DangerLifter opened this issue · 3 comments
Sometime I got ths fatal when trying to resolve some names. It is not stable but repeatable error. Last time I was able to repeat it with doing resolve for "edu.tc".
Just doing:
$factory = new DnsResolverFactory();
$resolver = $factory->create('8.8.8.8', $loop);
$resolver->resolve('edu.tc');
Here is head ot backtrace. After this part same repeatable calls promise notify.
PHP Fatal error: Maximum function nesting level of '100' reached, aborting! in /var/www/projects/DomainScrapper/vendor/react/promise/src/Promise.php on line 140
PHP Stack trace:
PHP 1. {main}() /usr/local/bin/phpunit:0
PHP 2. PHPUnit_TextUI_Command::main() /usr/local/bin/phpunit:612
PHP 3. PHPUnit_TextUI_Command->run() phar:///usr/local/bin/phpunit/phpunit/TextUI/Command.php:138
PHP 4. PHPUnit_TextUI_TestRunner->doRun() phar:///usr/local/bin/phpunit/phpunit/TextUI/Command.php:186
PHP 5. PHPUnit_Framework_TestSuite->run() phar:///usr/local/bin/phpunit/phpunit/TextUI/TestRunner.php:423
PHP 6. PHPUnit_Framework_TestCase->run() /var/www/projects/DomainScrapper/vendor/phpunit/phpunit/src/Framework/TestSuite.php:751
PHP 7. PHPUnit_Framework_TestResult->run() /var/www/projects/DomainScrapper/vendor/phpunit/phpunit/src/Framework/TestCase.php:711
PHP 8. PHPUnit_Framework_TestCase->runBare() /var/www/projects/DomainScrapper/vendor/phpunit/phpunit/src/Framework/TestResult.php:643
PHP 9. PHPUnit_Framework_TestCase->runTest() /var/www/projects/DomainScrapper/vendor/phpunit/phpunit/src/Framework/TestCase.php:775
PHP 10. ReflectionMethod->invokeArgs() /var/www/projects/DomainScrapper/vendor/phpunit/phpunit/src/Framework/TestCase.php:905
PHP 11. DomainScrapper\UnitTests\Whois\BaseClientTest->testGetAvailability_edutc_Null() /var/www/projects/DomainScrapper/vendor/phpunit/phpunit/src/Framework/TestCase.php:905
PHP 12. DomainScrapper\Whois\ReactCustomClient->getAvailability() /var/www/projects/DomainScrapper/tests/DomainScrapper/UnitTests/Whois/BaseClientTest.php:19
PHP 13. React\EventLoop\LibEventLoop->run() /var/www/projects/DomainScrapper/library/DomainScrapper/Whois/Client/AsyncToSyncTrait.php:38
PHP 14. event_base_loop() /var/www/projects/DomainScrapper/vendor/react/event-loop/LibEventLoop.php:211
PHP 15. React\EventLoop\LibEventLoop->React\EventLoop\{closure}() /var/www/projects/DomainScrapper/vendor/react/event-loop/LibEventLoop.php:211
PHP 16. call_user_func:{/var/www/projects/DomainScrapper/vendor/react/event-loop/LibEventLoop.php:335}() /var/www/projects/DomainScrapper/vendor/react/event-loop/LibEventLoop.php:335
PHP 17. React\Socket\Connection->handleData() /var/www/projects/DomainScrapper/vendor/react/event-loop/LibEventLoop.php:335
PHP 18. Evenement\EventEmitter->emit() /var/www/projects/DomainScrapper/vendor/react/socket/src/Connection.php:15
PHP 19. call_user_func_array:{/var/www/projects/DomainScrapper/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php:64}() /var/www/projects/DomainScrapper/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php:64
PHP 20. React\Stream\Util::React\Stream\{closure}() /var/www/projects/DomainScrapper/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php:64
PHP 21. React\Stream\BufferedSink->write() /var/www/projects/DomainScrapper/vendor/react/stream/src/Util.php:18
PHP 22. React\Promise\Deferred->progress() /var/www/projects/DomainScrapper/vendor/react/stream/src/BufferedSink.php:34
PHP 23. React\Promise\Deferred->notify() /var/www/projects/DomainScrapper/vendor/react/promise/src/Deferred.php:58
PHP 24. call_user_func:{/var/www/projects/DomainScrapper/vendor/react/promise/src/Deferred.php:49}() /var/www/projects/DomainScrapper/vendor/react/promise/src/Deferred.php:49
PHP 25. React\Promise\Promise->React\Promise\{closure}() /var/www/projects/DomainScrapper/vendor/react/promise/src/Deferred.php:49
PHP 26. React\Promise\Promise->notify() /var/www/projects/DomainScrapper/vendor/react/promise/src/Promise.php:175
PHP 27. React\Promise\Promise->React\Promise\{closure}() /var/www/projects/DomainScrapper/vendor/react/promise/src/Promise.php:147
PHP 28. React\Promise\Deferred->progress() /var/www/projects/DomainScrapper/vendor/react/promise/src/Promise.php:103
PHP 29. React\Promise\Deferred->notify() /var/www/projects/DomainScrapper/vendor/react/promise/src/Deferred.php:58
PHP 30. call_user_func:{/var/www/projects/DomainScrapper/vendor/react/promise/src/Deferred.php:49}() /var/www/projects/DomainScrapper/vendor/react/promise/src/Deferred.php:49
PHP 31. React\Promise\Promise->React\Promise\{closure}() /var/www/projects/DomainScrapper/vendor/react/promise/src/Deferred.php:49
PHP 32. React\Promise\Promise->notify() /var/www/projects/DomainScrapper/vendor/react/promise/src/Promise.php:175
PHP 33. React\Promise\Promise->React\Promise\{closure}() /var/www/projects/DomainScrapper/vendor/react/promise/src/Promise.php:147
PHP 34. React\Promise\Promise->notify() /var/www/projects/DomainScrapper/vendor/react/promise/src/Promise.php:175
PHP 35. React\Promise\Promise->React\Promise\{closure}() /var/www/projects/DomainScrapper/vendor/react/promise/src/Promise.php:147
PHP 36. React\Promise\Promise->notify() /var/www/projects/DomainScrapper/vendor/react/promise/src/Promise.php:175
PHP 37. React\Promise\Promise->React\Promise\{closure}() /var/www/projects/DomainScrapper/vendor/react/promise/src/Promise.php:147
PHP 38. React\Promise\Promise->notify() /var/www/projects/DomainScrapper/vendor/react/promise/src/Promise.php:175
PHP 39. React\Promise\Promise->React\Promise\{closure}() /var/www/projects/DomainScrapper/vendor/react/promise/src/Promise.php:147
.....
Probably it is not issue of dns. Close for now. Will check more.
Your above test script works fine locally (promise is being rejected because name can not be resolved). Feel free to update this ticket if you manage to reproduce this, thanks!
Thank you for quick response. I found trouble in myself code. No problem with react. ;)