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

RE: Index corruption and crash in back-ldbm (ITS#2348)



I've committed a fix to CVS HEAD as described in my previous message. Please
test.

I hardcoded dbc_maxid at 4 and dbc_maxindirect at 8 so I could test with a
small data set.

The proof of the fix for me is running slapindex under gdb, with a breakpoint
on idl_store. When run after a fresh slapadd, slapindex should be a no-op and
thus should never invoke idl_store. If it does, then a bug remains. It runs
cleanly for me.

  -- 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: vek@pharmapartners.nl [mailto:vek@pharmapartners.nl]

> On Wed, 5 Mar 2003 hyc@highlandsun.com wrote:
>
> > Date: Wed, 5 Mar 2003 23:08:18 GMT
> > From: hyc@highlandsun.com
> > To: openldap-its@OpenLDAP.org
> > Subject: RE: Index corruption and crash in back-ldbm (ITS#2348)
> >
> > Ignore that previous message. Your bug analysis and patch
> are exactly right.
> > I am committing it to both 2.1 and 2.0.
> >
>
> It wasn't complete, though.  The events shown below can be reproduced
> by running slapindex without erasing the indexes first, thus when
> all the id entries already exist.  If you lower
> db->dbc_maxids while testing
> it would happen much sooner.
>
>
> Must select the block where id is greater OR EQUEAL to the lower
> bound for this block.  If id is equal to the lower bound and
> the previous block is selected for insert then the following message
> may be triggered.
>
>    "idl_insert_key: id %ld is already in next block\n"