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

(ITS#8263) Broken cursor tracking in mdb_cursor_put()



Full_Name: Hallvard B Furuseth
Version: mdb.master, 8b46dcc26d1e9897ab1da3a4a164cad4a4479a52
OS: Linux x86_64
URL: ftp://ftp.openldap.org/incoming/Hallvard-Furuseth-151005.c
Submission from: (NULL) (81.191.45.5)
Submitted by: hallvard


The test program catches several cursor tracking bugs.

$ ./a.out 250
mn_flags = 0
mn_flags = 4
mn_flags = 4
a.c:36: run: Assertion `d1.mv_size == ksz && d1.mv_data == d2.mv_data' failed.
Aborted

$ ./a.out 500
mn_flags = 0
mn_flags = 4
mn_flags = 6
a.c:36: run: Assertion `d1.mv_size == ksz && d1.mv_data == d2.mv_data' failed.
Aborted

$ ./a.out 1000
mn_flags = 0
mn_flags = 6
a.c:34: mdb_cursor_get(c1, &k1, &d1, MDB_GET_CURRENT): Invalid argument
Aborted

It works when the DUPSORT sub-DB is created immediately:

$ ./a.out 1500
mn_flags = 6 <repeated 22 times>