ID:               30563
 Updated by:       [EMAIL PROTECTED]
 Reported By:      david at donpiso dot com
 Status:           Bogus
 Bug Type:         Reproducible crash
 Operating System: Linux 2.4.25
 PHP Version:      4.3.9
 New Comment:

The fact that your test:

gcc tst-libc6.c -o tst-libc6 -ldb 

doesn't show up in ldd is dubious on the first machine.  It may be
necessary to add:

extern int db_open(void);

to force the db_open symbol to be resolved at initial link time to
trigger the same conditions as in PHP.

To debug the PHP issue further you could use LD_DEBUG and
LD_DEBUG_OUTPUT (see "man ld.so") and work out where the db_open() is
getting resolved to from nss_db.  All the copies of the nss_db library
I have use a statically linked copy of Berkeley DB.


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

[2004-10-28 17:00:51] david at donpiso dot com

It doesn't break. Test program is: 
 
#include <netdb.h> 
#include <stdio.h> 
 
int main(int argc, char *argv) 
{ 
  struct protoent *pe; 
  pe=getprotobyname("tcp"); 
  printf("Name: %s, Number: %u\n",pe->p_name,pe->p_proto); 
} 
 
Tests are: 
-Test 1: 
gcc tst-libc6.c -o tst-libc6 
ldd tst-libc6 
        libc.so.6 => /lib/libc.so.6 (0x40024000) 
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) 
./tst-libc6 
Name: tcp, Number: 6 
-Test 2: 
gcc tst-libc6.c -o tst-libc6 -ldb 
ldd tst-libc6 
        libc.so.6 => /lib/libc.so.6 (0x40024000) 
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) 
./tst-libc6 
Name: tcp, Number: 6 
-Test 3: 
gcc tst-libc6.c -o tst-libc6 -lnss_db 
ldd tst-libc6 
        libnss_db.so.2 => /lib/libnss_db.so.2 (0x40024000) 
        libc.so.6 => /lib/libc.so.6 (0x4002b000) 
        libnss_files.so.2 => /lib/libnss_files.so.2 (0x4014e000) 
        libdb-3.1.so => /lib/libdb-3.1.so (0x40157000) 
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) 
./tst-libc6 
Name: tcp, Number: 6 
 
So it works and doesn't segfault. Compared to a machine that 
works, I notice that the working one has a glibc 2.3.1 against 
the glibc 2.2.5 that drives the failing one. I will try to upgrade 
glibc, although it worked well for slightly older Apache+PHP 
versions and I have to evaluate posible collateral effects on 
other applications before upgrading glibc from 2.2 to 2.3... 
 
On the working machine, test 2 shows different libraries: 
-Test 2: 
gcc tst-libc6.c -o tst-libc6 -ldb 
ldd tst-libc6 
        libdb-3.3.so => /lib/libdb-3.3.so (0x40025000) 
        libc.so.6 => /lib/libc.so.6 (0x400af000) 
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) 
./tst-libc6 
Name: tcp, Number: 6 
 
Here it includes libdb (as you may expect), while on the first case 
Test2 just links against the same libraries as Test1 (both 
working). Maybe some dependencies in php make libraries to 
behave bogus and make that call to fail... I will try to upgrade 
libraries, but if you know a better method to avoid failure 
without changing them, will be of help (it is a production server, I 
can test new versions of Apache and PHP in parallel with the 
production daemons, but upgrading system libraries is a little 
more dangerous and painful as it is 24/7 service...) 
 
Thank you anyway for your time :-)

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

[2004-10-26 16:36:11] [EMAIL PROTECTED]

This looks suspiciously like a bad glibc installation:

#0  0x00000000 in ?? () 
#1  0x407f9cec in db_open () from /lib/libnss_db.so.2 

I doubt there is a PHP or Apache bug here.  Try a simple program
calling getprotobyname("tcp") to see if that segfaults; try it again
when linked against -ldb.

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

[2004-10-26 15:06:19] david at donpiso dot com

Yes, you're right. There is a Segmentation Violation: 
 
(gdb) run -DSSL -e debug -k start -X 
Starting program: /uxd/apache-server2/bin/httpd -DSSL -e 
debug -k start -X 
[Tue Oct 26 15:03:42 2004] [debug] mod_so.c(247): loaded 
module include_module 
[Tue Oct 26 15:03:42 2004] [debug] mod_so.c(247): loaded 
module deflate_module 
[Tue Oct 26 15:03:42 2004] [debug] mod_so.c(247): loaded 
module log_config_module 
[Tue Oct 26 15:03:42 2004] [debug] mod_so.c(247): loaded 
module env_module 
[Tue Oct 26 15:03:42 2004] [debug] mod_so.c(247): loaded 
module ssl_module 
[Tue Oct 26 15:03:42 2004] [debug] mod_so.c(247): loaded 
module status_module 
[Tue Oct 26 15:03:42 2004] [debug] mod_so.c(247): loaded 
module info_module 
[Tue Oct 26 15:03:43 2004] [debug] mod_so.c(247): loaded 
module negotiation_module 
[Tue Oct 26 15:03:43 2004] [debug] mod_so.c(247): loaded 
module dir_module 
[Tue Oct 26 15:03:43 2004] [debug] mod_so.c(247): loaded 
module alias_module 
[Tue Oct 26 15:03:43 2004] [debug] mod_so.c(247): loaded 
module php4_module 
 
Program received signal SIGSEGV, Segmentation fault. 
0x00000000 in ?? () 
(gdb) bt 
#0  0x00000000 in ?? () 
#1  0x407f9cec in db_open () from /lib/libnss_db.so.2 
#2  0x407f9dac in internal_setent () from /lib/libnss_db.so.2 
#3  0x407f85dd in _nss_db_endprotoent () from 
/lib/libnss_db.so.2 
#4  0x407f8887 in _nss_db_getprotobyname_r () from 
/lib/libnss_db.so.2 
#5  0x403fd080 in getprotobyname_r () from /lib/libc.so.6 
#6  0x403fcf31 in getprotobyname () from /lib/libc.so.6 
#7  0x40551484 in zm_startup_sockets (type=1, 
module_number=4) at 
/uxd/temp/php-4.3.9/ext/sockets/sockets.c:461 
#8  0x405f59b3 in zend_startup_module (module=0x406fa040) 
at /uxd/temp/php-4.3.9/Zend/zend_API.c:1005 
#9  0x405c9294 in php_startup_extensions (ptr=0x40705908, 
count=19) at /uxd/temp/php-4.3.9/main/main.c:1044 
#10 0x4060e54f in php_startup_internal_extensions () at 
main/internal_functions.c:81 
#11 0x405c9845 in php_module_startup (sf=0x407055e0, 
additional_modules=0x407058c0, num_additional_modules=1) 
at /uxd/temp/php-4.3.9/main/main.c:1216 
#12 0x4060c1e6 in php_apache2_startup 
(sapi_module=0x407055e0) at 
/uxd/temp/php-4.3.9/sapi/apache2handler/sapi_apache2.c:289 
#13 0x4060c34d in php_apache_server_startup 
(pconf=0x80a5090, plog=0x80d9160, ptemp=0x80f7958, 
s=0x80a9198) at 
/uxd/temp/php-4.3.9/sapi/apache2handler/sapi_apache2.c:388 
#14 0x0806eaa1 in ap_run_post_config (pconf=0x80a5090, 
plog=0x80d9160, ptemp=0x80f7958, s=0x80a9198) at 
config.c:87 
#15 0x0807364c in main (argc=7, argv=0xbffff854) at 
main.c:606 
#16 0x4033117d in __libc_start_main () from /lib/libc.so.6

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

[2004-10-26 14:47:25] [EMAIL PROTECTED]

Can you try with -X added to the flags passed to run in gdb, to try a
single-process startup.

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

[2004-10-26 13:21:32] david at donpiso dot com

Description:
------------
Apache simply fails to start after loading all modules, it seems it 
exits after loading, probably following initialization phase of the 
modules. No error neither at console nor log files. This happens 
since Apache 2.0.48 + PHP 4.3.4 in this machine, but I succeeded 
to start Apache 2.0.49 + PHP 4.3.6 in a different machine. Now 
tried Apache 2.0.52 + PHP 4.3.9 and still doesn't work. 
 
This is PHP configure: 
./configure --with-apxs2=/usr/local/apache-server2/bin/apxs 
--enable-ctype --with-gd --enable-gd-native-ttf 
--with-jpeg-dir=/usr --with-png --with-gmp --with-pgsql 
--enable-shmop --enable-memory-limit --enable-shared 
--disable-debug --with-zlib=/usr --disable-cgi 
--disable-path-info-check --enable-safe-mode --with-openssl 
--with-bz2 --enable-calendar --enable-exif --enable-ftp 
--enable-sockets --without-mysql 
 
This are Apache modules: 
Server version: Apache/2.0.52 
Server built:   Oct 25 2004 18:59:00 
Server's Module Magic Number: 20020903:9 
Architecture:   32-bit 
Server compiled with.... 
 -D APACHE_MPM_DIR="server/mpm/prefork" 
 -D APR_HAS_SENDFILE 
 -D APR_HAS_MMAP 
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) 
 -D APR_USE_SYSVSEM_SERIALIZE 
 -D APR_USE_PTHREAD_SERIALIZE 
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT 
 -D APR_HAS_OTHER_CHILD 
 -D AP_HAVE_RELIABLE_PIPED_LOGS 
 -D HTTPD_ROOT="/usr/local/apache-server2" 
 -D SUEXEC_BIN="/usr/local/apache-server2/bin/suexec" 
 -D DEFAULT_PIDLOG="logs/httpd.pid" 
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" 
 -D DEFAULT_LOCKFILE="logs/accept.lock" 
 -D DEFAULT_ERRORLOG="logs/error_log" 
 -D AP_TYPES_CONFIG_FILE="conf/mime.types" 
 -D SERVER_CONFIG_FILE="conf/httpd.conf" 
 
The php.ini changes: 
precision    =  14 
y2k_compliance = Off 
output_buffering = 4096 
allow_call_time_pass_reference = Off 
safe_mode_gid = On 
highlight.* 
;max_input_time = 60 
memory_limit = 6M 
error_reporting  =  E_ALL 
display_errors = Off 
log_errors = On 
error_log = /(...)/apache2/logs/php.log 
variables_order = "GPCS" 
register_argc_argv = Off 
post_max_size = 4M 
magic_quotes_gpc = Off 
upload_tmp_dir = /(...)/tmp 
upload_max_filesize = 4M 
;SMTP = localhost 
;sendmail_from = [EMAIL PROTECTED] 
session.cache_expire = 60 
session.use_trans_sid = 1 
 

Actual result:
--------------
Running "gdb httpd" gives: 
GNU gdb 5.2 
 (...) 
This GDB was configured as "i386-slackware-linux"... 
(gdb) run -DSSL -e debug -k start 
Starting program: /uxd/apache-server2/bin/httpd -DSSL -e 
debug -k start 
[Tue Oct 26 13:16:42 2004] [debug] mod_so.c(247): loaded 
module include_module 
[Tue Oct 26 13:16:42 2004] [debug] mod_so.c(247): loaded 
module deflate_module 
[Tue Oct 26 13:16:42 2004] [debug] mod_so.c(247): loaded 
module log_config_module 
[Tue Oct 26 13:16:42 2004] [debug] mod_so.c(247): loaded 
module env_module 
[Tue Oct 26 13:16:42 2004] [debug] mod_so.c(247): loaded 
module ssl_module 
[Tue Oct 26 13:16:42 2004] [debug] mod_so.c(247): loaded 
module status_module 
[Tue Oct 26 13:16:42 2004] [debug] mod_so.c(247): loaded 
module info_module 
[Tue Oct 26 13:16:42 2004] [debug] mod_so.c(247): loaded 
module negotiation_module 
[Tue Oct 26 13:16:42 2004] [debug] mod_so.c(247): loaded 
module dir_module 
[Tue Oct 26 13:16:42 2004] [debug] mod_so.c(247): loaded 
module alias_module 
[Tue Oct 26 13:16:43 2004] [debug] mod_so.c(247): loaded 
module php4_module 
 
Program exited normally. 
 


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


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

Reply via email to