Groups | Search | Server Info | Login | Register
Groups > comp.databases.berkeley-db > #21
| Newsgroups | comp.databases.berkeley-db |
|---|---|
| Date | 2014-09-18 08:11 -0700 |
| Message-ID | <36342634-57a8-4c60-9011-898ae75e2a29@googlegroups.com> (permalink) |
| Subject | DB segfault on close, close method has null pointer ? |
| From | Tim Putz <tim.putz@gmail.com> |
Small Berkeley DB test program:
#include <db.h>
#include <string.h>
#include <stdio.h>
#include <sys/stat.h>
DB *db;
char dbpath[128] = "/home/v801480/C/jape.db";
char key[128] = "key";
char data[128] = "data";
int ret;
int main (int argc, char **argv) {
ret = db_create(&db, NULL, 0);
ret = db->open (db, NULL, dbpath, NULL, DB_HASH, DB_CREATE, S_IWUSR|S_IXUSR|S_IRGRP|S_IWGRP);
ret = db->put (db, NULL, (DBT *)key, (DBT *)data, DB_APPEND);
// ret = dbfile->del (db, NULL, (DBT *)key, 0);
ret = db->close(db, 0);
}
Compiled as so
gcc -g berk.c -Llibs/lib -ldb-5.3
Segfault on db->close, I think because the "close" method pointer is null (wherea the put method has legit pointer )?
20 ret = db->open (db, NULL, dbpath, NULL, DB_HASH, DB_CREATE, S_IWUSR|S_IXUSR|S_IRGRP|S_IWGRP);
(gdb) p *db
$1 = {pgsize = 0, db_append_recno = 0, db_feedback = 0, dup_compare = 0, app_private = 0x0, dbenv = 0x601010, type = 6297664,
mpf = 0x5, mutexp = 0x6023b0, fname = 0x0, dname = 0x0, open_flags = 0, fileid = '\000' <repeats 19 times>, adj_fileid = 0,
log_filename = 0x0, meta_pgno = 0, lid = 0, cur_lid = 0, associate_lid = 0, handle_lock = {off = 0, ndx = 0, gen = 0,
mode = DB_LOCK_NG}, cl_id = 0, timestamp = 0, my_rskey = {data = 0x0, size = 0, ulen = 0, dlen = 0, doff = 0, flags = 0},
my_rkey = {data = 0x0, size = 0, ulen = 0, dlen = 0, doff = 0, flags = 0}, my_rdata = {data = 0x0, size = 0, ulen = 0, dlen = 0,
doff = 0, flags = 0}, saved_open_fhp = 0x0, dblistlinks = {le_next = 0x0, le_prev = 0x0}, free_queue = {tqh_first = 0x0,
tqh_last = 0x0}, active_queue = {tqh_first = 0x0, tqh_last = 0x0}, join_queue = {tqh_first = 0x0, tqh_last = 0x0},
s_secondaries = {lh_first = 0x0}, s_links = {le_next = 0x0, le_prev = 0x0}, s_refcnt = 6299104, s_callback = 0,
s_primary = 0x601df0, api_internal = 0x0, bt_internal = 0x601e00, h_internal = 0x0, q_internal = 0x0, xa_internal = 0x0,
associate = 0, close = 0, cursor = 0, del = 0, dump = 0, err = 0, errx = 0, fd = 0, get = 0, pget = 0x602230,
get_byteswapped = 0x6022b0, get_cachesize = 0x6022e0, get_dbname = 0, get_encrypt_flags = 0x602300,
get_env = 0x7ffff7d49070 <__db_associate_pp>, get_errfile = 0x7ffff7d46470 <__db_associate_foreign_pp>,
Compiled DB stuff via the provided make (uses libtool). Could this have anything to do with it ? RHEL 2.6.32-358.11.1.el6.x86_64
Thanks,
Tim
Back to comp.databases.berkeley-db | Previous | Next | Find similar
DB segfault on close, close method has null pointer ? Tim Putz <tim.putz@gmail.com> - 2014-09-18 08:11 -0700
csiph-web