https://bugs.openldap.org/show_bug.cgi?id=8977
--- Comment #13 from Quanah Gibson-Mount quanah@openldap.org --- (In reply to Quanah Gibson-Mount from comment #8)
--On Thursday, June 27, 2019 8:56 PM +0000 quanah@symas.com wrote:
--On Thursday, June 27, 2019 8:35 PM +0000 hyc@symas.com wrote:
No, because order is irrelevant for these.
Cool, thanks! I'll continue on with deeper testing then. :)
Given the current implementation of OpenLDAP, this feature is impossible to use w/o recompiling OpenLDAP when a change to the IDL size is made. This is because LDAP_PVT_THREAD_STACK_SIZE must be adjusted as well and that requires a recompile.
The default size for LDAP_PVT_THREAD_STACK_SIZE is:
( 1 * 1024 * 1024 * sizeof(void *) )
which works for an IDL size of 16 (2^16) which is 65536.
If you change the IDL size, say to 22, then the new IDL size is: 4,194,304. We then use this difference to find the offset we need to adjust LDAP_PVT_THREAD_STACK_SIZE by:
4194304/65536 = 64
So it needs to be 64 time larger:
( 64 * 1024 * 1024 * sizeof(void *) )
Generally, this feature is simply unusuable (currently) as a tunable given the requirement for recompiling OpenLDAP to use it.
I believe the above explanation is incorrect, so want to update it.
1024*1024^2 = 1,048,576
This appears to work with an idlexp of 20, which is also 1,048,576
So really what is required is that the LDAP_PVT_THREAD_STACK_SIZE_VALUE total needs to match the 2^idlexp value.
So, 2^22 is 4,194,304, so in this case, the LDAP_PVT_THREAD_STACK_SIZE_VALUE would need to be recompiled as ( 4 * 1024 * 1024 * sizeof(void *) )