Hi!

I'm using PHP 4.2.0 on MandrakeLinux Cooker (post 8.2).

When I use the RPM of PHP 4.2.0 which is compiled like so:

%define external_modules bcmath bz2 calendar curl dba_bundle dbx dbase
exif filepro ftp gd gettext gmp imap ldap libphp_java mcrypt mhash ming
mysql odbc pdf pgsql posix readline recode session sablot shmop snmp
sybase sysvsem sysvshm unixODBC t1lib yp zlib zip xml xslt domxml
vpopmail pspell

./configure \
        --disable-static \
        --disable-debug \
        --disable-rpath \
        --enable-pic \
        --enable-inline-optimization \
        --prefix=%{_prefix} \
        --with-config-file-path=%{_sysconfdir} \
        --enable-magic-quotes \
        --enable-debugger \
        --enable-track-vars \
        --enable-session \
        --with-exec-dir=%{_bindir} \
        --with-versioning \
        --with-mod_charset \
        --with-expat-dir=%{_prefix} \
        --with-regex=php \
        --without-dba \
        --without-gdbm \
        --without-db2 \
        --without-db3 \
        --enable-force-cgi-redirect \
        --enable-track-vars \
        --enable-trans-sid \
        --enable-safe-mode \
        --with-ctype \
        --with-ttf \
        --with-freetype-dir=%{_prefix} \
        --with-openssl=%{_prefix} \
        --without-aspell \
        --without-kerberos \
        `for i in %{external_modules}; do echo --without-${i} --disable-${i}; done`

As you can see, that's ripped from the SPEC file for the RPM.  Mandrake
tries to build the main PHP binary/mod_php with as little support for
anything as possible and compiles everything needed as external modules.

The mysql.so extension is compiled like this:

%{phpsource}/buildext mysql php_mysql.c "-lmysqlclient_r -lmysqlclient
-lpthread -lz" \
        "-DCOMPILE_DL_MYSQL -DHAVE_MYSQL"

recode.so is compiled like this:

%{phpsource}/buildext recode recode.c "/usr/lib/librecode.a
-lrecode" \
        "-DCOMPILE_DL_RECODE -DHAVE_LIBRECODE -L/usr/lib"

Everything get's compiled with no error messages at all.  However, when
I enable both mysql.so and recode.so in php.ini like below, php (binary)
dumps core:

extension=mysql.so
extension=recode.so

However, when I change the order (ie. I enable the recode.so extension
before mysql.so), PHP starts up just fine.

I noticed this behaviour in 4.1.2 and 4.2.0.  I'm not sure if other
versions are affected as well.

Any ideas about why this is happening?  Below is a strace of a dumping
php.  Here's a backtrace of the same PHP:

[root@teich root]# gdb php
GNU gdb 5.1.1
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-mandrake-linux"...(no debugging symbols found)...
(gdb) run
Starting program: /usr/bin/php 
(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols 
found)...
(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols 
found)...
(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols 
found)...[New Thread 1024 (LWP 13318)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (LWP 13318)]
0x00001f91 in ?? ()
(gdb) backtrace
#0  0x00001f91 in ?? ()
#1  0x404edcde in find_alias () from /usr/lib/php/extensions/recode.so

Thanks for any hints!


execve("/usr/bin/php", ["php"], [/* 41 vars */]) = 0
uname({sys="Linux", node="teich.garten.digitalprojects.com", ...}) = 0
brk(0)                                  = 0x804caf4
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=66073, ...}) = 0
mmap2(NULL, 66073, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40013000
close(3)                                = 0
open("/usr/lib/libphp_common-4.2.0.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\253"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=939460, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40024000
mmap2(NULL, 1027884, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40025000
mprotect(0x40100000, 130860, PROT_NONE) = 0
mmap2(0x40100000, 45056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xdb) = 
0x40100000
mmap2(0x4010b000, 85804, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 
-1, 0) = 0x4010b000
close(3)                                = 0
open("/lib/libdl.so.2", O_RDONLY)       = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\31\0"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=8396, ...}) = 0
mmap2(NULL, 11392, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40120000
mprotect(0x40122000, 3200, PROT_NONE)   = 0
mmap2(0x40122000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1) = 
0x40122000
close(3)                                = 0
open("/lib/libpam.so.0", O_RDONLY)      = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\24"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=29120, ...}) = 0
mmap2(NULL, 32200, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40123000
mprotect(0x4012a000, 3528, PROT_NONE)   = 0
mmap2(0x4012a000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x6) = 
0x4012a000
close(3)                                = 0
open("/lib/libcrypt.so.1", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\10"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=19904, ...}) = 0
mmap2(NULL, 182812, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4012b000
mprotect(0x40130000, 162332, PROT_NONE) = 0
mmap2(0x40130000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x4) = 
0x40130000
mmap2(0x40131000, 158236, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 
-1, 0) = 0x40131000
close(3)                                = 0
open("/usr/lib/libssl.so.0", O_RDONLY)  = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\215\0"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=179280, ...}) = 0
mmap2(NULL, 184096, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40158000
mprotect(0x40182000, 12064, PROT_NONE)  = 0
mmap2(0x40182000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x29) = 
0x40182000
close(3)                                = 0
open("/usr/lib/libcrypto.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 A\2\000"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=776176, ...}) = 0
mmap2(NULL, 792256, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40185000
mprotect(0x40238000, 59072, PROT_NONE)  = 0
mmap2(0x40238000, 49152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xb2) = 
0x40238000
mmap2(0x40244000, 9920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 
0) = 0x40244000
close(3)                                = 0
open("/lib/libresolv.so.2", O_RDONLY)   = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260$\0"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=60544, ...}) = 0
mmap2(NULL, 69376, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40247000
mprotect(0x40255000, 12032, PROT_NONE)  = 0
mmap2(0x40255000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xe) = 
0x40255000
mmap2(0x40256000, 7936, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 
0) = 0x40256000
close(3)                                = 0
open("/lib/libm.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\00007\0\000"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=134760, ...}) = 0
mmap2(NULL, 137380, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40258000
mprotect(0x40279000, 2212, PROT_NONE)   = 0
mmap2(0x40279000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x20) = 
0x40279000
close(3)                                = 0
open("/lib/libnsl.so.1", O_RDONLY)      = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\2407\0"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=77152, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4027a000
mmap2(NULL, 84572, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4027b000
mprotect(0x4028d000, 10844, PROT_NONE)  = 0
mmap2(0x4028d000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x12) = 
0x4028d000
mmap2(0x4028e000, 6748, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 
0) = 0x4028e000
close(3)                                = 0
open("/lib/libpthread.so.0", O_RDONLY)  = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 B\0\000"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=555870, ...}) = 0
mmap2(NULL, 85364, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40290000
mprotect(0x4029e000, 28020, PROT_NONE)  = 0
mmap2(0x4029e000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xe) = 
0x4029e000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\203\1"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=1263864, ...}) = 0
mmap2(NULL, 1280608, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x402a5000
mprotect(0x403d4000, 39520, PROT_NONE)  = 0
mmap2(0x403d4000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x12e) = 
0x403d4000
mmap2(0x403da000, 14944, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 
-1, 0) = 0x403da000
close(3)                                = 0
mprotect(0x40185000, 733184, PROT_READ|PROT_WRITE) = 0
mprotect(0x40185000, 733184, PROT_READ|PROT_EXEC) = 0
munmap(0x40013000, 66073)               = 0
getrlimit(0x3, 0xbffff734)              = 0
setrlimit(RLIMIT_STACK, {rlim_cur=2044*1024, rlim_max=RLIM_INFINITY}) = 0
getpid()                                = 13252
rt_sigaction(SIGRTMIN, {0x40299070, [], 0x4000000}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x40298380, [], 0x4000000}, NULL, 8) = 0
rt_sigaction(SIGRT_2, {0x40299100, [], 0x4000000}, NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [RTMIN], NULL, 8) = 0
_sysctl({{CTL_KERN, KERN_VERSION}, 2, 0xbffff4ec, 32, (nil), 0}) = 0
rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_DFL}, 8) = 0
brk(0)                                  = 0x804caf4
brk(0x804cb24)                          = 0x804cb24
brk(0x804d000)                          = 0x804d000
brk(0x804e000)                          = 0x804e000
brk(0x804f000)                          = 0x804f000
brk(0x8050000)                          = 0x8050000
open("/usr/share/locale/locale.alias", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2601, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40013000
read(3, "# Locale name alias data base.\n#"..., 4096) = 2601
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0x40013000, 4096)                = 0
open("/usr/share/locale/de_DE/LC_CTYPE", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=201916, ...}) = 0
mmap2(NULL, 201916, PROT_READ, MAP_PRIVATE, 3, 0) = 0x403de000
close(3)                                = 0
brk(0x8051000)                          = 0x8051000
open("./php.ini", O_RDONLY)             = -1 ENOENT (No such file or directory)
open("/etc/php.ini", O_RDONLY)          = 3
getcwd("/root", 4096)                   = 6
lstat64("/etc", {st_mode=S_IFDIR|0755, st_size=5120, ...}) = 0
lstat64("/etc/php.ini", {st_mode=S_IFREG|0644, st_size=20787, ...}) = 0
brk(0x8056000)                          = 0x8056000
ioctl(3, SNDCTL_TMR_TIMEBASE, 0xbffff490) = -1 ENOTTY (Inappropriate ioctl for device)
fstat64(3, {st_mode=S_IFREG|0644, st_size=20787, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40013000
read(3, "[PHP]\n\n;;;;;;;;;;;;;;;;;;;\n; Abo"..., 8192) = 8192
read(3, "\t; C, E & S respectively, often "..., 8192) = 8192
brk(0x8057000)                          = 0x8057000
read(3, " number of decimal digits for al"..., 8192) = 4403
read(3, "", 4096)                       = 0
brk(0x8058000)                          = 0x8058000
read(3, "", 8192)                       = 0
ioctl(3, SNDCTL_TMR_TIMEBASE, 0xbfffe8b0) = -1 ENOTTY (Inappropriate ioctl for device)
close(3)                                = 0
munmap(0x40013000, 4096)                = 0
brk(0x8059000)                          = 0x8059000
brk(0x805a000)                          = 0x805a000
brk(0x805b000)                          = 0x805b000
brk(0x805c000)                          = 0x805c000
brk(0x805d000)                          = 0x805d000
brk(0x805e000)                          = 0x805e000
brk(0x805f000)                          = 0x805f000
brk(0x8060000)                          = 0x8060000
brk(0x8061000)                          = 0x8061000
brk(0x8062000)                          = 0x8062000
brk(0x8063000)                          = 0x8063000
brk(0x8064000)                          = 0x8064000
brk(0x8065000)                          = 0x8065000
brk(0x8066000)                          = 0x8066000
brk(0x8067000)                          = 0x8067000
brk(0x8068000)                          = 0x8068000
brk(0x8069000)                          = 0x8069000
brk(0x806a000)                          = 0x806a000
brk(0x806b000)                          = 0x806b000
brk(0x806c000)                          = 0x806c000
brk(0x806d000)                          = 0x806d000
brk(0x806e000)                          = 0x806e000
brk(0x806f000)                          = 0x806f000
brk(0x8070000)                          = 0x8070000
brk(0x8071000)                          = 0x8071000
brk(0x8073000)                          = 0x8073000
brk(0x8074000)                          = 0x8074000
open("/usr/lib/php/extensions/mysql.so", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000(\0\000"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=35748, ...}) = 0
mmap2(NULL, 34868, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40013000
mprotect(0x4001b000, 2100, PROT_NONE)   = 0
mmap2(0x4001b000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x8) = 
0x4001b000
close(3)                                = 0
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=66073, ...}) = 0
mmap2(NULL, 66073, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40410000
close(3)                                = 0
open("/usr/lib/libmysqlclient_r.so.10", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000y\0\000"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=198928, ...}) = 0
mmap2(NULL, 198812, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40421000
mprotect(0x4043f000, 75932, PROT_NONE)  = 0
mmap2(0x4043f000, 77824, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1e) = 
0x4043f000
close(3)                                = 0
open("/usr/lib/libmysqlclient.so.10", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240o\0"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=194736, ...}) = 0
mmap2(NULL, 194240, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40452000
mprotect(0x4046f000, 75456, PROT_NONE)  = 0
mmap2(0x4046f000, 77824, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1d) = 
0x4046f000
close(3)                                = 0
open("/lib/libz.so.1", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\30"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=56076, ...}) = 0
mmap2(NULL, 59200, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40482000
mprotect(0x4048f000, 5952, PROT_NONE)   = 0
mmap2(0x4048f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xc) = 
0x4048f000
close(3)                                = 0
munmap(0x40410000, 66073)               = 0
brk(0x8075000)                          = 0x8075000
brk(0x8077000)                          = 0x8077000
open("/usr/lib/php/extensions/recode.so", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@\1\4\000"..., 1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=1320804, ...}) = 0
mmap2(NULL, 1320268, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40491000
mprotect(0x405ce000, 21836, PROT_NONE)  = 0
mmap2(0x405ce000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x13d) = 
0x405ce000
close(3)                                = 0
brk(0x8078000)                          = 0x8078000
mprotect(0x40491000, 1298432, PROT_READ|PROT_WRITE) = 0
mprotect(0x40491000, 1298432, PROT_READ|PROT_EXEC) = 0
brk(0x807a000)                          = 0x807a000
--- SIGSEGV (Segmentation fault) ---
+++ killed by SIGSEGV +++


Alexander Skwar
-- 
How to quote:   http://learn.to/quote (german) http://quote.6x.to (english)
Homepage:       http://www.iso-top.de      |    Jabber: [EMAIL PROTECTED]
   iso-top.de - Die günstige Art an Linux Distributionen zu kommen
                       Uptime: 1 hour 23 minutes

--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to