php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Doc Bug #12450 Clash when modules loaded together which define the same symbols (mysql,recode)
Submitted: 2001-07-28 14:19 UTC Modified: 2002-06-09 18:28 UTC
From: troels at arvin dot dk Assigned:
Status: Closed Package: Documentation problem
PHP Version: 4.1.1 OS: Red Hat Linux 6.2-7.2
Private report: No CVE-ID: None
 [2001-07-28 14:19 UTC] troels at arvin dot dk
PHP segfaults if recode.so (php's recode extension as a shared library) is loaded _after_ the imap or mysql extensions. Re-ordering the php.ini file so that the "extension=recode.so" line is the first "extension=..."-line stops the segfaults.

Recode versions tested: 3.5d, 3.6.

PHP versions tested: 4.0.6.

config.nice:
============

#! /bin/sh
#
# Created by configure

"./configure" \
"--prefix=/usr" \
"--libdir=/usr/lib/php4" \
"--includedir=/usr/include" \
"--datadir=/usr/share/php" \
"--with-config-file-path=/etc" \
"--enable-discard-path" \
"--enable-inline-optimization" \
"--enable-magic-quotes" \
"--enable-track-vars" \
"--enable-memory-limit" \
"--enable-wddx" \
"--enable-bcmath" \
"--enable-sigchild" \
"--with-xml" \
"--with-mm" \
"--with-openssl" \
"--enable-ftp=shared" \
"--enable-exif=shared" \
"--with-gd=shared,/usr" \
"--with-ttf" \
"--enable-gd-imgstrttf" \
"--with-png-dir=/usr" \
"--with-jpeg-dir=/usr" \
"--enable-sysvsem=shared" \
"--enable-sysvshm=shared" \
"--enable-shmop=shared" \
"--with-unixODBC=shared" \
"--with-mysql=shared,/usr" \
"--with-ldap=shared" \
"--with-pgsql=shared" \
"--with-gettext=shared" \
"--with-pspell=shared" \
"--with-snmp=shared" \
"--enable-ucd-snmp-hack" \
"--with-sybase-ct=shared,/usr" \
"--with-pdflib=shared" \
"--with-oci8=shared" \
"--with-swf=shared,/home/troels/rpm/BUILD/php-4.0.6/swflib" \
"--enable-sockets=shared" \
"--with-gmp=shared" \
"--with-dom=shared" \
"--with-qtdom=shared,/usr/lib/qt-2.3.0" \
"--with-iconv=shared" \
"--with-curl=shared" \
"--enable-apc=shared" \
"--with-ming=shared" \
"--with-imlib=shared" \
"--with-recode=shared" \
"--with-zlib=/usr" \
"$@"

php.ini:
========

extension_dir   =       /usr/lib/php4

;; Global PHP defaults

warn_plus_overloading   =       On      ; warn if the + operator is used with strings
track_errors            =       On      ; Store the last error/warning message in $php_errormsg (boolean)
track_vars              =       On      ; enable the $HTTP_*_VARS[] arrays, where * is one of

magic_quotes_gpc        =       On      ; magic quotes for incoming GET/POST/Cookie data
                                        ; many people think that the system is a pain in the
                                        ; a**, but it probably does represent a security
                                        ; feature for in-experienced PHP developers. Turn it
                                        ; off if you don't want PHP to mess with your incoming
                                        ; variables.
include_path    = ".:/usr/share/php/PEAR:/usr/share/php/imlib"
session.save_path = "/var/state/php"
extension=php_apc.so
extension=domxml.so
extension=exif.so
extension=ftp.so
extension=gd-with_gif.so
extension=gettext.so
extension=gmp.so
extension=iconv.so
extension=imlib.so
extension=ldap.so
extension=pdf.so
extension=pgsql.so
extension=pspell.so
extension=sablot.so
extension=snmp.so
extension=sockets.so
extension=swf.so
extension=sybase_ct.so
extension=sysvshm.so
extension=sysvsem.so
extension=shmop.so
extension=odbc.so
extension=curl.so
extension=mysql.so
extension=recode.so


Back-trace:
===========

GNU gdb 19991004
Copyright 1998 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-redhat-linux"...
Core was generated by `php'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /lib/libpam.so.0...done.
Reading symbols from /lib/libdl.so.2...done.
Reading symbols from /usr/lib/libssl.so.0...done.
Reading symbols from /usr/lib/libcrypto.so.0...done.
Reading symbols from /usr/lib/libz.so.1...done.
Reading symbols from /lib/libcrypt.so.1...done.
Reading symbols from /lib/libresolv.so.2...done.
Reading symbols from /lib/libm.so.6...done.
Reading symbols from /lib/libnsl.so.1...done.
Reading symbols from /lib/libc.so.6...done.
Reading symbols from /lib/ld-linux.so.2...done.
Reading symbols from /usr/lib/php4/php_apc.so...done.
Reading symbols from /usr/lib/php4/domxml.so...done.
Reading symbols from /usr/lib/libxml2.so.2...done.
Reading symbols from /usr/lib/php4/exif.so...done.
Reading symbols from /usr/lib/php4/ftp.so...done.
Reading symbols from /usr/lib/php4/gd-with_gif.so...done.
Reading symbols from /usr/lib/libttf.so.2...done.
Reading symbols from /usr/lib/libpng.so.2...done.
Reading symbols from /usr/lib/libjpeg.so.62...done.
Reading symbols from /usr/gd-with_gif/lib/libgd.so.1.8...done.
Reading symbols from /usr/lib/php4/gettext.so...done.
Reading symbols from /usr/lib/php4/gmp.so...done.
Reading symbols from /usr/lib/libgmp.so.3...done.
Reading symbols from /usr/lib/php4/iconv.so...done.
Reading symbols from /usr/lib/php4/imlib.so...done.
Reading symbols from /usr/lib/libImlib2.so.1...done.
Reading symbols from /usr/lib/php4/ldap.so...done.
Reading symbols from /usr/lib/libldap.so.1...done.
Reading symbols from /usr/lib/liblber.so.1...done.
Reading symbols from /usr/lib/php4/pdf.so...done.
Reading symbols from /usr/lib/libgd.so.1...done.
Reading symbols from /usr/lib/libtiff.so.3...done.
Reading symbols from /usr/lib/libpdf.so.1...done.
Reading symbols from /usr/lib/php4/pgsql.so...done.
Reading symbols from /usr/lib/libpq.so.2...done.
Reading symbols from /usr/lib/php4/pspell.so...done.
Reading symbols from /usr/lib/libpspell.so.4...done.
Reading symbols from /usr/lib/libltdl.so.0...done.
Reading symbols from /usr/lib/libpspell-modules.so.1...done.
Reading symbols from /usr/lib/libstdc++-libc6.1-1.so.2...done.
Reading symbols from /usr/lib/php4/sablot.so...done.
Reading symbols from /usr/lib/libexpat.so.0...done.
Reading symbols from /usr/lib/libsablot.so.0...done.
Reading symbols from /usr/lib/php4/snmp.so...done.
Reading symbols from /usr/lib/libsnmp.so.0...done.
Reading symbols from /usr/lib/gconv/ISO8859-1.so...done.
Reading symbols from /usr/lib/php4/sockets.so...done.
Reading symbols from /lib/libnss_files.so.2...done.
Reading symbols from /usr/lib/php4/swf.so...done.
Reading symbols from /usr/lib/php4/sybase_ct.so...done.
Reading symbols from /usr/lib/php4/sysvshm.so...done.
Reading symbols from /usr/lib/php4/sysvsem.so...done.
Reading symbols from /usr/lib/php4/shmop.so...done.
Reading symbols from /usr/lib/php4/odbc.so...done.
Reading symbols from /usr/lib/libodbc.so.1...done.
Reading symbols from /usr/lib/php4/curl.so...done.
Reading symbols from /usr/lib/libcurl.so.2...done.
Reading symbols from /usr/lib/php4/mysql.so...done.
Reading symbols from /usr/lib/libmysqlclient.so.10...done.
Reading symbols from /usr/lib/php4/recode.so...done.
Reading symbols from /usr/lib/librecode.so.0...done.
#0  0x1f91 in ?? ()
(gdb)

System information:
===================
Red Hat 6.2 with all official RH 6.2 patches on a dual-PIII with 2 gig RAM.


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-01-11 17:19 UTC] lobbin@php.net
Can you:
  - try this with 4.1.1
  - provide a usefull backtrace: 
    http://bugs.php.net/bugs-generating-backtrace.php
 [2002-01-16 11:10 UTC] edink@php.net
I can reproduce this:

Starting program: /usr/bin/php -v

Program received signal SIGSEGV, Segmentation fault.
0x00001f91 in ?? () at eval.c:41
41      eval.c: No such file or directory.
        in eval.c
(gdb) bt
#0  0x00001f91 in ?? () at eval.c:41
#1  0x409d4e9e in find_alias (outer=0x81ae688, name=0x40a8bca0 "data",
    find_type=SYMBOL_CREATE_CHARSET) at names.c:299
#2  0x409d66d0 in register_all_modules (outer=0x81ae688) at outer.c:457
#3  0x409d6cdd in recode_new_outer (auto_abort=true) at outer.c:550
#4  0x408f8f17 in zm_startup_recode (type=1, module_number=18) at recode.c:79
#5  0x0808d3b2 in php_dl (file=0x816c0a0, type=1, return_value=0xbffff6e0) at dl.c:177
#6  0x08062f4e in php_load_function_extension_cb (arg=0x816c0a0) at php_ini.c:185
#7  0x080e8fc5 in zend_llist_apply (l=0x814f7bc,
    func=0x8062f2c <php_load_function_extension_cb>) at zend_llist.c:186
#8  0x08063235 in php_ini_delayed_modules_startup () at php_ini.c:302
#9  0x08060dbd in php_module_startup (sf=0x8146400) at main.c:946
#10 0x0805f009 in main (argc=2, argv=0xbffff994) at cgi_main.c:445
#11 0x405b8507 in __libc_start_main (main=0x805ee98 <main>, argc=2,
    ubp_av=0xbffff994, init=0x805d0f8 <_init>, fini=0x8122610 <_fini>,
    rtld_fini=0x4000dc14 <_dl_fini>, stack_end=0xbffff98c)
    at ../sysdeps/generic/libc-start.c:129

 [2002-04-24 01:18 UTC] sniper@php.net
This is not PHP bug. Both c-client and recode have their
own hash_lookup() function. And both mysql and recode have their own hash_insert() functions.

--Jani

 [2002-04-24 13:55 UTC] mfischer@php.net
Ok, thinking about what sniper wrote I think it's _absolutely_ essential [okok, but .. ;-) ] to get this documented somewhere that the mentioned module do CLASH if you load them together. Hm. Jani, is this all you found out or can you add some more information to that so that the docteam can elaborate this a bit ... ?
 [2002-04-24 14:13 UTC] sniper@php.net
Yes, this was all. One way to get it work is to compile
recode as shared extension and load it as the first extension in php.ini. I didn't test if the other extensions
need to be shared too in this case. 

There might also be other libraries which have same symbols in them. But c-client and libmysql definately have.
(I think the bundled libmysqlclient works..didn't test that)

--Jani

 [2002-06-09 18:28 UTC] mfischer@php.net
This bug has been fixed in CVS. You can grab a snapshot of the
CVS version at http://snaps.php.net/. In case this was a documentation 
problem, the fix will show up soon at http://www.php.net/manual/.
In case this was a PHP.net website problem, the change will show
up on the PHP.net site and on the mirror sites.
Thank you for the report, and for helping us make PHP better.


 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Mon May 05 22:01:30 2025 UTC