ID:               17419
 Updated by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
-Status:           Feedback
+Status:           Analyzed
 Bug Type:         Session related
 Operating System: BSDi
 PHP Version:      4.2.1
 New Comment:

Consider the following sample script:

<?php
session_start();
class alpha {
        var $b; 
        function alpha() {
                $this->b = &new beta(&$this);
        }
}

class beta {
        function beta($t) {
                $this->t = &$t;
        }
}

if($_GET['set']) {
        $_SESSION['a'] = &new alpha();
} else {
        print_r($_SESSION['a']);
}
?>

First, call this script with ?set=1.
Then, call it without any arguments and nothing will happen. The
connection will close inmediately:
$ telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /test.php?PHPSESSID=dcfffa113d892c4320d6109c6bd07795 HTTP/1.1
Host: localhost

Connection closed by foreign host.

This was exactly what happend with the sample simpleclass.php script
provided by [EMAIL PROTECTED]

Apache logs show a couple of memleaks and a segfault:
home/sander/php/head/Zend/zend_hash.c(262) :  Freeing 0x0821CD4C (37
bytes), script=/home/sander/public_html/test.php
Last leak repeated 1 time
/home/sander/php/head/Zend/zend_hash.c(178) :  Freeing 0x0821B1BC (32
bytes), script=/home/sander/public_html/test.php
Last leak repeated 1 time
/home/sander/php/head/Zend/zend_API.c(597) :  Freeing 0x0821B15C (44
bytes), script=/home/sander/public_html/test.php
/home/sander/php/head/Zend/zend_API.c(585) : Actual location (location
was relayed)
Last leak repeated 1 time
/home/sander/php/head/Zend/zend_execute.c(1937) :  Freeing 0x0821B11C
(12 bytes), script=/home/sander/public_html/test.php
Last leak repeated 1 time
/home/rasmus/php4/ext/standard/url_scanner_ex.re(409) :  Freeing
0x08219B6C (13 bytes), script=/home/sander/public_html/test.php
[Sat Jun  1 12:06:13 2002] [notice] child pid 4079 exit signal
Segmentation fault (11)

Backtrace:
Program received signal SIGSEGV, Segmentation fault.
0x4010cf96 in malloc () from /lib/libc.so.6
(gdb) bt
#0  0x4010cf96 in malloc () from /lib/libc.so.6
#1  0x403d9a4f in _emalloc (size=35, 
    __zend_filename=0x404b0c80
"/home/sander/php/head/Zend/zend_hash.c", 
    __zend_lineno=406, __zend_orig_filename=0x0, __zend_orig_lineno=0)
    at /home/sander/php/head/Zend/zend_alloc.c:165
#2  0x403f46cc in zend_hash_index_update_or_next_insert (ht=0xbfffef34,

    h=23815, pData=0xbf800108, nDataSize=4, pDest=0x0, flag=4)
    at /home/sander/php/head/Zend/zend_hash.c:406
#3  0x4038f81a in php_add_var_hash (var_hash=0xbfffef34, var=0x8219b9c,

    var_old=0xbf800264) at
/home/sander/php/head/ext/standard/var.c:393
#4  0x4038ed6e in php_var_serialize_intern (buf=0xbfffef60,
struc=0x8219b10, 
    var_hash=0xbfffef34) at
/home/sander/php/head/ext/standard/var.c:497
#5  0x4038f277 in php_var_serialize_intern (buf=0xbfffef60,
struc=0x8219d00, 
    var_hash=0xbfffef34) at
/home/sander/php/head/ext/standard/var.c:606
#6  0x4038f277 in php_var_serialize_intern (buf=0xbfffef60,
struc=0x8219b10, 
    var_hash=0xbfffef34) at
/home/sander/php/head/ext/standard/var.c:606
#7  0x4038f277 in php_var_serialize_intern (buf=0xbfffef60,
struc=0x8219d00, 
    var_hash=0xbfffef34) at
/home/sander/php/head/ext/standard/var.c:606
#8  0x4038f277 in php_var_serialize_intern (buf=0xbfffef60,
struc=0x8219b10, 
    var_hash=0xbfffef34) at
/home/sander/php/head/ext/standard/var.c:606
#9  0x4038f277 in php_var_serialize_intern (buf=0xbfffef60,
struc=0x8219d00, 
    var_hash=0xbfffef34) at
/home/sander/php/head/ext/standard/var.c:606
etc etc etc


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

[2002-05-31 09:51:02] [EMAIL PROTECTED]

Also worked fine on my OSX boxen.

I don't know what browser you are using so I can't comment on the
validity of that error message (possible MSIE pretty error page?).

One thing to try, turn on your register_globals.  Your example kind of
needs that, or different calling methods.

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

[2002-05-31 09:44:05] [EMAIL PROTECTED]

Your example works fine on my FreeBSD 4.5 system using PHP 4.2.1.  

Also updated your OS to BSDi instead of Apache.

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

[2002-05-29 10:11:28] [EMAIL PROTECTED]

The correct operating system if BSDi 4.3

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

[2002-05-26 22:13:08] [EMAIL PROTECTED]

OK -- I have tried to telnet to the domain and cannot do that either. 
Here is the URL:

http://sql.wash-gop.com/wyck/WebSiteII/html/simpleclass.php

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

[2002-05-26 12:04:35] [EMAIL PROTECTED]

You don't need telnet access for this. Just telnet from your local box
to the webserver, i.e. 
telnet www.yourdomain.com 80
Alternatively, post an url of that page here (or mail it me, if you
prefer to keep it private) and I'll see what I can do.

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

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/17419

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

Reply via email to