From:             [EMAIL PROTECTED]
Operating system: BSDi 4.x
PHP version:      4.0CVS-2002-01-05
PHP Bug Type:     GD related
Bug description:  GD breaks SIGUSR1 and SIGHUP

First some details:
gd version: 2.0.1, using custom Makefile (will send it seperately to the
php-dev list).
Tested OS: BSDi 4.2, but bug exists in elder versions of all components
(OS/PHP/GD)

When apache receives a SIGUSR1, the childs start cycling, eating CPU power
and causing a load of appr. 3 per apache child.

A SIGHUP doesn't work correctly:
[Sat Jan  5 13:52:57 2002] [notice] caught SIGTERM, shutting down
[Sat Jan  5 13:55:56 2002] [notice] Apache/1.3.22 (Unix) PHP/4.2.0-dev
mod_perl/1.26 configured -- resuming normal operations
[Sat Jan  5 13:55:56 2002] [notice] Accept mutex: flock (Default: flock)
[Sat Jan  5 13:56:00 2002] [warn] child process 18897 did not exit, sending
another SIGHUP
[Sat Jan  5 13:56:00 2002] [warn] child process 18898 did not exit, sending
another SIGHUP
[Sat Jan  5 13:56:00 2002] [warn] child process 18899 did not exit, sending
another SIGHUP
[Sat Jan  5 13:56:00 2002] [warn] child process 18900 did not exit, sending
another SIGHUP
[Sat Jan  5 13:56:00 2002] [warn] child process 18901 did not exit, sending
another SIGHUP
[Sat Jan  5 13:56:02 2002] [warn] child process 18897 still did not exit,
sending a SIGTERM
[Sat Jan  5 13:56:02 2002] [warn] child process 18898 still did not exit,
sending a SIGTERM
[Sat Jan  5 13:56:02 2002] [warn] child process 18899 still did not exit,
sending a SIGTERM
[Sat Jan  5 13:56:02 2002] [warn] child process 18900 still did not exit,
sending a SIGTERM
[Sat Jan  5 13:56:02 2002] [warn] child process 18901 still did not exit,
sending a SIGTERM
[Sat Jan  5 13:56:06 2002] [error] child process 18897 still did not exit,
sending a SIGKILL
[Sat Jan  5 13:56:06 2002] [error] child process 18898 still did not exit,
sending a SIGKILL
[Sat Jan  5 13:56:06 2002] [error] child process 18899 still did not exit,
sending a SIGKILL
[Sat Jan  5 13:56:06 2002] [error] child process 18900 still did not exit,
sending a SIGKILL
[Sat Jan  5 13:56:06 2002] [error] child process 18901 still did not exit,
sending a SIGKILL
[Sat Jan  5 13:56:06 2002] [notice] SIGHUP received.  Attempting to
restart
[Sat Jan  5 13:56:06 2002] [notice] Apache/1.3.22 (Unix) PHP/4.2.0-dev
mod_perl/1.26 configured -- resuming normal operations
[Sat Jan  5 13:56:06 2002] [notice] Accept mutex: flock (Default: flock)

All this disappears, when eliminating gd from the equasion.

I think the cause lies in the linking of the library. Even though I have
configured php to use the shared version:
        --with-gd=shared,/weblib/local \
        --with-freetype-dir=/weblib/local

gd is linked into libphp4.so:
$ ldd libphp4.so
        ./libphp4.so => ./libphp4.so (0x4805b000)
        libdl.so => /shlib/libdl.so (0x481f9000)
        libm.so => /shlib/libm.so.0.0 (0x481fd000)
        libsablot.so.0 => /weblib/local/lib/libsablot.so.0 (0x4820e000)
        libexpat.so.0 => /weblib/local/lib/libexpat.so.0 (0x482b6000)
        libmysqlclient.so.10 =>
/weblib/local/lib/mysql/libmysqlclient.so.10 (0x482d7000)
        libiconv.so.2 => /weblib/local/lib/libiconv.so.2 (0x482f4000)
        libgd.so.2 => /weblib/local/lib/libgd.so.2 (0x483c9000)
        libfreetype.so.6 => /weblib/local/lib/libfreetype.so.6
(0x483fc000)
        libssl.so.0.9.6 => /weblib/local/lib/libssl.so.0.9.6 (0x48430000)
        libcrypto.so.0.9.6 => /weblib/local/lib/libcrypto.so.0.9.6
(0x484e6000)
        libc.so.2 => /shlib/libc.so.2 (0x485a8000)
        libgcc.so.1 => /shlib/libgcc.so.1 (0x48674000)
        libz.so => /usr/lib/libz.so (0x48681000)
        libpng.so.2 => /weblib/local/lib/libpng.so.2 (0x48690000)

The shared lib in lib/php/20010901-debug only links itself and the standard
c libs:
$ ldd libgd.so
        ./libgd.so => ./libgd.so (0x4805b000)
        libc.so.2 => /shlib/libc.so.2 (0x48070000)
        libgcc.so.1 => /shlib/libgcc.so.1 (0x4813c000)

If I compare this to pg for instance, it is not in the php4 lib and it
shows proper linking with the pg native libs:
$ ldd libpgsql.so
        ./libpgsql.so => ./libpgsql.so (0x4805b000)
        libpq.so.2 => /pgsql/lib/libpq.so.2 (0x48069000)
        libc.so.2 => /shlib/libc.so.2 (0x48079000)
        libgcc.so.1 => /shlib/libgcc.so.1 (0x48145000)
        libssl.so.0.9.6 => /weblib/local/lib/libssl.so.0.9.6 (0x48152000)
        libcrypto.so.0.9.6 => /weblib/local/lib/libcrypto.so.0.9.6
(0x48208000)
        libdl.so => /shlib/libdl.so (0x482ca000)

The reason I need a custom Makefile for gd, is because the standard gd
library Makefile, creates a libgd.so, which generates a crash on startup of
apache, and ldd on this library, doesn't even detect any dependancies, nor
does it give 'statically linked' - just a blank line.

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


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to