[Nsspampgsql-devel] Bug#488979: libnss-pgsql2: locks up when DB connection fails

david david at dasz.at
Wed Jul 2 14:23:04 UTC 2008


Package: libnss-pgsql2
Version: 1.4.0debian-2
Severity: normal

Dear maintainers!

I've set up libnss-pgsql2 according to the html docs (using/fixing the
example conf and a bit of source reading) to properly work when run as
root:

| tom:~# ls -la /etc/nss-pgsql*
| -rw------- 1 root root  672 Jul  2 12:54 /etc/nss-pgsql-root.conf
| -rw-r--r-- 1 root root 2159 Jul  2 12:35 /etc/nss-pgsql.conf
| tom:~# getent passwd | wc -l
| 3537
| tom:~# getent shadow | wc -l
| 3537
| tom:~# getent group | wc -l
| 7711
| tom:~#

Running "getent passwd" and "getent group" works as normal user as
expected, but "getent shadow" hangs after trying to reach the DB:

| david at tom:~$ getent shadow
| 
| Could not connect to database
| ^C


| david at tom:~$ strace -f getent shadow
[...]
| set_tid_address(0x2b5852d46770)         = 22769
| set_robust_list(0x2b5852d46780, 0x18)   = 0
| futex(0x7fff582c44bc, 0x81 /* FUTEX_??? */, 1) = 0
| rt_sigaction(SIGRTMIN, {0x2b585315c2d0, [], SA_RESTORER|SA_SIGINFO,
0x2b5853165360}, NULL, 8) = 0
| rt_sigaction(SIGRT_1, {0x2b585315c350, [],
SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x2b5853165360}, NULL, 8) = 0
| rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
| getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
| munmap(0x2b5852800000, 7480)            = 0
| open("/etc/nss-pgsql-root.conf", O_RDONLY) = -1 EACCES (Permission
denied)
| write(2, "\nCould not connect to database\n", 31
| Could not connect to database
| ) = 31
| futex(0x2b5853156680, 0x80 /* FUTEX_??? */, 2 ^C<unfinished ...>

I then recompiled the package with "dh_strip -k" and used gdb to get a
backtrace by attaching to the locked process:

| tom:/# gdb -p 15671
[...]
| (gdb) info thread
|   1 Thread 0x2ab27946e6e0 (LWP 15671)  0x00002ab27988bd04 in
__lll_lock_wait () from /lib/libpthread.so.0
| (gdb) bt full
| #0  0x00002ab27988bd04 in __lll_lock_wait () from /lib/libpthread.so.0
| No symbol table info available.
| #1  0x00002ab279887918 in _L_lock_104 () from /lib/libpthread.so.0
| No symbol table info available.
| #2  0x00002ab279887280 in pthread_mutex_lock () from /lib/libpthread.so.0
| No symbol table info available.
| #3  0x00002ab27967b4a2 in _nss_pgsql_setspent () at interface.c:241
|         retval = NSS_STATUS_TRYAGAIN
| #4  0x00002ab27967b585 in _nss_pgsql_getspent_r (result=0x2ab27946af80,
buffer=0x60f140 "\f$­û", buflen=1024, errnop=0x2ab27946e698) at
interface.c:275
|         retval = NSS_STATUS_UNAVAIL
| #5  0x00002ab2791fa48c in __nss_getent_r () from /lib/libc.so.6
| No symbol table info available.
| #6  0x00002ab2791efe8c in getspent_r@@GLIBC_2.2.5 () from /lib/libc.so.6
| No symbol table info available.
| #7  0x00002ab2791fa290 in __nss_getent () from /lib/libc.so.6
| No symbol table info available.
| #8  0x00002ab2791ef4c2 in getspent () from /lib/libc.so.6
| No symbol table info available.
| #9  0x000000000040238d in ?? ()
| No symbol table info available.
| #10 0x0000000000402f4e in ?? ()
| No symbol table info available.
| #11 0x00002ab2791441c4 in __libc_start_main () from /lib/libc.so.6
| No symbol table info available.
| #12 0x0000000000401fe9 in ?? ()
| No symbol table info available.
| #13 0x00007fff31b9f4e8 in ?? ()
| No symbol table info available.
| #14 0x0000000000000000 in ?? ()
| No symbol table info available.


Due to various uninteresting external factors, I'm running this
non-standard kernel:
| tom:/# uname -a
| Linux tom 2.6.22-3-vserver-amd64 #1 SMP Mon Nov 12 18:26:47 UTC 2007
x86_64 GNU/Linux


Please contact me if you need any further information or testing.

Regards, DavidS








More information about the Nsspampgsql-devel mailing list