когда не закрывается поток, открытый с враппером, PHP выдает segfault

grigori

( ͡° ͜ʖ ͡°)
Команда форума
когда не закрывается поток, открытый с враппером, PHP выдает segfault

Кто-нибудь работал с врапперами потоков?
Этот код дает segfault:
PHP:
<?php
class Wrapper{
    function stream_open($path, $path, $options, &$opened_path){return true;}
}

stream_wrapper_register("wr", 'Wrapper')
or die("Failed to register protocol");

$fp = fopen ('wr://example', 'w');

//fclose ($fp);
echo microtime();
?>
Если снять комментарий и закрывать поток, все нормально.
Это нормально и я обязан отлавливать ошибки, закрывая поток в любом случае?

-~{}~ 16.04.05 20:16:

Т.е. я понимаю. что я обязан,
вопрос в том, нормально ли то, что PHP в этом случае выдает segfault.
 

fixxxer

К.О.
Партнер клуба
а у тебя точно последняя версия?
php.5.1-dev и 5.0-dev (последние) не сегфолтятся, на 4ке негде проверить.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
5.03, 5.04
Linux RH9 - сегфолт на двух серверах

-~{}~ 17.04.05 02:56:

Закрытие потока из деструктора враппера не помогает,
т.е. проблема все-таки есть.

Однако, открытие из конструкотра и закрытие потока из деструктора отдельного класса решает пролему.

Работает:
PHP:
<?php
class Wrapper{
    function stream_open($path, $path, $options, &$opened_path){return true;}
}

class myclass{
    public $fp;
    function __construct(){
        $this->fp = fopen ('wr://example', 'w');
    }
    function __destruct(){
        fclose($this->fp);
    }
}
stream_wrapper_register("wr", 'Wrapper');
new myclass();
// а вот если написать 
//$obj = new myclass();
// будет - Segmentation fault
echo microtime();
?>
 

Screjet

Новичок
Нема никакого сегфолта. Разбирайся с машиной.

www1# uname -v; php -v
FreeBSD 5.3-RELEASE #0: Sun Nov 14 01:18:36 EET 2004
PHP 5.0.2 (cli) (built: Mar 13 2005 08:16:41)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v2.0.2, Copyright (c) 1998-2004 Zend Technologies
with eAccelerator v0.9.2, Copyright (c) 2004-2004 eAccelerator, by eAccelerator

www2# uname -v; php -v
FreeBSD 5.3-RELEASE #0: Fri Nov 5 04:19:18 UTC 2004
C
PHP 5.0.3 (cli) (built: Apr 10 2005 16:56:06)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v2.0.3, Copyright (c) 1998-2004 Zend Technologies
with eAccelerator v0.9.2, Copyright (c) 2004-2004 eAccelerator, by eAccelerator
with Zend Extension Manager v1.0.6, Copyright (c) 2003-2004, by Zend Technologies
with Zend Optimizer v2.5.7, Copyright (c) 1998-2004, by Zend Technologies
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
понял,
попробую gentoo и free

-~{}~ 18.04.05 14:47:

Попробовал на третьем сервере RedHat 7 (с другим ядром) - тоже есть segfault.

Кто-нибудь еще, попробуйте, пожалуйста, на Red Hat, скажите что сегфолта нет, чтоб я был уверен, что проблема в моих руках.
 

tony2001

TeaM PHPClub
grigori
плз, вставляй бэктрэйс сразу.
мне не сложно, но у меня обычно исходники не "чистые" после экспериментов.
 

fixxxer

К.О.
Партнер клуба
Ага. на линуксе сегфолтится, на винде и фре - нет.
 
Сверху