#32981 [Fbk-Opn]: ReflectionMethod::getStaticVariables() causes apache2.0.54 seg fault

2005-05-12 Thread phpbug at swift-web dot com
 ID:   32981
 User updated by:  phpbug at swift-web dot com
 Reported By:  phpbug at swift-web dot com
-Status:   Feedback
+Status:   Open
 Bug Type: Reproducible crash
 Operating System: Gentoo 2.6.11
 PHP Version:  5.0CVS (2005-05-09)
 New Comment:

Tried today's CVS snapshot and it still gives a seg fault error.  I
think I discovered problem with the debugging.  I just noticed when I
compile with --enable-debug I get warning messages in error_log saying
that my modules were not compiled with the debug flag set and they must
be.

I tried with --disable-debug so I didn't get those warnings and apache
starts cleanly (no warning messages).  Still get seg fault error.  I'll
compile the 13 extension modules I need to set the debug flag on for
again as well (opensll, mhash, zlib, gettext, tidy, exif, fam, ncurses,
mbstring, mcrypt, sysvmsg, sysvsem, sysvshm).  I won't have time to do
this for a few days though.

I configured php with:
--prefix=/usr --host=i686-pc-linux-gnu --mandir=/usr/share/man
--infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc
--localstatedir=/var/lib --with-jpeg-dir=/usr --with-freetype-dir=/usr
--with-t1lib=/usr --with-ttf=/usr --enable-gd-jis-conf
--enable-gd-native-ttf --with-png-dir=/usr --with-tiff-dir=/usr
--without-xpm-dir --with-gd --with-mysql
--with-mysql-sock=/var/run/mysqld/mysqld.sock --with-mm
--without-msession --enable-sqlite-utf8 --with-apxs2=/usr/sbin/apxs2
--with-config-file-path=/etc/php/apache2-php5 --without-pear
--disable-bcmath --without-bz2 --disable-calendar --without-cpdflib
--disable-ctype --without-curl --without-curlwrappers --disable-dbase
--disable-dio --enable-exif=shared --with-fam=shared --without-fbsql
--without-fdftk --disable-filepro --disable-ftp --with-gettext=shared
--without-gmp --without-hwapi --without-iconv --without-informix
--without-ingres --without-interbase --without-kerberos
--enable-mbstring=shared --with-mcrypt=shared --without-mcve
--disable-memory-limit --with-mhash=shared --without-mime-magic
--without-ming --without-mnogosearch --without-msql --without-mssql
--with-ncurses=shared --without-oci8 --without-oracle
--with-openssl=shared --with-openssl-dir=/usr --without-ovrimos
--disable-pcntl --without-pfpro --without-pgsql --disable-posix
--without-pspell --without-recode --disable-simplexml --enable-shmop
--without-snmp --disable-soap --disable-sockets --without-sybase
--without-sybase-ct --enable-sysvmsg=shared --enable-sysvsem=shared
--enable-sysvshm=shared --with-tidy=shared --disable-tokenizer
--disable-wddx --without-xsl --without-xmlrpc --disable-yp
--with-zlib=shared --disable-debug --disable-dba --with-readline
--without-libedit

I have apache-2.0.54-r3 compiled with mpm-prefork and ssl flags set.

Here is a complete cut 'n paste of the script I run to display class
information along with comments on how I can make it work (*note you'll
also see a comment out where isDestructor() always returns true as
well)

---start of code---
?php
// test for php Reflection bug (default static property value crash)
?html
head
titleTest for php Reflection bug/title
/head
body
centerh1Test for php Reflection bug/h1/center
hr
?php
//  phpinfo(); exit;

/*
* works when I call the below method (that overrides default static
property)
* but when commented out page exits immediately
*/
//  debug::jason();
echo debug::dump(new debug(),'debug()',0,true);

// When I either comment out (or activate) line debug::jason();, 
// I change the text below to give a quick visual confirmation that
// page is not actually fully running when I reload the page
echo 'done';


echo '/body/html';





// classes defined below
class debug {
final public static function jason($jason = true) {
static $mark = false;
if ($jason !== false) {
$mark = $jason;
} else {
return($mark);
}
}

final public static function
dump($data,$label='',$public_only=true,$show_docs=false) {
// make sure public_only  show_docs is just true or 
false
$public_only = ($public_only != false) ? true : false;
$show_docs = ($show_docs != false) ? true : false;
// setup styles for html output
$style['key']   = 'font-family: sans-serif; text-align: 
right;
font-size: 12px; font-weight: bold; background-color: #000; color:
#f0f0f0;';
$style['value'] = 'font-family: sans-serif; font-size: 
11px; color:
#009; background-color: #eee'; // monospace
$style['type']  = 'font-family: sans-serif; text-align: 
center;
font-size: 12px; 

#32981 [Fbk-Opn]: ReflectionMethod::getStaticVariables() causes apache2.0.54 seg fault

2005-05-10 Thread phpbug at swift-web dot com
 ID:   32981
 User updated by:  phpbug at swift-web dot com
 Reported By:  phpbug at swift-web dot com
-Status:   Feedback
+Status:   Open
 Bug Type: Reproducible crash
 Operating System: Gentoo 2.6.11
 PHP Version:  5.0CVS (2005-05-09)
 New Comment:

I couldn't make sense of the backtrace either.  phpinfo() confirms I
have --enable-debug flag set.

I have no Zend extensions loaded.

I don't have apache compiled with --enable-debug.  Is that part of the
problem?


Previous Comments:


[2005-05-10 14:40:14] [EMAIL PROTECTED]

That backtrace is useless to us. You really didn't configure with
--enable-debug. 

Are you using any Zend extensions (any extension loaded with
zend_extension in php.ini) ?




[2005-05-10 04:55:33] phpbug at swift-web dot com

The script I run that crashes is a class I called ss_debug and it has a
dump method that will use the Reflection methods to output into a easy
to read table information about a class.

I remembered the ss_debug class has methods with static values so I set
it to report/parse itself and it ran, but only if I did it at the end of
a script that ran normally (If I tried dumping the output at the
beginning of a script or just an empty script like entered as an
example earlier, it crashed).

This confused me why it ran at the end and not at the beginning.  I
tried adding a new method to this class that simple was:

function jason() {
  static $me = true;
}

now it crashed all the time (whether I ran it on it's own or after a
page that normally worked).

Pulled a few hairs out and then it dawned on me to override the default
setting in that class before I dumped it and now it works.

So what I have narrowed it down to consistently is if I have static
variables that are still in their default setting of boolean true or
false then it causes a seg fault.  If I override the default setting
before dumping (running the reflection class/methods) then it works. 
Did I explain this clear enough?



[2005-05-10 04:01:09] phpbug at swift-web dot com

Couldn't get a core file (even though compiled with --enable-debug) so
I ran httpd -X under gdb
cut 'n paste bt results here:

#0  0xb7cca595 in memcpy () from /lib/libc.so.6
#1  0xb7a90f71 in zif_vprintf () from
/usr/lib/apache2/modules/libphp5.so
#2  0x0822ee7b in ?? ()
#3  0x in ?? ()
#4  0x0005 in ?? ()
#5  0xb7b2411e in zend_make_printable_zval () from
/usr/lib/apache2/modules/libphp5.so
#6  0xbffed060 in ?? ()
#7  0xb7b99b20 in php_tiff_bytes_per_format () from
/usr/lib/apache2/modules/libphp5.so
#8  0x0103 in ?? ()
#9  0xb7b0ea04 in _emalloc () from /usr/lib/apache2/modules/libphp5.so
#10 0xbffec64c in ?? ()
#11 0xbffec648 in ?? ()
#12 0x0052 in ?? ()
#13 0xb7a903c0 in zif_vprintf () from
/usr/lib/apache2/modules/libphp5.so
#14 0xbffec644 in ?? ()
#15 0xbffec648 in ?? ()
#16 0xbffec64c in ?? ()
#17 0x in ?? ()
#18 0x in ?? ()
#19 0x in ?? ()
#20 0x0020 in ?? ()
#21 0x0001 in ?? ()
#22 0x0004 in ?? ()
#23 0x in ?? ()
#24 0x in ?? ()
#25 0x in ?? ()
#26 0x in ?? ()
#27 0x in ?? ()
#28 0x in ?? ()
#29 0x in ?? ()
#30 0x in ?? ()
#31 0x in ?? ()
#32 0x2000 in ?? ()
#33 0x081e9cbc in ?? ()
#34 0x in ?? ()
#35 0x0007 in ?? ()
#36 0x in ?? ()
#37 0x in ?? ()
#38 0x0001 in ?? ()
#39 0x0007 in ?? ()
#40 0x in ?? ()
#41 0x08220dc4 in ?? ()
#42 0x08220324 in ?? ()
#43 0x0822ed04 in ?? ()
#44 0x0177 in ?? ()
#45 0x01e0 in ?? ()
#46 0x0001 in ?? ()
#47 0x in ?? ()
(line 47 repeats the same until 450)
#451 0xbffecca8 in ?? ()
#452 0x081f2d64 in ?? ()
#453 0x in ?? ()
(line 453 repeats the same until 596)
#597 0x7300 in ?? ()
#598 0xb7d572a0 in ?? () from /lib/libc.so.6
#599 0x in ?? ()
#600 0x in ?? ()
#601 0x in ?? ()
#602 0x in ?? ()
#603 0x in ?? ()
#604 0x081ff8cc in ?? ()
#605 0x in ?? ()
#606 0x0005 in ?? ()
#607 0x1999 in ?? ()
#608 0x in ?? ()
#609 0xb7d6eff4 in ?? () from /lib/libc.so.6
#610 0x081ff8cc in ?? ()
#611 0x0006 in ?? ()
#612 0xbffecf48 in ?? ()
#613 0xb7c8fefa in __strtol_internal () from /lib/libc.so.6
#614 0x0004 in ?? ()



[2005-05-10 00:52:01] [EMAIL PROTECTED]

Thank you for this bug report. To properly diagnose the problem, we
need a backtrace to see what is happening behind the scenes. To
find out how to generate a backtrace, please read
http://bugs.php.net/bugs-generating-backtrace.php

Once you have generated a backtrace, please submit it to this bug
report and change the status back to Open. Thank you for 

#32981 [Fbk-Opn]: ReflectionMethod::getStaticVariables() causes apache2.0.54 seg fault

2005-05-09 Thread phpbug at swift-web dot com
 ID:   32981
 User updated by:  phpbug at swift-web dot com
 Reported By:  phpbug at swift-web dot com
-Status:   Feedback
+Status:   Open
 Bug Type: Reproducible crash
 Operating System: Gentoo 2.6.11
-PHP Version:  5.0.4
+PHP Version:  5.0.5-dev
 New Comment:

Tried with the latest stable 5.0 (from the link you sent) and the page
still crashes with seg fault error.

The version reported in phpinfo is 5.0.5-dev from that install.


Previous Comments:


[2005-05-09 11:36:40] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5-STABLE-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.0-win32-latest.zip

Seems to work fine fore me with latest CVS HEAD (5.1-dev) but do try
and see if it's fixed in the 5.0 too.




[2005-05-09 10:15:43] phpbug at swift-web dot com

Description:

Discovered if I am using ReflectionMethod::getStaticVariables() on a
method that has a static variable that is set to boolean true or false
then php crashes (Apache 2 exists with following error)

[notice] child pid 28346 exit signal Segmentation fault (11)

I tried with php version 5.0.3 initially but upgraded to 5.0.4 and
problem still exists.






Reproduce code:
---
class demo_class {
  static function myDemo($toggle) {
static $enabled = true;
// do whatever
  }
}

$class = new ReflectionClass('demo_class');
foreach ($class-getMethods() as $method) {
  $arr_static_vars[] = $method-getStaticVariables();
}
echo done; 
// (normally would output $arr_static_var but just put above
//  line for simplicity in this example)

Expected result:

See a screen with just the word 'done' on it



Actual result:
--
Page loading stops immediately (and keeps last page shown displayed. 
Apache logs show:


[notice] child pid 28346 exit signal Segmentation fault (11)
(pid of course varies)

If I change the third line in my sample code to:
  static $enabled = 1;

(or string) the page does not crash and things display properly

I haven't tested this to see if it also crashes showing static
variables for the entire class (as opposed to the one in the method)
but if they inherit the same code I guess it would also crash but again
I haven't confirmed that.





-- 
Edit this bug report at http://bugs.php.net/?id=32981edit=1


#32981 [Fbk-Opn]: ReflectionMethod::getStaticVariables() causes apache2.0.54 seg fault

2005-05-09 Thread phpbug at swift-web dot com
 ID:   32981
 User updated by:  phpbug at swift-web dot com
 Reported By:  phpbug at swift-web dot com
-Status:   Feedback
+Status:   Open
 Bug Type: Reproducible crash
 Operating System: Gentoo 2.6.11
 PHP Version:  5.0.5-dev
 New Comment:

Couldn't get a core file (even though compiled with --enable-debug) so
I ran httpd -X under gdb
cut 'n paste bt results here:

#0  0xb7cca595 in memcpy () from /lib/libc.so.6
#1  0xb7a90f71 in zif_vprintf () from
/usr/lib/apache2/modules/libphp5.so
#2  0x0822ee7b in ?? ()
#3  0x in ?? ()
#4  0x0005 in ?? ()
#5  0xb7b2411e in zend_make_printable_zval () from
/usr/lib/apache2/modules/libphp5.so
#6  0xbffed060 in ?? ()
#7  0xb7b99b20 in php_tiff_bytes_per_format () from
/usr/lib/apache2/modules/libphp5.so
#8  0x0103 in ?? ()
#9  0xb7b0ea04 in _emalloc () from /usr/lib/apache2/modules/libphp5.so
#10 0xbffec64c in ?? ()
#11 0xbffec648 in ?? ()
#12 0x0052 in ?? ()
#13 0xb7a903c0 in zif_vprintf () from
/usr/lib/apache2/modules/libphp5.so
#14 0xbffec644 in ?? ()
#15 0xbffec648 in ?? ()
#16 0xbffec64c in ?? ()
#17 0x in ?? ()
#18 0x in ?? ()
#19 0x in ?? ()
#20 0x0020 in ?? ()
#21 0x0001 in ?? ()
#22 0x0004 in ?? ()
#23 0x in ?? ()
#24 0x in ?? ()
#25 0x in ?? ()
#26 0x in ?? ()
#27 0x in ?? ()
#28 0x in ?? ()
#29 0x in ?? ()
#30 0x in ?? ()
#31 0x in ?? ()
#32 0x2000 in ?? ()
#33 0x081e9cbc in ?? ()
#34 0x in ?? ()
#35 0x0007 in ?? ()
#36 0x in ?? ()
#37 0x in ?? ()
#38 0x0001 in ?? ()
#39 0x0007 in ?? ()
#40 0x in ?? ()
#41 0x08220dc4 in ?? ()
#42 0x08220324 in ?? ()
#43 0x0822ed04 in ?? ()
#44 0x0177 in ?? ()
#45 0x01e0 in ?? ()
#46 0x0001 in ?? ()
#47 0x in ?? ()
(line 47 repeats the same until 450)
#451 0xbffecca8 in ?? ()
#452 0x081f2d64 in ?? ()
#453 0x in ?? ()
(line 453 repeats the same until 596)
#597 0x7300 in ?? ()
#598 0xb7d572a0 in ?? () from /lib/libc.so.6
#599 0x in ?? ()
#600 0x in ?? ()
#601 0x in ?? ()
#602 0x in ?? ()
#603 0x in ?? ()
#604 0x081ff8cc in ?? ()
#605 0x in ?? ()
#606 0x0005 in ?? ()
#607 0x1999 in ?? ()
#608 0x in ?? ()
#609 0xb7d6eff4 in ?? () from /lib/libc.so.6
#610 0x081ff8cc in ?? ()
#611 0x0006 in ?? ()
#612 0xbffecf48 in ?? ()
#613 0xb7c8fefa in __strtol_internal () from /lib/libc.so.6
#614 0x0004 in ?? ()


Previous Comments:


[2005-05-10 00:52:01] [EMAIL PROTECTED]

Thank you for this bug report. To properly diagnose the problem, we
need a backtrace to see what is happening behind the scenes. To
find out how to generate a backtrace, please read
http://bugs.php.net/bugs-generating-backtrace.php

Once you have generated a backtrace, please submit it to this bug
report and change the status back to Open. Thank you for helping
us make PHP better.

I can't reproduce it - neither with 5_0-dev nor 5.1-dev 



[2005-05-09 22:19:07] phpbug at swift-web dot com

Tried with the latest stable 5.0 (from the link you sent) and the page
still crashes with seg fault error.

The version reported in phpinfo is 5.0.5-dev from that install.



[2005-05-09 11:36:40] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5-STABLE-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.0-win32-latest.zip

Seems to work fine fore me with latest CVS HEAD (5.1-dev) but do try
and see if it's fixed in the 5.0 too.




[2005-05-09 10:15:43] phpbug at swift-web dot com

Description:

Discovered if I am using ReflectionMethod::getStaticVariables() on a
method that has a static variable that is set to boolean true or false
then php crashes (Apache 2 exists with following error)

[notice] child pid 28346 exit signal Segmentation fault (11)

I tried with php version 5.0.3 initially but upgraded to 5.0.4 and
problem still exists.






Reproduce code:
---
class demo_class {
  static function myDemo($toggle) {
static $enabled = true;
// do whatever
  }
}

$class = new ReflectionClass('demo_class');
foreach ($class-getMethods() as $method) {
  $arr_static_vars[] = $method-getStaticVariables();
}
echo done; 
// (normally would output $arr_static_var but just put above
//  line for simplicity in this example)

Expected result:

See a screen with just the word 'done' on it



Actual result:
--
Page loading stops immediately (and keeps last page shown displayed. 
Apache logs show:


[notice] child pid 28346 exit signal Segmentation fault (11)
(pid of course varies)

If I change