I just don't understand...

Scott Adkins adkinss at ohio.edu
Fri Jul 25 01:28:54 EDT 2003

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 \

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

      Scott W. Adkins                http://www.cns.ohiou.edu/~sadkins/
   UNIX Systems Engineer                  mailto:adkinss at ohio.edu
        ICQ 7626282                 Work (740)593-9478 Fax (740)593-1944
     PGP Public Key available at http://www.cns.ohiou.edu/~sadkins/pgp/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 231 bytes
Desc: not available
Url : https://lists.andrew.cmu.edu/mailman/private/info-cyrus/attachments/20030725/4d110e48/attachment.bin

More information about the Info-cyrus mailing list