slap_sl_free dumps core here because it gets passed a bogus bv_val (from
the ma_value field of an instance of struct MatchingRuleAssertion). As far
as I can see, the original bv_val gets clobbered in get_comp_filter
(servers/slapd/component.c), line 350:
bv->bv_val = cav.cav_ptr;
Commenting that line out fixes the core dump. I suspect that the
assignment is there to support nested component filters (see lines 1039 et
seq. in the same file).
Earlier versions of OpenLDAP had different logic in slap_sl_free, which
skipped the offending pointer (and thus probably leaving a memory leak).
i.