By the way, I through ladebug at the ctl_cyrudb program. The stack trace looks like the following:
0 0x3000004f624 in __db_errcall(0x3ffc008a2b0, 0x0, 0x57, 0x0, 0x0, 0x0)
in /usr/local/BerkeleyDB.4.1/lib/libdb-4.1.so #1 0x3000004f4b0 in __db_err(0x3ffc008a2b0, 0x0, 0x57, 0x0, 0x0, 0x0) in /usr/local/BerkeleyDB.4.1/lib/libdb-4.1.so #2 0x30000071f00 in __db_e_attach(0x3ffc008a2b0, 0x0, 0x57, 0x0, 0x0, 0x0) in /usr/local/BerkeleyDB.4.1/lib/libdb-4.1.so #3 0x30000072170 in __db_e_remove(0x3ffc008a2b0, 0x0, 0x57, 0x0, 0x0, 0x0) in /usr/local/BerkeleyDB.4.1/lib/libdb-4.1.so #4 0x3000006d770 in UnknownProcedure3FromFile59(0x3ffc008a2b0, 0x0, 0x57, 0x0, 0x0, 0x0) in /usr/local/BerkeleyDB.4.1/lib/libdb-4.1.so #5 0x3000006d064 in __dbenv_open(0x3ffc008a2b0, 0x0, 0x57, 0x0, 0x0, 0x0) in /usr/local/BerkeleyDB.4.1/lib/libdb-4.1.so #6 0x1200312a0 in init(dbdir=0x11fffaee8="/var/imap/db", myflags=1) "cyrusdb_berkeley.c":177 #7 0x120030a38 in cyrusdb_init() "cyrusdb.c":80 #8 0x1200281c8 in libcyrus_init() "libcyr_cfg.c":149 #9 0x120008b88 in cyrus_init(alt_config=0x0, ident=0x140000170 ="ctl_cyrusdb") "global.c":168 #10 0x120007fe4 in main(argc=2, argv=0x11fffc018) "ctl_cyrusdb.c":218 #11 0x120007b38 in __start(0x3ffc008a2b0, 0x0, 0x57, 0x0, 0x0, 0x0) in ctl_cyrusdb
The error produced is "DBERROR db4: unable to join the environment". It looks like it tries to initialize the database by opening /var/imap/db and never comes back... the process is aborted somewhere in the call.
Scott
--On Friday, July 25, 2003 1:28 AM -0400 Scott Adkins <[EMAIL PROTECTED]> wrote:
I have tried everything to get DB stuff working... I just don't know what is going on. Once again, I am on a Tru64 5.1a cluster, was using BerkDB 4.0.14, then switched to 4.1.25. This is with Cyrus IMAP 2.2.1-beta.
Basically, I get the following errors (just the ctl_cyrusdb lines):
DBERROR db4: unable to join the environment DBERROR: dbenv->open '/var/imap/db' failed: Operation would block DBERROR: init() on berkeley DBERROR: reading /var/imap/db/skipstamp, assuming the worst: No such file or directory checkpointing cyrus databases archiving database file: /var/imap/annotations.db archiving database file: /var/imap/mailboxes.db done checkpointing cyrus databases
If I run the ctl_cyrusdb command by hand (basically, logged in as cyrus and run 'ctl_cyrusdb -r'), I eventually get the following error:
1434184:./ctl_cyrusdb: /sbin/loader: Fatal Error: call to unresolved symbol from /usr/local/BerkeleyDB.4.1/lib/libdb-4.1.so (pc=0x30000016418)
Running ldd against ctl_cyrusdb gives me the following:
Main => ctl_cyrusdb libsasl2.so => /usr/local/sasl-2.1.15/lib/libsasl2.so libdb-4.1.so => /usr/local/BerkeleyDB.4.1/lib/libdb-4.1.so libssl.so => /usr/local/ssl/lib/libssl.so libcrypto.so => /usr/local/ssl/lib/libcrypto.so libc.so => /usr/shlib/libc.so
As I mentioned above, I was using BerkDB 4.0.14, and decided to try out 4.1.25 to see if anything changed... it didn't. Soooo...
I recompiled Cyrus to with the following configuration:
export CFLAGS="-g2" ./configure --with-sasl=/usr/local/sasl-2.1.15 \ --with-dbdir=/usr/local/BerkeleyDB.4.1 \ --with-ucdsnmp=/usr/local/net-snmp-4.2.1 \ --with-openssl=/usr/local/ssl \ --with-egd-socket=/var/run/egd-pool \ --with-perl=/usr/local/bin/perl \ --enable-listext --with-lock=flock \ --with-duplicate-db=skiplist \ --with-tls-db=skiplist \ --with-pts-db=skiplist
Basically, nothing uses berkeley or berkely_nosync anymore, choosing skiplist as the replacement (I am just trying to get something to work right now, not worry about performance). I thought that maybe I could compile without linking in BerkDB at all, but configure won't let me do it... if I comment out the lines in configure, then I get errors at compile time because it tries to compile cyrusdb_berkeley.c, which requires the libs in order to get compiled... even if it supposedly isn't being used.
Okay, so I got it compiled and freshly installed. Running ldd against the binaries shows the same output as above. When I start the Cyrus server up, I get the same errors!!! I thought I disabled BerkeleyDB by specifying skiplist for everything? So, why am I still getting the "db4: unable to join the environment" errors and the follow-up errors regarding /var/imap/db?
Has anyone else seen this problem? I know that the last person who posted something about this problem (back in March) was also running on Tru64 and never did get a response.
The next thing I can try is to use BerkelyDB 3.x and see what happens. It obviously works with Cyrus IMAP 2.0.16, so... After that, I will be hacking the BerkDB stuff *out* of the code and solve the problem that way...
Scott -- +-----------------------------------------------------------------------+ Scott W. Adkins http://www.cns.ohiou.edu/~sadkins/ UNIX Systems Engineer mailto:[EMAIL PROTECTED] ICQ 7626282 Work (740)593-9478 Fax (740)593-1944 +-----------------------------------------------------------------------+ PGP Public Key available at http://www.cns.ohiou.edu/~sadkins/pgp/
-- +-----------------------------------------------------------------------+ Scott W. Adkins http://www.cns.ohiou.edu/~sadkins/ UNIX Systems Engineer mailto:[EMAIL PROTECTED] ICQ 7626282 Work (740)593-9478 Fax (740)593-1944 +-----------------------------------------------------------------------+ PGP Public Key available at http://www.cns.ohiou.edu/~sadkins/pgp/
pgp00000.pgp
Description: PGP signature