Michael.Heep@o2.com wrote:
Hello Pierangelo,
ando@sys-net.it wrote:
The above had nothing to do with your problem. Your problem is related to the fact that you intermixed overlay and database configuration statements, so the idletimeout statement after the accesslog overlay instantiation was causing invalid memory write (beyond the private data of the accesslog overlay instead of in the private data of the bdb database) resulting in heap corruption.
You meant the limits option, not the idletimeout, right? Because when I remove it slapd starts and runs properly. But now I'm quite lost here. With that statement I intended to disable the default limits for all users below ou=CNO-LDC when viewing the accesslog (as it's bound to grow beyond the 500 entries sooner or later). The manpage lists limits as a general database option, so I assumed placing it at the end of the accesslog db options would impose these limits on it. Now where would be the proper placement to achive that? Under 2.3.33 in my test environment with an accesslog > 500 entries and the limits directive at just this place in the conf everything worked as expected.
The limits was just a false track. It was idlcachesize to trigger the dangling memory access, but the root cause is the config statement ordering which triggered something much more subtle: basically, if database statements follow overlay instantiation, slapd is fooled into writing to the database (in this case back-bdb) private structure using a pointer to the overlay's (in this case accesslog) structure. This is now fixed in HEAD (thanks to Howard), but backporting to re23 may not be trivial, so please stick with strict ordering of configure statements.
p.
Ing. Pierangelo Masarati OpenLDAP Core Team
SysNet s.n.c. Via Dossi, 8 - 27100 Pavia - ITALIA http://www.sys-net.it ------------------------------------------ Office: +39.02.23998309 Mobile: +39.333.4963172 Email: pierangelo.masarati@sys-net.it ------------------------------------------