YDL4.0 ==> YDL-3.01 portability issues

Stefan Bruda bruda at cs.ubishops.ca
Mon Dec 13 12:29:40 MST 2004


At 12:27 -0500 on 2004-12-13 Joseph E. Sacco, Ph.D. wrote:
 >
 >         041213 11:38:00  mysqld started
 >         041213 11:38:00 [ERROR] bdb:  unable to initialize mutex:
 >         Function not implemented

Mutices (mutexes?) are implemented in glibc, and to be more precise in
the pthread library.  The error suggests that YDL 3's glibc is
linuxthreads-based, but you built the application on an NPTL-based
glibc.

Explanation: there are two different implementations of threads out
there, the old one called linuxthreads and a newer one called NPTL
(Native POSIX Thread Library).  NPTL is more or less POSIX compliant
(better than linuxthreads by a fair margin) and is supposed to be
faster (though only marginally faster in my experience).  You can
build glibc with support for the first, the second, or both.
Relatively recently NPTL has been deemed stable so most (all?) recent
binary distributions build this into glibc; some ommit linuxthreads
altogether (which has become recently the recommended way to go under
Gentoo for instance).  As far as I see things from your "function not
implemented" error message, it seems likely that you built your
application against NPTL (the YDL 4 box) but you are attempting to run
it against a glibc that does not include NPTL support (the YDL 3
machine).  Ergo, pthread functions (including pthread_mutex_lock() and
the like) look differently.

I have seen lots of wonderful error messages from glibc
incompatibilities, yours might just be one of them.

Stefan

-- 
If it was so, it might be; and if it were so, it would be; but as
it isn't, it ain't. That's logic.
    --Lewis Carroll, Through the Looking-Glass


More information about the yellowdog-general mailing list