php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #11617 crash when restoring references
Submitted: 2001-06-22 11:01 UTC Modified: 2001-06-24 13:16 UTC
From: zork at pablosoft dot com dot pl Assigned:
Status: Closed Package: Session related
PHP Version: 4.0 Latest CVS (2001-06-22) OS: Linux 2.2.16 (Cobalt Raq4)
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: zork at pablosoft dot com dot pl
New email:
PHP Version: OS:

 

 [2001-06-22 11:01 UTC] zork at pablosoft dot com dot 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();


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-06-23 17:34 UTC] 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-24 11:29 UTC] zork at pablosoft dot com dot 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-24 11:59 UTC] sniper@php.net
And the GDB backtrace is where? Please include it.

 [2001-06-24 12:49 UTC] zork at pablosoft dot com dot pl
I've messed up something with my versions. Recompiled good and now it looks like it works fine. Sorry for confusion.

Zork


 [2001-06-24 13:16 UTC] sniper@php.net
Closed then.

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Dec 29 18:01:28 2024 UTC