Bug #11617 Updated: crash when restoring references
| From: | sniper@php.net | Date: | Sun, 24 Jun 2001 15:59:14 +0000 |
| Subject: | Bug #11617 Updated: crash when restoring references | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-57835@lists.php.net to get a copy of this message | ||
ID: 11617
Updated by: sniper
Reported By: zork@pablosoft.com.pl
Old-Status: Open
Status: Feedback
Bug Type: *Session related
Operating system:
PHP Version: 4.0 Latest CVS (2001-06-22)
Assigned To:
Comments:
And the GDB backtrace is where? Please include it.
Previous Comments:
---------------------------------------------------------------------------
[2001-06-24 11:29:39] zork@pablosoft.com.pl
Tried, but php still changed. Maybe it is something with CVS (forgot to commit?), I've checked
session.c revision and result was:
revision 1.213
date: 2001/06/21 18:46:25; author: thies; state: Exp; lines: +31 -26
I've submitted this bug later.
Zork
---------------------------------------------------------------------------
[2001-06-23 17:34:50] sniper@php.net
Could you please try again? The fix wasn't ok, but now
it's been rewritten and should work.
If it still crashes, try to generate a gdb backtrace of
the crash. And thank you for helping!
--Jani
---------------------------------------------------------------------------
[2001-06-22 11:01:25] zork@pablosoft.com.pl
There is still problem in serialize/unserialize mechanism used to restore session variables(after
closing #8676 bug which was supoused to correct the problem). Here is simplest script I can produce
that does apache segfault on my machine:
<?
class Cscreen {
var $page;
var $frames;
function Cscreen() {
$this -> frames = array();
}
};
class CError_handler {
var $msg_error;
function CError_handler() {
$this -> msg_error = new CMessage();
}
};
class CConnection_Table {
var $data;
function CConnection_table() {
$this -> data = array();
}
function mconnect($message,&$object,$method) {
$data[0] = &$object;
$data[1] = $method;
$this -> data[$message -> msg_id][] = $data;
}
};
class CMessage {
var $data;
var $msg_id;
function CMessage($data = 0) {
global $__CMSGID_NEXT;
$this -> msg_id = $__CMSGID_NEXT++;
$this -> data = $data;
}
};
function MCONNECT(&$message,&$obj_name,$method_name) {
global $__connection_table;
$__connection_table -> mconnect($message,$obj_name,$method_name);
};
session_start();
session_destroy();
$__connection_table = new CConnection_table;
session_register("__connection_table");
$screen = new Cscreen();
session_register("screen");
$error_handler = new CError_handler($screen);
MCONNECT($error_handler -> msg_error,$screen,"fatal_error");
session_register("error_handler");
echo "done";
exit();
---------------------------------------------------------------------------
ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=11617&edit=2