[Date Prev][Date Next] [Chronological] [Thread] [Top]

mdb broken under OpenBSD



I was interested in using openldap under OpenBSD; they currently have
mdb disabled as they say it is broken. That OS lacks a unified buffer        
cache, so mdb can only be used with the MDB_WRITEMAP option enabled, but
supposedly theoretically it should work with that. I tried running the
mdb tests, and it immediately segfaults:

Program terminated with signal 11, Segmentation fault.

2773            flags |= env->me_flags & MDB_WRITEMAP;                                              

It looks like mdb_txn_begin is being passed a NULL env? I haven't started
poking around yet to see why that might be, but I thought I'd just toss this
out there in case an expert had a thought before I spent a lot of time on
it :). Thanks...


#0  0x000016210db057c5 in mdb_txn_begin (env=0x0, parent=0x0, flags=0, ret=0x16210df6fec0)
    at /usr/obj/ports/openldap-2.4.44/openldap-2.4.44/servers/slapd/back-mdb/../../../libraries/libl
mdb/mdb.c:2773
        txn = (MDB_txn *) 0xf
        ntxn = (MDB_ntxn *) 0x0
        rc = 0
        size = 0
        tsize = 32639
#1  0x000016210db224df in mdb_tool_entry_put (be=0x1623ccbdd200, e=0x16235a80c008,         [47/9401]
    text=0x7f7ffffeeb90)
    at /usr/obj/ports/openldap-2.4.44/openldap-2.4.44/servers/slapd/back-mdb/tools.c:624
        rc = 0
        mdb = (struct mdb_info *) 0x1623c3580000
        op = {o_hdr = 0x0, o_tag = 0, o_time = 0, o_tincr = 0, o_bd = 0x0, o_req_dn = {bv_len = 0,
    bv_val = 0x0}, o_req_ndn = {bv_len = 0, bv_val = 0x0}, o_request = {oq_add = {
      rs_modlist = 0x0, rs_e = 0x0}, oq_bind = {rb_method = 0, rb_cred = {bv_len = 0,
        bv_val = 0x0}, rb_edn = {bv_len = 0, bv_val = 0x0}, rb_ssf = 0, rb_mech = {bv_len = 0,
        bv_val = 0x0}}, oq_compare = {rs_ava = 0x0}, oq_modify = {rs_mods = {rs_modlist = 0x0,
        rs_no_opattrs = 0 '\0'}, rs_increment = 0}, oq_modrdn = {rs_mods = {rs_modlist = 0x0,
        rs_no_opattrs = 0 '\0'}, rs_deleteoldrdn = 0, rs_newrdn = {bv_len = 0, bv_val = 0x0},
      rs_nnewrdn = {bv_len = 0, bv_val = 0x0}, rs_newSup = 0x0, rs_nnewSup = 0x0}, oq_search = {
      rs_scope = 0, rs_deref = 0, rs_slimit = 0, rs_tlimit = 0, rs_limit = 0x0, rs_attrsonly = 0,
      rs_attrs = 0x0, rs_filter = 0x0, rs_filterstr = {bv_len = 0, bv_val = 0x0}}, oq_abandon = {
      rs_msgid = 0}, oq_cancel = {rs_msgid = 0}, oq_extended = {rs_reqoid = {bv_len = 0,
        bv_val = 0x0}, rs_flags = 0, rs_reqdata = 0x0}, oq_pwdexop = {rs_extended = {rs_reqoid = {
          bv_len = 0, bv_val = 0x0}, rs_flags = 0, rs_reqdata = 0x0}, rs_old = {bv_len = 0,
        bv_val = 0x0}, rs_new = {bv_len = 0, bv_val = 0x0}, rs_mods = 0x0, rs_modtail = 0x0}},
  o_abandon = 0, o_cancel = 0, o_groups = 0x0, o_do_not_cache = 0 '\0', o_is_auth_check = 0 '\0',
  o_dont_replicate = 0 '\0', o_acl_priv = ACL_NONE, o_nocaching = 0 '\0',
  o_delete_glue_parent = 0 '\0', o_no_schema_check = 0 '\0', o_no_subordinate_glue = 0 '\0',
  o_ctrlflag = '\0' <repeats 31 times>, o_controls = 0x0, o_authz = {sai_method = 0, sai_mech = {
      bv_len = 0, bv_val = 0x0}, sai_dn = {bv_len = 0, bv_val = 0x0}, sai_ndn = {bv_len = 0,
      bv_val = 0x0}, sai_ssf = 0, sai_transport_ssf = 0, sai_tls_ssf = 0, sai_sasl_ssf = 0},
  o_ber = 0x0, o_res_ber = 0x0, o_callback = 0x0, o_ctrls = 0x0, o_csn = {bv_len = 0,
    bv_val = 0x0}, o_private = 0x0, o_extra = {slh_first = 0x0}, o_next = {stqe_next = 0x0}}
        ohdr = {oh_opid = 0, oh_connid = 0, oh_conn = 0x0, oh_msgid = 0, oh_protocol = 0,
  oh_tid = 0x0, oh_threadctx = 0x0, oh_tmpmemctx = 0x0, oh_tmpmfuncs = 0x0, oh_counters = 0x0,
  oh_log_prefix = '\0' <repeats 255 times>}
        __func__ = "mdb_tool_entry_put"
#2  0x000016210dac8329 in slapadd (argc=8, argv=0x7f7ffffeee58)
    at /usr/obj/ports/openldap-2.4.44/openldap-2.4.44/servers/slapd/slapadd.c:456
        textbuf = '\0' <repeats 255 times>
        textlen = 256
        erec = {e = 0x16235a80c008, lineno = 1, nextline = 18}
        bvtext = {bv_len = 256, bv_val = 0x7f7ffffeebd0 ""}
        thr = 0x16210dd8cd78
        id = 140187732470848
        prev = (Entry *) 0x0
        ldifrc = 1
        rc = 0
        stat_buf = {st_mode = 4294896512, st_dev = 32639, st_ino = 140187732470584,
  st_nlink = 990767968, st_uid = 5667, st_gid = 0, st_rdev = 0, st_atim = {tv_sec = 179931522,
    tv_nsec = 48}, st_mtim = {tv_sec = 24342436749856, tv_nsec = 24341375494144}, st_ctim = {
    tv_sec = 24343378665241, tv_nsec = 140187732470664}, st_size = 0, st_blocks = 140187732470664,
  st_blksize = 990767968, st_flags = 5667, st_gen = 0, __st_birthtim = {tv_sec = 179915312,
    tv_nsec = 48}}
#3  0x000016210da02d7a in main (argc=8, argv=0x7f7ffffeee58)
    at /usr/obj/ports/openldap-2.4.44/openldap-2.4.44/servers/slapd/main.c:664
        i = 0
        no_detach = 0
        rc = 1
        urls = 0x0
        username = 0x0
        groupname = 0x0
        sandbox = 0x0
        syslogUser = 160
        pid = 8
        waitfds = {331804096, 5667}
        g_argc = 8
        g_argv = (char **) 0x7f7ffffeee58
        configfile = 0x0
        configdir = 0x0
        serverName = 0x7f7ffffef122 "slapd"
        serverMode = 1
        scp = (struct sync_cookie *) 0x0
        scp_entry = (struct sync_cookie *) 0x0
        debug_unknowns = (char **) 0x0
        syslog_unknowns = (char **) 0x0
        serverNamePrefix = 0x16210ddb6ec5 ""
        l = 1
        slapd_pid_file_unlink = 0
        slapd_args_file_unlink = 0
        firstopt = 1
        __func__ = "main"