ID: 30128
Updated by: [EMAIL PROTECTED]
Reported By: dankab at infinito dot it
Status: Open
-Bug Type: Apache2 related
+Bug Type: Zend Engine 2 problem
Operating System: linux
PHP Version: 5.0.1
New Comment:
Not Apache-specific. Here's the backtrace into Zend from the cli:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 182931956288 (LWP 3400)]
zend_std_read_property (object=0x8db218, member=0x8e5680,
type=9213224)
at /local/jorton/php/HEAD64/Zend/zend_object_handlers.c:222
222 use_get = (zobj->ce->__get && !zobj->in_get);
(gdb) where
#0 zend_std_read_property (object=0x8db218, member=0x8e5680,
type=9213224)
at /local/jorton/php/HEAD64/Zend/zend_object_handlers.c:222
#1 0x00000000005cae4e in execute (op_array=0x7fbfff56d8) at
zend_vm_handlers.h:1469
#2 0x00000000005d49ea in execute (op_array=0x7ac168) at
zend_vm_handlers.h:2242
#3 0x0000000000589db4 in zend_execute_scripts (type=8, retval=0x0,
file_count=3)
at /local/jorton/php/HEAD64/Zend/zend.c:1053
#4 0x000000000055762f in php_execute_script
(primary_file=0x7fbfffb630)
at /local/jorton/php/HEAD64/main/main.c:1635
#5 0x00000000005f104d in main (argc=3, argv=0x7fbfffb798)
at /local/jorton/php/HEAD64/sapi/cli/php_cli.c:943
(gdb) backtrace full
#0 zend_std_read_property (object=0x8db218, member=0x8e5680,
type=9213224)
at /local/jorton/php/HEAD64/Zend/zend_object_handlers.c:222
zobj = (zend_object *) 0xffffffff
tmp_member = {value = {lval = 1, dval =
4.9406564584124654e-324, str = {
val = 0x1 <Address 0x1 out of bounds>, len = 2}, ht = 0x1, obj =
{handle = 1,
handlers = 0x2}}, refcount = 0, type = 0 '\0', is_ref = 0 '\0'}
retval = (zval **) 0x58f2b7
rv = (zval *) 0x0
property_info = (zend_property_info *) 0xffffffff
silent = 0
use_get = 0 '\0'
#1 0x00000000005cae4e in execute (op_array=0x7fbfff56d8) at
zend_vm_handlers.h:1469
tmp = {value = {lval = 548682035520, dval =
2.7108494424067858e-312, str = {
val = 0x7fbfff7140 "\030�\n\226*", len = 5723912}, ht =
0x7fbfff7140, obj = {
handle = 3221188928, handlers = 0x575708}}, refcount = 8044200,
type = 0 '\0',
is_ref = 0 '\0'}
execute_data = {opline = 0x8e5630, function_state =
{function_symbol_table = 0x8c7758,
function = 0x8e3da8, reserved = {0x2a962e6758, 0x8e3ed0,
0x2a962e66c0, 0x58}}, fbc = 0x0,
fbc_constructor = 0x8e0430, op_array = 0x8e3da8, object = 0x0, Ts =
0x7fbfff5660,
CVs = 0x7fbfff5650, original_in_execution = 1 '\001', calling_scope =
0x0,
symbol_table = 0x8c7688, prev_execute_data = 0x7fbfff8ff0}
binary_op = (int (*)(zval *, zval *, zval *)) 0
incdec_op = 0
prop_dim = 9328176
type = 0
#2 0x00000000005d49ea in execute (op_array=0x7ac168) at
zend_vm_handlers.h:2242
calling_symbol_table = (HashTable *) 0x7ac168
execute_data = {opline = 0x8e0430, function_state =
{function_symbol_table = 0x8c7688,
function = 0x8e3da8, reserved = {0x56f660, 0x0, 0x2a962e66c0,
0x58}}, fbc = 0x8e3da8,
fbc_constructor = 0x8e3da8, op_array = 0x8dbd48, object = 0x8db218,
Ts = 0x7fbfff7300,
CVs = 0x7fbfff72f0, original_in_execution = 0 '\0', calling_scope =
0x8e3788,
symbol_table = 0x7ac168, prev_execute_data = 0x0}
binary_op = (int (*)(zval *, zval *, zval *)) 0
incdec_op = 0
prop_dim = 9307184
type = 0
#3 0x0000000000589db4 in zend_execute_scripts (type=8, retval=0x0,
file_count=3)
at /local/jorton/php/HEAD64/Zend/zend.c:1053
files = {{gp_offset = 40, fp_offset = 48, overflow_arg_area =
0x7fbfff9280,
reg_save_area = 0x7fbfff9190}}
i = 1
file_handle = (zend_file_handle *) 0x7fbfffb630
orig_op_array = (zend_op_array *) 0x0
local_retval = (zval *) 0x0
#4 0x000000000055762f in php_execute_script
(primary_file=0x7fbfffb630)
at /local/jorton/php/HEAD64/main/main.c:1635
orig_bailout = {{__jmpbuf = {7993760, 0, 4469120, 0, 0, 0,
548682052688, 6228305},
__mask_was_saved = 0, __saved_mask = {__val = {0 <repeats 16
times>}}}}
orig_bailout_set = 1 '\001'
prepend_file_p = (zend_file_handle *) 0x0
append_file_p = (zend_file_handle *) 0x0
prepend_file = {type = 0 '\0', filename = 0x0, opened_path =
0x0, handle = {fd = 0,
fp = 0x0, stream = {handle = 0x0, reader = 0, closer = 0,
interactive = 0}},
free_filename = 0 '\0'}
append_file = {type = 0 '\0', filename = 0x0, opened_path =
0x0, handle = {fd = 0,
fp = 0x0, stream = {handle = 0x0, reader = 0, closer = 0,
interactive = 0}},
free_filename = 0 '\0'}
old_cwd = 0x7fbfff9288 ""
old_primary_file_path = 0x7fbfffeaa4 "../bug30128.php"
retval = 0
#5 0x00000000005f104d in main (argc=3, argv=0x7fbfffb798)
at /local/jorton/php/HEAD64/sapi/cli/php_cli.c:943
orig_bailout = {{__jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0},
__mask_was_saved = 0,
__saved_mask = {__val = {0 <repeats 16 times>}}}}
exit_status = 0
c = -1
file_handle = {type = 5 '\005', filename = 0x7fbfffa2c0
"/local/jorton/php/bug30128.php",
opened_path = 0x0, handle = {fd = 9205152, fp = 0x8c75a0, stream =
{handle = 0x8c75a0,
reader = 0x596c80 <zend_stream_stdio_reader>, closer = 0x596ca0
<zend_stream_stdio_closer>,
interactive = 0}}, free_filename = 0 '\0'}
behavior = 1
orig_optind = 1
orig_optarg = 0x0
arg_free = 0x7fbfffeaa4 "../bug30128.php"
arg_excp = (char **) 0x8c9528
script_file = 0x7fbfffeaa4 "../bug30128.php"
global_vars = {head = 0x0, tail = 0x0, count = 0, size = 8,
dtor = 0, persistent = 0 '\0',
traverse_ptr = 0x411ea0}
interactive = 0
module_started = 1
lineno = 1
exec_direct = 0x0
exec_run = 0x0
exec_begin = 0x0
exec_end = 0x0
param_error = 0x0
hide_argv = 0
Previous Comments:
------------------------------------------------------------------------
[2004-09-17 10:09:12] dankab at infinito dot it
Description:
------------
[sorry for my english]
the code below cause a segmentation fault in apache 2
i try to use a parent variable in the catch statement of the second
child
if i use the same variable in the first child it's seems to work
Reproduce code:
---------------
class A {
public $myVar = "";
function __construct() {
try {
$this->test();
}
catch(Exception $e) {
throw $e;
}
}
public function test() {
$this->myVar = "something<br>";
if(0!=1) throw new Exception("ERROR",100);
}
}
class B extends A {
function __construct() {
try {
parent::__construct();
}
catch(Exception $e) {
throw $e;
}
}
}
class C extends B {
function __construct() {
try {
parent::__construct();
}
catch(Exception $e) {
echo $this->myVar;
throw $e;
}
}
}
try {
$c = new C();
}
catch(Exception $e) {
echo $e->getMessage();
}
Expected result:
----------------
printing of:
something
ERROR
Actual result:
--------------
segmentation fault in apache 2
[notice] child pid 12938 exit signal Segmentation fault (11)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=30128&edit=1