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