#27884 [Fbk->Opn]: Segfault on overloading
| From: | s dot dehaan at lobbes dot biz | Date: | Wed, 07 Apr 2004 09:48:37 +0000 |
| Subject: | #27884 [Fbk->Opn]: Segfault on overloading | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-57652@lists.php.net to get a copy of this message | ||
ID: 27884
User updated by: s dot dehaan at lobbes dot biz
Reported By: s dot dehaan at lobbes dot biz
-Status: Feedback
+Status: Open
Bug Type: Class/Object related
Operating System: Linux debian 2.2.20-idepci
PHP Version: 4.3.6RC1
New Comment:
I am unable to recreate the bug so I think it's fixed! Thanks!
I ran the test using CLI php -n & no extensions loaded in php.ini
Thanks again.
Previous Comments:
------------------------------------------------------------------------
[2004-04-07 05:09:36] sniper@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php4-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
And make SURE you don't have ANY extensions (php or zend) loaded in you
php.ini (try running the script with CLI binary, e.g. # php -n test.php
)
------------------------------------------------------------------------
[2004-04-06 07:17:54] s dot dehaan at lobbes dot biz
No, it's just the default PHP installation from http://snaps.php.net,
php_info() says it's 4.3.6RC3-dev but i've seen this bug since i
upgraded to 4.3.5 from 4.3.4.
Here's my installation config:
'./configure' '--with-apxs2=/usr/local/apache2/bin/apxs'
'--disable-cgi' '--enable-safe-mode' '--with-openssl'
'--with-pear'
'--with-zlib' '--enable-bcmath' '--enable-calendar'
'--with-curl=/usr/local/curl' '--enable-dba' '--enable-dbase'
'--with-dom=/usr/local' '--with-dom-xslt=/usr/local'
'--with-dom-exslt=/usr/local' '--enable-ftp' '--with-gd'
'--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--with-ttf=/usr'
'--enable-gd-native-ttf' '--with-mcrypt' '--with-mhash'
'--with-mysql'
'--enable-wddx' '--enable-xslt' '--with-xslt-sablot=/usr/local'
'--enable-exif' '--with-freetype-dir=/usr/local' '--with-xmlrpc'
'--with-gettext' '--with-imap=../imap-2002e' '--enable-shmop'
'--enable-debug'
------------------------------------------------------------------------
[2004-04-06 06:25:42] alan_k@php.net
Do you have the zend optimizer running?? = there are known problems
with this.
------------------------------------------------------------------------
[2004-04-06 05:39:41] s dot dehaan at lobbes dot biz
The warning PHP prints is the following:
Warning: String is not zero-terminated
(ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZÌ*) (source:
/root/source/php4-STABLE-200404060830/Zend/zend_execute.c:341)
------------------------------------------------------------------------
[2004-04-06 05:33:13] s dot dehaan at lobbes dot biz
Description:
------------
Overloading a class called 'Configuration' tends to segfault on 4.3.5,
4.3.6RC1 & 4.3.6RC3 (snaps.php.net).
Reproduce code:
---------------
class Configuration {
var $elem = Array();
function elements() {
return $this->elem;
}
function __get($prop_name, &$prop_value) {
if(isset($this->elem[$prop_name])) {
$prop_value = $this->elem[$prop_name];
return true;
} else {
return false;
}
}
function __set($prop_name, $prop_value) {
$this->elem[$prop_name] = $prop_value;
return true;
}
}
overload('Configuration');
$_CONFIG->db_type = 'mysql';
$_CONFIG->db_host = 'localhost';
$_CONFIG->db_user = 'user';
$_CONFIG->db_password = 'passwd';
$_CONFIG->db_name = 'database';
cause's segfault & abnormal termination of script.
Expected result:
----------------
No output, just storing the called fields in an array & being able to
fetch those values in the same manner as i've stored them using
overloading.
Actual result:
--------------
(gdb) bt
#0 0x401c09c7 in memcpy () from /lib/libc.so.6
#1 0x404886cf in _mem_block_check (ptr=0xbfffb21c, silent=0,
__zend_filename=0x4054bac0
"/root/source/php4-STABLE-200404060830/Zend/zend_execute.h",
__zend_lineno=44, __zend_orig_filename=0x0, __zend_orig_lineno=0)
at /root/source/php4-STABLE-200404060830/Zend/zend_alloc.c:675
#2 0x40488691 in _mem_block_check (ptr=0xbfffb21c, silent=1,
__zend_filename=0x4054bac0
"/root/source/php4-STABLE-200404060830/Zend/zend_execute.h",
__zend_lineno=44, __zend_orig_filename=0x0, __zend_orig_lineno=0)
at /root/source/php4-STABLE-200404060830/Zend/zend_alloc.c:667
#3 0x40487847 in _efree (ptr=0xbfffb21c,
__zend_filename=0x4054bac0
"/root/source/php4-STABLE-200404060830/Zend/zend_execute.h",
__zend_lineno=44, __zend_orig_filename=0x0, __zend_orig_lineno=0)
at /root/source/php4-STABLE-200404060830/Zend/zend_alloc.c:243
#4 0x40492522 in safe_free_zval_ptr (p=0xbfffb21c) at
zend_execute.h:44
#5 0x40490a96 in _zval_ptr_dtor (zval_ptr=0x828a4d0,
__zend_filename=0x4054c400
"/root/source/php4-STABLE-200404060830/Zend/zend_variables.c",
__zend_lineno=167)
at
/root/source/php4-STABLE-200404060830/Zend/zend_execute_API.c:292
#6 0x4049a811 in _zval_ptr_dtor_wrapper (zval_ptr=0x828a4d0)
at /root/source/php4-STABLE-200404060830/Zend/zend_variables.c:167
#7 0x404a281d in zend_hash_destroy (ht=0x82313e4)
at /root/source/php4-STABLE-200404060830/Zend/zend_hash.c:553
#8 0x40491b47 in call_user_function_ex (function_table=0xbfffab98,
object_pp=0xbfffac30, function_name=0xbfffab60,
retval_ptr_ptr=0xbfffab4c,
param_count=2, params=0xbfffab50, no_separation=0,
symbol_table=0x0)
at
/root/source/php4-STABLE-200404060830/Zend/zend_execute_API.c:569
#9 0x4038c92f in call_set_handler (object=0x8292214,
prop_name=0x8292680,
value=0xbfffb21c)
at
/root/source/php4-STABLE-200404060830/ext/overload/overload.c:307
#10 0x4038cfd6 in overload_set_property
(property_reference=0xbfffb1d4,
value=0xbfffb21c)
at
/root/source/php4-STABLE-200404060830/ext/overload/overload.c:468
#11 0x404acb11 in set_overloaded_property (T=0xbfffb1c8,
value=0xbfffb21c)
at /root/source/php4-STABLE-200404060830/Zend/zend_execute.c:977
#12 0x404b455b in zend_assign_to_variable (result=0x820f8f8,
op1=0x820f908,
op2=0x820f918, value=0xbfffb21c, type=2, Ts=0xbfffad4c)
at /root/source/php4-STABLE-200404060830/Zend/zend_execute.c:338
#13 0x404aecd2 in execute (op_array=0x8332fcc)
at /root/source/php4-STABLE-200404060830/Zend/zend_execute.c:1378
#14 0x404b2157 in execute (op_array=0x82928f4)
at /root/source/php4-STABLE-200404060830/Zend/zend_execute.c:2200
#15 0x4049c3f0 in zend_execute_scripts (type=8, retval=0x0,
file_count=3)
at /root/source/php4-STABLE-200404060830/Zend/zend.c:889
#16 0x40460ec9 in php_execute_script (primary_file=0xbffff8d0)
at /root/source/php4-STABLE-200404060830/main/main.c:1731
#17 0x404b6727 in php_handler (r=0x823c148)
at
/root/source/php4-STABLE-200404060830/sapi/apache2handler/sapi_apache2.c:561
#18 0x08082439 in ap_run_handler (r=0x823c148) at config.c:194
#19 0x08082983 in ap_invoke_handler (r=0x823c148) at config.c:401
#20 0x0806c633 in ap_internal_redirect (
new_uri=0x823c0f8
"/thimbletoys_com/application/category/browse.php?c=17&p=&n=Cooking/Kochen",
r=0x81c9e78) at http_request.c:498
#21 0x0807bd4b in handler_redirect (r=0x81c9e78) at mod_rewrite.c:1729
#22 0x08082439 in ap_run_handler (r=0x81c9e78) at config.c:194
#23 0x08082983 in ap_invoke_handler (r=0x81c9e78) at config.c:401
#24 0x0806c126 in ap_process_request (r=0x81c9e78) at
http_request.c:288
#25 0x0806819a in ap_process_http_connection (c=0x81bb658) at
http_core.c:293
#26 0x0808b518 in ap_run_process_connection (c=0x81bb658) at
connection.c:85
#27 0x0808b7bc in ap_process_connection (c=0x81bb658, csd=0x81bb580)
at connection.c:211
#28 0x08081110 in child_main (child_num_arg=0) at prefork.c:694
#29 0x080811cc in make_child (s=0x80c0770, slot=0) at prefork.c:734
#30 0x080812c1 in startup_children (number_to_start=5) at
prefork.c:806
#31 0x080815bc in ap_mpm_run (_pconf=0x80bde98, plog=0x80f5f78,
s=0x80c0770)
at prefork.c:1022
#32 0x08086c4e in main (argc=2, argv=0xbffffda4) at main.c:660
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=27884&edit=1