ondra(a)mistotebe.net wrote:
On Fri, Jul 14, 2017 at 09:02:18AM +0000, russell(a)samknows.com
wrote:
> 59687dbf ch_calloc of 1 elems of 0 bytes failed
> slapd: ../../../../servers/slapd/ch_malloc.c:107: ch_calloc: Assertion
> `0' failed.
> Aborted
If no indexes remain, mdb_attr_dbs_open calls ch_calloc(1, 0), but
ch_malloc/ch_calloc do not expect that.
I'd fix ch_calloc/ch_malloc, but depends whether that's the right thing
to do, is it intentional to assert when a zero size is requested?
Yes.
ber_memalloc has an assert there if LDAP_MEMORY_DEBUG has the second
bit
set. Hallvard, Howard?
If it's fine to change the ch_ functions, then a patch is available at
ftp://ftp.openldap.org/incoming/Ondrej-Kuznik-20170714-ITS-8472.patch
No.
In this case, back-mdb never expects the number of indexed attributes to be
zero. (At the least, objectclass must always have an equality index.) back-mdb
can be patched to avoid this particular crash. But as a rule, you're expected
to make all changes to the index config in a single Modify op. Not delete all
the indices in one operation, and then define new indices in a new operation.
--
-- Howard Chu
CTO, Symas Corp.
http://www.symas.com
Director, Highland Sun
http://highlandsun.com/hyc/
Chief Architect, OpenLDAP
http://www.openldap.org/project/