ID:               26765
 Updated by:       [EMAIL PROTECTED]
 Reported By:      alex_mailbox53 at yahoo dot com
-Status:           Assigned
+Status:           Closed
 Bug Type:         Zend Engine 2 problem
 Operating System: *
 PHP Version:      5CVS-2004-03-15
 Assigned To:      andi
 New Comment:

Let's close it then.


Previous Comments:
------------------------------------------------------------------------

[2004-05-26 17:03:47] alex_mailbox53 at yahoo dot com

Sorry, I did download the CVS version yet. I tested the issue with PHP5
RC2 and it works Ok - bug is fixed.

Thank you!

Alexander

------------------------------------------------------------------------

[2004-05-23 22:38:07] [EMAIL PROTECTED]

Can you please try the latest CVS and see if the crashes persist?
Thanks.

Andi

------------------------------------------------------------------------

[2004-04-09 11:06:00] [EMAIL PROTECTED]

Andi, is this a bug or not? 


------------------------------------------------------------------------

[2004-03-10 11:37:20] jaanus at heeringson dot com

Ok, I have found out why the above example occaisionally worked. It
seems the order in which properties are declared play a ignificant
role. I guess the "destruction" propagates along in the order of
declarations. You can try it yourself by swaping two lines in the code
below (the lines are commented).

<pre>
<?php
class factory {
        public $child;

        public function make($class,$parent=null) {
                $_temp=new $class($this);
                $this->child[$class][]=$_temp;
                if(is_object($parent)) {
                        $parent->mount($_temp);
                }
                Return $_temp;
        }
}

class root {
        public $child;  //If the order of these two lines
        public $ref;    //is changed, you get a segfault
        public $parent;

        public function __construct($factory){
                $this->ref['factory']=$factory;
        }

        public function mount($obj){
                $this->child[]=$obj;
                $obj->setParent($this);
                $obj->setRef($this->ref+array('root'=>$this));
        }

        public function setRef($pref) {
                $this->ref=array_merge($pref,$this->ref);
        }

        public function setParent($parent){
                $this->parent=$parent;
        }
}

class child extends root{
        public function mount($obj){
                $this->child[]=$obj;
                $obj->setParent($this);
                $obj->setRef($this->ref+array('child'=>$this));
        }
}

$factory=new factory();
$a=$factory->make('root');
$b=$factory->make('child',$a);
$c=$factory->make('child',$a);
print_r($a);
?>
</pre>

------------------------------------------------------------------------

[2004-03-07 17:46:52] jaanus at heeringson dot com

Actually, you only create 2 objects in the example above, the initial
foo and the bar from foo's constructor. The rest are only references.

I still get the "Segmentation fault (11)", and by debugging my own apps
i can only concurr that this is not solved. I also sometimes get some
kind of race-condition where the apache process heads up to 99.6%, but
this occurs rarely.

How come the "var_dump() to print_r()" matters? I get segfaults without
either (on the sample code). The segfaults only occur the second time
the code is run on the same process, not when initially loading the
page.

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/26765

-- 
Edit this bug report at http://bugs.php.net/?id=26765&edit=1

Reply via email to