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

Re: slapd: attr.c:481: attr_merge: Assertion

On 03/16/2012 11:51 AM, Howard Chu wrote:
Michael Ströder wrote:

What does it mean when slapd aborts with this assertion?

------------------------------------ snip
slapd: attr.c:481: attr_merge: Assertion `( nvals == ((void *)0)&&
(*a)->a_nvals == (*a)->a_vals ) || ( nvals != ((void *)0)&& ( (
== ((void *)0)&& (*a)->a_nvals == ((void *)0) ) || ( (*a)->a_nvals !=
(*a)->a_vals ) ) )' failed.
------------------------------------ snip

In the source code there is a FIXME remark. Does that remark mean the
assertion is still not as strict as required or that the assertion
might be
too strict?

Maybe Ando remembers why he wrote FIXME there. Looking at the git log,
the original commit was actually wrong. Ando fixed it later, perhaps he
just forgot to remove the "FIXME" afterward.

I do not :), sorry. However, as far as I can recall, this was related to making sure that attributes without normalizer were treated consistently. It *should* always happen when handled by the frontend or the main backends, but occasionally, when that assert was added, there were overlays and other modules that did not, possibly because poorly maintained. For example, for quite some time seldom used pieces of code kept popping up which did not update a_numvals way after it was introduced.

Cheers, p.

Pierangelo Masarati
Associate Professor
Dipartimento di Ingegneria Aerospaziale
Politecnico di Milano