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

RE: search_candidates on win32



back-bdb is very stack-hungry, you need at least 2MB stack per thread to use
it at all. I haven't looked into how to control the size of a thread's stack
on Windows. If you can't set it (configure tries to set it to 16MB on
pthreads-based systems) then you should compile filterindex.c
with -DLDAP_PVT_THREAD_STACK_SIZE=0 to force it to use malloc instead.

  -- Howard Chu
  Chief Architect, Symas Corp.       Director, Highland Sun
  http://www.symas.com               http://highlandsun.com/hyc
  Symas: Premier OpenSource Development and Support

> -----Original Message-----
> From: owner-openldap-devel@OpenLDAP.org
> [mailto:owner-openldap-devel@OpenLDAP.org]On Behalf Of Kervin Pierre
> Sent: Sunday, March 17, 2002 11:34 PM
> To: openldap-devel
> Subject: search_candidates on win32
>
>
> Hello,
>
> I can reliably crash slapd on win32 by running a ldapsearch that is not
> scope == base. CVS-14MAR02
>
> I think the problem is in the search_candidates() function in
> servers/slapd/back-bdb/search.c ...
>
> static int search_candidates( ... )
> {
>          int rc;
>          Filter          f, scopef, rf, xf;
>          ID              tmp[BDB_IDL_UM_SIZE];
>          AttributeAssertion aa_ref;
> ...
>
> The declaration 'ID tmp[BDB_IDL_UM_SIZE];' causes a stack overflow.
>
> On my system, this evaluates to 'unsigned long tmp[131070]'.
>
> My question is, isn't that array to big?  Can someone shed some light on
> this?
>
>
> --Kervin
>
>
> --
> http://linuxquestions.org/ - Ask linux questions, give linux help.
> http://splint.org/ - Write safe C code. splint source-code analyzer.