padawan-php / padawan.php

php intelligent code completion http server
http://mkusher.name/padawan/
MIT License
253 stars 30 forks source link

Possible memory leak #47

Closed mkusher closed 8 years ago

mkusher commented 8 years ago

https://github.com/mkusher/padawan.vim/issues/17

jludwig commented 8 years ago

It might be related to Symfony\Component\VarDumper\Tests\Fixtures\NotLoadableClass. Before fixing the class to not extend itself, I encountered the same error rather than a segfault.

mkusher commented 8 years ago

@jludwig so, is it a duplicate of https://github.com/mkusher/padawan.php/issues/42 ?

mkusher commented 8 years ago

Duplicate of #42

jludwig commented 8 years ago

@mkusher

I installed etsy/phan and ran into the same issue during padawan generate:

[2016-06-08 10:04:07] completer.INFO: Progress: 12% [] []
[2016-06-08 10:04:07] completer.INFO: processing vendor/etsy/phan/tests/files/src/0149_inheritance_loops.php [] []
[2016-06-08 10:04:07] completer.DEBUG: Cache status: disabled [] []
[2016-06-08 10:04:07] completer.INFO: Traversing with 1 processors [] []
[2016-06-08 10:04:07] completer.INFO: Found 6 nodes [] []
[2016-06-08 10:04:07] completer.INFO: Parsing: [0.00036001205444336]s [] []
[2016-06-08 10:04:07] completer.DEBUG: Processing nodes 6 [] []
[2016-06-08 10:04:07] completer.DEBUG: Processing node C [] []
PHP Fatal error:  Allowed memory size of 2147483648 bytes exhausted (tried to allocate 33554432 bytes) in /home/jludwig/workspace/cyberlard/vendor/mkusher/padawan/src/Entity/Collection/MethodsCollection.php on line 66
Fatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 33554432 bytes) in /home/jludwig/workspace/cyberlard/vendor/mkusher/padawan/src/Entity/Collection/MethodsCollection.php on line 66

It's a test with the same thing that ended up crashing #42, classes extending themselves. I have not run into it anywhere else, so unless Siprah comes back and says otherwise, I do believe it is a duplicate.

<?php

class C extends C {}

class E extends F {}
class F extends E {}

class G extends H {}
class H extends I {}
class I extends G {}