From:             
Operating system: Ubuntu 8.04 and CentOS 5.5
PHP version:      5.3.3
Package:          Scripting Engine problem
Bug Type:         Bug
Bug description:call_user_func and throw Exception causes segmentation fault

Description:
------------
tested on 5.3.4-dev and 5.3.2. Here is a gdb bt from each:



== 5.3.2



GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-23.el5_5.1)

Copyright (C) 2009 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.  Type "show copying"

and "show warranty" for details.

This GDB was configured as "x86_64-redhat-linux-gnu".

For bug reporting instructions, please see:

<http://www.gnu.org/software/gdb/bugs/>...

Reading symbols from /usr/bin/php...(no debugging symbols found)...done.

(gdb) run test.php

Starting program: /usr/bin/php test.php

[Thread debugging using libthread_db enabled]

Starting

call #1

GOTCHA

call #2

GOTCHA

call #3



== 5.3.4-dev



GNU gdb 6.8-debian

Copyright (C) 2008 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.  Type "show copying"

and "show warranty" for details.

This GDB was configured as "i486-linux-gnu"...

(gdb) run test.php

Starting program: /usr/local/bin/php test.php

[Thread debugging using libthread_db enabled]

[New Thread 0xb73ba6d0 (LWP 21760)]

Starting

call #1

GOTCHA

call #2

GOTCHA

call #3



Program received signal SIGSEGV, Segmentation fault.

[Switching to Thread 0xb73ba6d0 (LWP 21760)]

0x083a6804 in zend_parse_va_args (num_args=1, type_spec=0x884f1d1 "*", 

va=0xbf6e912c, flags=0) at /root/src/php-src/PHP_5_3/Zend/zend_API.c:588

588     /root/src/php-src/PHP_5_3/Zend/zend_API.c: No such file or directory.

        in /root/src/php-src/PHP_5_3/Zend/zend_API.c





Program received signal SIGSEGV, Segmentation fault.

0x00000000006018ca in ?? ()



== Valgrind on 5.3.4-dev





Starting

call #1

GOTCHA

call #2

GOTCHA

call #3

==27936== Stack overflow in thread 1: can't grow stack to 0xBE79AFF4

==27936== 

==27936== Process terminating with default action of signal 11 (SIGSEGV)

==27936==  Access not within mapped region at address 0xBE79AFF4

==27936==    at 0x83A560C: zend_parse_va_args (zend_API.c:672)

==27936== Stack overflow in thread 1: can't grow stack to 0xBE79AFAC

==27936== 

==27936== Process terminating with default action of signal 11 (SIGSEGV)

==27936==  Access not within mapped region at address 0xBE79AFAC

==27936==    at 0x401E200: _vgnU_freeres (vg_preloaded.c:56)

==27936== 

==27936== ERROR SUMMARY: 36 errors from 8 contexts (suppressed: 223 from
1)

==27936== malloc/free: in use at exit: 7,047,765 bytes in 22,064 blocks.

==27936== malloc/free: 23,225 allocs, 1,161 frees, 7,402,213 bytes
allocated.

==27936== For counts of detected errors, rerun with: -v

==27936== searching for pointers to 22,064 not-freed blocks.

==27936== checked 13,202,628 bytes.

==27936== 

==27936== LEAK SUMMARY:

==27936==    definitely lost: 0 bytes in 0 blocks.

==27936==      possibly lost: 0 bytes in 0 blocks.

==27936==    still reachable: 7,047,765 bytes in 22,064 blocks.

==27936==         suppressed: 0 bytes in 0 blocks.

==27936== Rerun with --leak-check=full to see details of leaked memory.

Segmentation fault



Test script:
---------------
print "Starting";



function throwSomeEx()

{

    throw new Exception("booom boom its dead");

}



function callThrowSomeEx()

{

     call_user_func("callThrowSomeEx", array());

}



print "\r\ncall #1\r\n";

try

{

    throwSomeEx();

}

catch(Exception $e)

{

    print "GOTCHA";

}



print "\r\ncall #2\r\n";

try

{

     call_user_func("throwSomeEx", array());

}

catch(Exception $e)

{

    print "GOTCHA";

}



print "\r\ncall #3\r\n";

try

{

  callThrowSomeEx();

}

catch(Exception $e)

{

    print "GOTCHA";

}

Expected result:
----------------
print GOTCHA on every exception calls.



Actual result:
--------------
Segmentation fault on the last call of the test script

-- 
Edit bug report at http://bugs.php.net/bug.php?id=53313&edit=1
-- 
Try a snapshot (PHP 5.2):            
http://bugs.php.net/fix.php?id=53313&r=trysnapshot52
Try a snapshot (PHP 5.3):            
http://bugs.php.net/fix.php?id=53313&r=trysnapshot53
Try a snapshot (trunk):              
http://bugs.php.net/fix.php?id=53313&r=trysnapshottrunk
Fixed in SVN:                        
http://bugs.php.net/fix.php?id=53313&r=fixed
Fixed in SVN and need be documented: 
http://bugs.php.net/fix.php?id=53313&r=needdocs
Fixed in release:                    
http://bugs.php.net/fix.php?id=53313&r=alreadyfixed
Need backtrace:                      
http://bugs.php.net/fix.php?id=53313&r=needtrace
Need Reproduce Script:               
http://bugs.php.net/fix.php?id=53313&r=needscript
Try newer version:                   
http://bugs.php.net/fix.php?id=53313&r=oldversion
Not developer issue:                 
http://bugs.php.net/fix.php?id=53313&r=support
Expected behavior:                   
http://bugs.php.net/fix.php?id=53313&r=notwrong
Not enough info:                     
http://bugs.php.net/fix.php?id=53313&r=notenoughinfo
Submitted twice:                     
http://bugs.php.net/fix.php?id=53313&r=submittedtwice
register_globals:                    
http://bugs.php.net/fix.php?id=53313&r=globals
PHP 4 support discontinued:          http://bugs.php.net/fix.php?id=53313&r=php4
Daylight Savings:                    http://bugs.php.net/fix.php?id=53313&r=dst
IIS Stability:                       
http://bugs.php.net/fix.php?id=53313&r=isapi
Install GNU Sed:                     
http://bugs.php.net/fix.php?id=53313&r=gnused
Floating point limitations:          
http://bugs.php.net/fix.php?id=53313&r=float
No Zend Extensions:                  
http://bugs.php.net/fix.php?id=53313&r=nozend
MySQL Configuration Error:           
http://bugs.php.net/fix.php?id=53313&r=mysqlcfg

Reply via email to