BDB crash while opening database
694549Jul 29 2009 — edited Aug 7 2009Hi,
I am using jni version of BDB in a transactional environment. In our production environment, It crashed today with following trace:
*** glibc detected *** /usr/java/jdk1.6.0_13/bin/java: corrupted double-linked list: 0x00002aab3cbcc320 ***
======= Backtrace: =========
/lib64/libc.so.6[0x3c4aa7175c]
/lib64/libc.so.6(cfree+0x8c)[0x3c4aa74e7c]
/usr/local/BerkeleyDB.4.7/lib/libdb_java-4.7.so(__lock_detect+0x5cd)[0x2aab3b03f82d]
/usr/local/BerkeleyDB.4.7/lib/libdb_java-4.7.so(__lock_put+0x86)[0x2aab3b03c886]
/usr/local/BerkeleyDB.4.7/lib/libdb_java-4.7.so(__bam_read_root+0x111)[0x2aab3afc8591]
/usr/local/BerkeleyDB.4.7/lib/libdb_java-4.7.so(__db_open+0x3a6)[0x2aab3b06d7d6]
/usr/local/BerkeleyDB.4.7/lib/libdb_java-4.7.so(__db_master_open+0xdd)[0x2aab3b0500fd]
/usr/local/BerkeleyDB.4.7/lib/libdb_java-4.7.so(__fop_subdb_setup+0x56)[0x2aab3b0926c6]
/usr/local/BerkeleyDB.4.7/lib/libdb_java-4.7.so(__db_open+0x136)[0x2aab3b06d566]
Is there a known issue around it? Any help will be much appreciated.
Other question is around recovery. Once it crashed, I was trying to run db_checkpoint before bringing the environment up(with db_recovery) again and db_checkpoint did not come back. Is it because of possible recovery required ?
Thanks,
Shishir
============= db Env flags ============
envConfig.setAllowCreate(true);
envConfig.setInitializeCache(true);
envConfig.setCacheSize(512*1024*1024);
envConfig.setInitializeLocking(true);
envConfig.setTransactional(true);
envConfig.setThreaded(true);//enabled by default
envConfig.setLockDetectMode(LockDetectMode.DEFAULT);
envConfig.setTxnMaxActive(500000);
envConfig.setMaxMutexes(1000000);
envConfig.setMaxLockers(30000);
envConfig.setMaxLocks(30000);
envConfig.setMaxLockObjects(30000);
envConfig.setMultiversion(true);
envConfig.setLogRegionSize(1048576);
envConfig.setLogBufferSize(4194304);
envConfig.setMaxLogFileSize(20971520);
envConfig.setRunRecovery(true);
envConfig.setJoinEnvironment(true);
========== db config ======================
dbConfig.setType(DatabaseType.BTREE);
dbConfig.setAllowCreate(true);
dbConfig.setTransactional(true);
dbConfig.setMultiversion(true);