ID:               29735
 Comment by:       hip at cs dot okstate dot edu
 Reported By:      sparkeh at btinternet dot com
 Status:           Open
 Bug Type:         Reproducible crash
 Operating System: Linux 2.6.7-gentoo-r9
 PHP Version:      5.0.1
 New Comment:

I getting a seg. fault on a simple little script that's worked for
years and it sure smells like stack corruption.

<?
require_once("config.inc");
require_once("Database.inc");

$db = new Database(USER_ID, USER_PASSWORD);
$db->connect();

$sql  = "select from STUDENT_STATUS ";
$sql .= "where STATUS='APPROVED' ";
?>

On my solaris 9 x86 box this seq. faults. Change the last line it seq
faults. Remove the last line it doesn't. After a
hour of playing, I've discovered that I can prevent a seg. fault by
place echo statements (or some other random statment) in key positions
in the file.  That sure smells
like stack corruption.

I ran gdb on the core dump and the last lines of the backtrace are:

#20 0x81b65da in zend_deactivate () at
/usr/local/src/php-5.0.1/Zend/zend.c:819
#21 0x8182007 in php_request_shutdown (dummy=0x0)
    at /usr/local/src/php-5.0.1/main/main.c:1212
#22 0x81db50f in main (argc=2, argv=0x8047a18)
    at /usr/local/src/php-5.0.1/sapi/cli/php_cli.c:1046

and from what little I know of gdb it looks like it's happening when
php is trying to shutdown.


Previous Comments:
------------------------------------------------------------------------

[2004-08-18 20:36:46] sparkeh at btinternet dot com

N.B. Original code tested and works as expected with PHP 4.3.3

------------------------------------------------------------------------

[2004-08-18 19:44:13] sparkeh at btinternet dot com

There is no loop here. This is segfaulting because the function is
failing to return correctly (stack corruption). Remove the "global"
statement, and add an echo '' outside of the switch() braces to see
normal (expected) program flow.

------------------------------------------------------------------------

[2004-08-18 17:18:38] sparkeh at btinternet dot com

What loop??

Remove the "global $moo" and the $rar = 0 and it runs as expected:

<?
        switch($t)
        {
                default:
                        function segfault()
                        {
                                echo 'About to segfault : ';
                        }
                        segfault();
        }
        echo 'Or not. Look no loop.';
?>

------------------------------------------------------------------------

[2004-08-18 17:05:03] [EMAIL PROTECTED]

?
You call the function segfault() in a never ending loop.

------------------------------------------------------------------------

[2004-08-18 16:17:19] sparkeh at btinternet dot com

There is no recursion. This is a function being called from within a
switch block. Surely?

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/29735

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

Reply via email to