It appears we have a systematic problem in webstack:

$ ldd /usr/apr-util/1.3/lib/apr-util-1/apr_dbd_mysql.so
  libmysqlclient_r.so.15 => /usr/mysql/5.0/lib/mysql/libmysqlclient_r.so.15

$ ldd /usr/php/5.2/modules/mysql.so
  libmysqlclient.so.15 =>        /usr/mysql/5.0/lib/mysql/libmysqlclient.so.15


Any one using both Apache's MySQL (through apr-util)
and mysql through PHP's direct loading will be loading
two separate libraries: libmysqlclient.so and
libmysqlclient_r.so.  The symbols are all the same,
the image is confused, and will segfault.

To fix that, we should link the same mysql client libs
in both APR-UTIL and PHP.  Since APU (and apache) support
threads, that has to be the reentrant/thread-safe version
libmysqlclient_r.so, which implies it's PHP that should
change.

To the best of my knowledge, such a change should be 100%
safe, unless there are PHP applications that link directly
to the wrong MySQL lib version causing the same problem to
resurface elsewhere.  Anyone know if that's a risk?

Possibly the best solution to this would be to fix the
MySQL libs themselves.  Simply drop libmysqlclient.so,
and substitute a symlink to libmysqlclient_r.so in the
MySQL installation.  That way all apps get the
threadsafe/reentrant version, and there is no conflict.

Thoughts?

-- 
Nick Kew

Reply via email to