[pkg-firebird-general] SCH_validate error caused Lock Manager
Out of Room
Damyan Ivanov
dam at modsoftsys.com
Tue Mar 6 23:39:33 CET 2007
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
- -=| Aldo Caruso, 6.03.2007 22:16 |=-
> [...]
> SCH_validate -- not entered.
>
> Helen Borrie suggested me that this has to do mainly with conflicts in
> the thread scheduler, which arise when the Linux kernel implements NPTL
> but the firebird package use the old threading model.
Thank you for spending the time to look after the problem.
> In fact, not ony this problem appears in my Debian server, but also in
> an old Fedora Core 2 server whose Firebird package is not NPTL.
>
> As you, Damyan, suspected previously, NPTL has to do with the problem.
>
> In a previous answer you told me that, after inspecting the binary with
> the "$ldd fbserver" command, you concluded that firebird-super-server
> build for debian was not NPTL.
I've found more robust way for detecting whether given binary is
NPTL-capable or not. See below.
> On the other hand, in my debian server I
> have the following situation:
>
> Debian Etch.
> kernel: 2.6.18-4-686 #1 SMP
> NPTL 2.3.6 ( I got this info with the command "getconf
> GNU_LIBPTHREAD_VERSION" )
Same here (Debian/sid amd64 and i686)
> So, fbserver uses pthread (old model) while the kernel uses NPTL, and
> hence, as Helen says, SCH_validate error can happen, blocking the server
> ( you have to restart it ).
>
> My question is:
> Why is there only one alternative in Debian instead of two as there are
> in the original .tar.gz or .rpm packages from Firebird Super Server (
> old threaded model and NTPL ) ? Looking at Firebird official download
> page, I found they have two choices for Super Server.
Generally, my intention is to provide only NPTL binaries. Recent Debian
kernels are NPTL-enabled and given that mixing NPTL and non-NPTL stuff
creates problems (as seen from your research), I see no point in
providing non-NPTL binaries.
> If this is the case for Debian, the only solution I have is using
> Classic Server, which, I hope, doesn't conflict with the threading model.
Not at all. Classic is even better on multi-processor machines (but has
no shared cache like -super).
Now. I've downloaded the "normal" and the "nptl" pre-compiled binaries
from sourceforge and tried to find some mark, by which I'd be able to
tell which is which.
ldd output gives no differences. However, inspecting bin/fbserver with
'objdump -T' gives some interesting clues (binaries for i686):
$ objdump -T nptl/bin/fbserver | grep pthread | head -5
08051724 DF *UND* 00000038 GLIBC_2.3.2 pthread_cond_wait
08051734 DF *UND* 0000017a GLIBC_2.0 pthread_detach
08051744 DF *UND* 00000009 GLIBC_2.3.2 pthread_cond_timedwait
08051a14 DF *UND* 00000031 GLIBC_2.0 pthread_condattr_init
08051a44 DF *UND* 0000014b GLIBC_2.1 pthread_create
$ objdump -T normal/bin/fbserver | grep pthread | head -5
08051874 DF *UND* 0000017a GLIBC_2.0 pthread_detach
080518d4 DF *UND* 000000b6 GLIBC_2.0 pthread_getspecific
08051b54 DF *UND* 00000007 GLIBC_2.0 pthread_condattr_init
08051b84 DF *UND* 0000014b GLIBC_2.1 pthread_create
08051bc4 DF *UND* 0000001e GLIBC_2.0 pthread_cond_init
This led me to the supposition that the "normal" fbserver links only to
libc symbols, versioned 2.0 and 2.1. The nptl-enabled fbserver also uses
2.3.2 version of libc symbols, which I suppose are the NPTL-enabled ones.
Let's see:
$ objdump -T normal/bin/fbserver|grep pthread|cut -c34-45|sort|uniq -c
20 GLIBC_2.0
10 GLIBC_2.1
$ objdump -T normal/bin/fbserver|grep pthread|cut -c34-45|sort|uniq -c
11 GLIBC_2.0
10 GLIBC_2.1
5 GLIBC_2.3.2
Yep. This seems to be it.
Now we only have to find out the output of the above command on
firebird2-super-server:
(cut's -c param uses different offsets, since this is on amd64)
$ objdump -T /usr/lib/firebird2/bin/fbserver|grep pthread|cut
- -c50-61|sort|uniq -c
16 GLIBC_2.2.5
5 GLIBC_2.3.2
So it seems Debian's super-server is NPTL-enabled, at least on amd64. It
would be nice if you can confirm this on i686 (I have no i686 machine
that I can install -super on. I use -classic generally).
Since Debian packages (seem to) use NPTL as well as the kernel, another
possible source is the newer GLIBC version used. Perhaps there is some
sort of incompatibility between firebird 1.5.3 and libc6 (2.3.6.ds1-13).
Unfortunately, I think it is not feasible to build firebrid .debs using
older libc.
I believe 1.5 codebase is mostly on "light maintenance" state, meaning
that I suspect noone of firebird developers would want to waste time to
debug/fix the problem. Can you try 2.0? You can find debian packages of
2.0.1rc1 here[1].
I understand that migrating production database to 2.0 may not be an
option to you, but this is the only thing I can think of at the moment.
Perhaps, if you can reproduce the problem in a test environment, that
could be then migrated to 2.0 for the purpose of checking whether the
problem will go away.
dam
[1] deb ftp://ftp.modsoftsys.net/public experimental main
- --
Damyan Ivanov Modular Software Systems
phone +359(2)928-2611, 929-3993 fax +359(2)920-0994
mobile +359(88)856-6067 JID dam at jabber.minus273.org
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFF7e2lHqjlqpcl9jsRAnO3AJ4kX1EiS+GCLBn5eakR30CassRCJQCggZFp
3EXEHjLqG0Yb6iWaeG8ZWLg=
=BAEx
-----END PGP SIGNATURE-----
More information about the pkg-firebird-general
mailing list