#19243 [Opn->Ana]: Seg Fault Restoring Session Variables with References to Objects
| From: | yohgaki@php.net | Date: | Thu, 05 Sep 2002 11:19:06 +0000 |
| Subject: | #19243 [Opn->Ana]: Seg Fault Restoring Session Variables with References to Objects | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-18479@lists.php.net to get a copy of this message | ||
ID: 19243
Updated by: yohgaki@php.net
Reported By: fdruseikis@sc.rr.com
-Status: Open
+Status: Analyzed
Bug Type: Reproducible crash
Operating System: Linux RH 7.0
PHP Version: 4.2.2
New Comment:
Don't do that. It will never work.
We should raise error and ignore references.
Previous Comments:
------------------------------------------------------------------------
[2002-09-05 05:03:07] fdruseikis@sc.rr.com
The following script demonstrates a problem with restoring session
variables that have references to objects.
Variables o1 and o2 are supposed to be globals refering to the same
object instance. First GET request initializes; POST request changes
state. Crash occurs on first POST or second GET.
Apache 1.3.26 reports a segmentation fault. Browser (lynx) indicates
"Unexpected Network Read Error; ..."
If you remove 'o2' from session_register() and initialize the reference
to o1 in the POST the crash goes away.
Fred Druseikis
-------------------- <snip> -----------------------------
<?php
# vim: ts=4 filetype=php
# segmentation fault on restore of object references
class TFoo {
var $c;
function TFoo($c) {
$this->c = $c;
}
function inc() {
$this->c++;
}
}
global $o1, $o2;
session_register('o1', 'o2' );
session_start();
if( $_SERVER['REQUEST_METHOD'] == 'GET' ) {
echo "GET<br>";
$o1 =& new TFoo(42);
$o2 =& $o1;
}
if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
echo "POST<br>";
}
$o1->inc();
$o2->inc();
echo "<tt>o1</tt><br><pre>"; print_r($o1); echo
"</pre>";
echo "<tt>o2</tt><br><pre>"; print_r($o2); echo
"</pre>";
?>
<html>
<head>
</head>
<body>
<form action='/web/a/register/foo.php' method='post' >
<input type='text' name='x' value='42' />
<input type='submit' name='submit' value='Submit' />
</form>
</body>
</html>
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=19243&edit=1