On 09/08/2012 10:04 AM, Howard Chu wrote:
Frank Swasey wrote:
Today at 4:34am, Howard Chu wrote:
There are only two places in libmdb that return ENOSPC. Both of them imply that there's a bug in the library. It would be helpful to run under a debugger with breakpoints set on both locations, to see which has occurred.
I see that is in mdb_node_add and mdb_update_key. If you will provide guidance (I'm not versed in gdb), I will see what I can find for you. I have preserved the environment, so I can do this debugging repeatedly.
Attach gdb to the running slapd, set breakpoints, then trigger the bug:
% gdb <path to slapd> <PID of running slapd> (gdb) list mdb_node_add (gdb) break 4952 <-- line number of 1st "return ENOSPC;" statement (gdb) break 5355 (gdb) continue
(Use the correct source line numbers for your source tree.) Trigger the bug. When gdb breaks:
(gdb) bt full
That's all.
It is the one in mdb_node_add. Attached is the script captured gdb session. As you'll see in the capture, the line in mdb_node_add is 4806 in my source tree.