From:             baco at infomaniak dot ch
Operating system: Linux
PHP version:      4.4.7
PHP Bug Type:     GD related
Bug description:  Apache2 locked imagecreate with imagettftext

Description:
------------
Reproductible with PHP 4.4.7 
or with the last Snap 4.4-dev
on Apache2 using MPM worker.

Apache2 process get locked when calling
imagettftext() after calling imagecreate()
every call of such code result of another
dead locked Apache2 processes.

Workarounds :
- Use imagecreatetruecolor() instead of imagecreate()
- Don't use bundled gdlib compile PHP with external gdlib
- Upgrade 5.2.3 who don't have this issue

Reproductible with
configure \
--with-gd \
--with-png-dir=/usr \
--with-freetype-dir=/usr \
--with-ttf \
--enable-gd-native-ttf \
...

Unreproductible with external gd
configure \
--with-gd=/opt/misc/gd \
--with-png-dir=/usr \
--with-jpeg-dir=/usr \
--with-freetype-dir=/usr \
--with-ttf \
--enable-gd-native-ttf \
...



Reproduce code:
---------------
    $crash = 1;
    $text = 'Bug';
    $font = $_SERVER['DOCUMENT_ROOT'] . '/fonts' .'/'. 'arial.ttf';

    if ($crash == 1) {
        $image = imagecreate(64, 32);
    } else {
        $image = imagecreatetruecolor(64, 32);
    }

    $white = imagecolorallocate($image, 255, 255, 255);

    /* LOCK APACHE2 PROCESS AFTER THIS POINT IF crash == 1
     * => if imagecreate() used but not if imagecreatetruecolor()
     */
    imagettftext($image, 20, 0, 8, 24, $white, $font, $text);

    header('Content-type: image/png');
    imagepng($image);

    imagedestroy($image);


Expected result:
----------------
Display "Bug" white text on black background

Actual result:
--------------
Apache2 process get locked and browser wait for the
image forever. 

After it is a matter of time for Apache2 to have 
all processes locked depending on your ServerLimit
and ThreadsPerChild values.

-- 
Edit bug report at http://bugs.php.net/?id=42416&edit=1
-- 
Try a CVS snapshot (PHP 4.4): 
http://bugs.php.net/fix.php?id=42416&r=trysnapshot44
Try a CVS snapshot (PHP 5.2): 
http://bugs.php.net/fix.php?id=42416&r=trysnapshot52
Try a CVS snapshot (PHP 6.0): 
http://bugs.php.net/fix.php?id=42416&r=trysnapshot60
Fixed in CVS:                 http://bugs.php.net/fix.php?id=42416&r=fixedcvs
Fixed in release:             
http://bugs.php.net/fix.php?id=42416&r=alreadyfixed
Need backtrace:               http://bugs.php.net/fix.php?id=42416&r=needtrace
Need Reproduce Script:        http://bugs.php.net/fix.php?id=42416&r=needscript
Try newer version:            http://bugs.php.net/fix.php?id=42416&r=oldversion
Not developer issue:          http://bugs.php.net/fix.php?id=42416&r=support
Expected behavior:            http://bugs.php.net/fix.php?id=42416&r=notwrong
Not enough info:              
http://bugs.php.net/fix.php?id=42416&r=notenoughinfo
Submitted twice:              
http://bugs.php.net/fix.php?id=42416&r=submittedtwice
register_globals:             http://bugs.php.net/fix.php?id=42416&r=globals
PHP 3 support discontinued:   http://bugs.php.net/fix.php?id=42416&r=php3
Daylight Savings:             http://bugs.php.net/fix.php?id=42416&r=dst
IIS Stability:                http://bugs.php.net/fix.php?id=42416&r=isapi
Install GNU Sed:              http://bugs.php.net/fix.php?id=42416&r=gnused
Floating point limitations:   http://bugs.php.net/fix.php?id=42416&r=float
No Zend Extensions:           http://bugs.php.net/fix.php?id=42416&r=nozend
MySQL Configuration Error:    http://bugs.php.net/fix.php?id=42416&r=mysqlcfg

Reply via email to