Calls to imagettftext cause fatal error in php

Ryan Schmidt ryandesign at macports.org
Sun Jul 6 19:30:02 PDT 2008


On Jul 6, 2008, at 08:16, Chris Janton wrote:

> On 2008-07-05 , at 23:56 , Bill Hernandez wrote:
>
>> I posted a bug report:
>> http://bugs.php.net/bug.php?id=45437
>> Bug #45437	Calls to imagettftext crash
>>
>> Same exact problem has been reported as Bug #44524, but has been
>> written off as bogus.
>> IT IS NOT BOGUS...
>> Problem:
>> ------------
>> Calls to imagettftext always fail with no error on Leopard 10.5.3
>> when run under MacPorts Apache 2.2.6, PHP 5.2.5 and the GD library.
>> Reproduce code:
>
>
> I can see why they claim it is bogus.
>
> PHP (5.2.6) produces the image just fine...
>
> face at mac:Sites:133 $ which php
> /opt/local/bin/php
> face at mac:Sites:134 $ php --version
> PHP 5.2.6 (cli) (built: May 25 2008 13:28:23)
> Copyright (c) 1997-2008 The PHP Group
> Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
> face at mac:Sites:135 $ php foo.php >zippy.png
> face at mac:Sites:136 $ ls -al zippy.png
> -rw-r--r--  1 face  staff   892B Jul  6 05:33 zippy.png
> face at mac:Sites:137 $ open zippy.png
>
> Preview happily shows me the image.
>
> I suspect the PHP folks will tell you that this is a problem with
> Apache, or the way that you have built Apache.
>
> Note that I can run this example just fine with Apache 1.3.
>
> Further investigation points to this page
>
> 	http://90kts.com/blog/2008/installing-gd-libraries-for-leopard- 
> apache-php-525/
>
> where you will find bits and pieces like...
>
> "i have the same problem with ttf fonts… can someone help? this says
> the log file:
> The process has forked and you cannot use this CoreFoundation
> functionality safely. You MUST exec().
> Break on
> __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTI 
> ONALITY___YOU_MUST_EXEC__
> () to debug."
>
> and
>
> "I think the reason is posted here:
> http://developer.apple.com/releasenotes/CoreFoundation/ 
> CoreFoundation.html
>
> CoreFoundation and fork()
>
> Due to the behavior of fork(), CoreFoundation cannot be used on the
> child-side of fork(). If you fork(), you must follow that with an
> exec*() call of some sort, and you should not use CoreFoundation APIs
> within the child, before the exec*(). The applies to all higher-level
> APIs which use CoreFoundation, and since you cannot know what those
> higher-level APIs are doing, and whether they are using CoreFoundation
> APIs, you should not use any higher-level APIs either. This includes
> use of the daemon() function."
>
> SO - it boils down to getting the maintainer of freetype  
> (Maintainers: ryandesign at macports.org
> ) to look at the implications of the following configuration options
>
>
>
>    --with-quickdraw-toolbox
>
>                            use MacOS QuickDraw in ToolBox, if  
> available
>
>                            (default=yes)
>
>    --with-quickdraw-carbon use MacOS QuickDraw in Carbon, if available
>
>                            (default=yes)
>
> and if they should be changed, or a variant made available for Leopard
> users.
>
>
>
> Clear as mud?

Exactly. I don't see that I need to make any change in the freetype  
portfile. If a change needs to be made in freetype, it should be the  
developers of freetype that do so. Feel free to file a bug with them.




More information about the macports-users mailing list