баг 5.2.12 win32

akd

dive now, work later
Команда форума
баг 5.2.12 win32

Народ, благодаря ошибке случайно натолкнулся.
результат выполнения на моей машине (Apache/2.2.14 (Win32) PHP/5.2.12) - падение и запуск дебаггера вижл студии.
я нашел известный баг или нет? попробуйте кому не лень.

PHP:
<?php
class simpleTest
{
    public function  __call($name,  $arguments) {
        $this->simpleBug();
    }
}

$st = new simpleTest();
$methodcall = 'sssss';
$st->$methodcall();
?>
 

phprus

Moderator
Команда форума
akd
А в чем собственно баг?
Имеем бесконечную рекурсию, которая и падает по переполнению стека.

Хотя конечно по хорошему надо бы какую-либо ошибку выдавать, а не падать с ошибкой сегментирования(Linux)
 

akd

dive now, work later
Команда форума
phprus
та я понимаю что происходит, я именно о том, шо падать - не выход :)
 

phprus

Moderator
Команда форума
akd
Судя по багам на bugs.php.net они считают, что при переполнении стека можно падать полностью.
 

akd

dive now, work later
Команда форума
понял, расслабляюсь и получаю удовольствие :))

хотя, имхо, отловить два вызова __call подряд не очень сложно .. но я внутрь не заглядывал, може там магия какая :)
 

fixxxer

К.О.
Партнер клуба
а зачем так все усложнять?

function a() { a(); }
a();

UPDATE: а так однако уже не сегфолтится. интересно =)
 

phprus

Moderator
Команда форума
fixxxer
а зачем так все усложнять?
А так все было-бы слишком просто :)
Да и как ты написал оно и не падает.

akd
отловить два вызова __call подряд
Два вызова подряд не обязательно зацикленная рекурсия. Тут по логике надо отслеживать когда все эти вызовы съедят весь стек. Ведь для рекурсии из функций это как-то отслеживается.
 

akd

dive now, work later
Команда форума
phprus
тоже правда. вопсчем, поздее как время будет, закомичу это в трекер а там видно будет.
 
Сверху