[Pkg-db-devel] Bug#353812: libdb4.4: DB_ENV->open fails with mutex
error (when not using tls)
david at fries.net
david at fries.net
Tue Feb 21 03:57:22 UTC 2006
Package: libdb4.4
Version: 4.4.20-2
Severity: important
I just upgraded three systems and now Berkeley Database application
will only run when using tls libraries. When compiling it statically,
with a 2.4 kernel, or specifying to use 2.4 libaries it fails to
create a database environment. I wrote a little program to
demonstrate this. It takes the argument of an empty directory.
I jumped a few libdb revisions when upgrading, so I don't know what
revision broke it.
SubSpace:~/programming/c/pam_module/firewall/test$ LD_ASSUME_KERNEL=2.4 ./env_open db_dir
creating environment
verbose DB_VERB_DEADLOCK
verbose DB_VERB_RECOVERY
verbose DB_VERB_REGISTER
verbose DB_VERB_REPLICATION
verbose DB_VERB_WAITSFOR
unable to initialize mutex: Function not implemented
PANIC: Function not implemented
unable to join the environment
Error opening environment: DB_RUNRECOVERY: Fatal error, run database recovery
SubSpace:~/programming/c/pam_module/firewall/test$ ls db_dir
SubSpace:~/programming/c/pam_module/firewall/test$ ./env_open db_dir creating environment
verbose DB_VERB_DEADLOCK
verbose DB_VERB_RECOVERY
verbose DB_VERB_REGISTER
verbose DB_VERB_REPLICATION
verbose DB_VERB_WAITSFOR
opening environment
closing environment
SubSpace:~/programming/c/pam_module/firewall/test$ ldd env_open
linux-gate.so.1 => (0xffffe000)
libdb-4.4.so => /usr/lib/libdb-4.4.so (0xb7deb000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0xb7dd8000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7ca0000)
/lib/ld-linux.so.2 (0xb7ef9000)
SubSpace:~/programming/c/pam_module/firewall/test$ LD_ASSUME_KERNEL=2.4 ldd env_open
linux-gate.so.1 => (0xffffe000)
libdb-4.4.so => /usr/lib/libdb-4.4.so (0xb7e8b000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7e37000)
libc.so.6 => /lib/libc.so.6 (0xb7d13000)
/lib/ld-linux.so.2 (0xb7f99000)
Makefile
----------------------------------------
CFLAGS=-g -Wall
LDFLAGS=-ldb -lpthread
env_open:
----------------------------------------
env_open.c
----------------------------------------
#include <db.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void error_exit(const char *msg, int result)
{
if(!result)
{
printf("%s\n", msg);
return;
}
fprintf(stderr, "Error %s: %s\n", msg, db_strerror(result));
exit(1);
}
int main(int argc, char **argv)
{
DB_ENV *db_environ;
const char *db_home;
if(argc<2)
{
fprintf(stdout, "Usage: %s <option num> db_dir\n", argv[0]);
return 1;
}
db_home=argv[1];
error_exit("creating environment", db_env_create(&db_environ, 0));
db_environ->set_errfile(db_environ, stderr);
error_exit("verbose DB_VERB_DEADLOCK", db_environ->set_verbose(
db_environ, DB_VERB_DEADLOCK, 1));
error_exit("verbose DB_VERB_RECOVERY", db_environ->set_verbose(
db_environ, DB_VERB_RECOVERY, 1));
error_exit("verbose DB_VERB_REGISTER", db_environ->set_verbose(
db_environ, DB_VERB_REGISTER, 1));
error_exit("verbose DB_VERB_REPLICATION", db_environ->set_verbose(
db_environ, DB_VERB_REPLICATION, 1));
error_exit("verbose DB_VERB_WAITSFOR", db_environ->set_verbose(
db_environ, DB_VERB_WAITSFOR, 1));
error_exit("opening environment", db_environ->open(db_environ, db_home,
DB_CREATE | DB_INIT_CDB | DB_INIT_MPOOL, 0600));
error_exit("closing environment", db_environ->close(db_environ, 0));
return 0;
}
----------------------------------------
-- System Information:
Debian Release: testing/unstable
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.14-rc3
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Versions of packages libdb4.4 depends on:
ii libc6 2.3.6-1 GNU C Library: Shared libraries an
libdb4.4 recommends no packages.
-- no debconf information
More information about the Pkg-db-devel
mailing list