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

Re: (ITS#4614) slapcat segfault with subordinate



On Fri, Jul 14, 2006 at 09:15:14PM +0000, hyc@symas.com wrote:
> >> That's interesting, especially since  line 632 explicitly checks for a 
> >> NULL here and bails out. You may have to set a breakpoint and step thru 
> >> that function to see why line 632 didn't prevent this SEGV.
> >>     
> >
> >         if (!glueBack || !glueBack->be_entry_open || !glueBack->be_entry_first ||
> >                 glueBack->be_entry_open (glueBack, glueMode) != 0)
> >                 return NOID;
> >
> >         return glueBack->be_entry_first (glueBack);
> >
> > glueBack is not 0x0 when it enters this "if". It's 0x0 after the
> > glueBack->be_entry_open call. This points to glue_tool_entry_open, which always
> > returns zero
> 
> Need to see your slapd.conf; glue_tool_entry_open should only ever get 
> called once at program startup, not anywhere in the midst of traversing 
> the DBs.

This is glueBack->bd_info right on that "if" line, the second time it is
reached. On the first time, it displayed the contents of one of the database.
It's about to segfault:

(gdb) p *glueBack->bd_info
$9 = {bi_type = 0x8141f80 "over", bi_init = 0x80cdad0 <bdb_back_initialize>, bi_config = 0, bi_open = 0x80c53e0 <glue_open>, 
  bi_close = 0x80c53a0 <glue_close>, bi_destroy = 0, bi_db_init = 0x80ce250 <bdb_db_init>, bi_db_config = 0x80c60d0 <over_db_config>, 
  bi_db_open = 0x80c5820 <over_db_open>, bi_db_close = 0x80c5830 <over_db_close>, bi_db_destroy = 0x80c5f60 <over_db_destroy>, 
  bi_op_bind = 0x80c5ed0 <over_op_bind>, bi_op_unbind = 0x80c5eb0 <over_op_unbind>, bi_op_search = 0x80c5e90 <over_op_search>, 
  bi_op_compare = 0x80c5e70 <over_op_compare>, bi_op_modify = 0x80c5e50 <over_op_modify>, bi_op_modrdn = 0x80c5e30 <over_op_modrdn>, 
  bi_op_add = 0x80c5e10 <over_op_add>, bi_op_delete = 0x80c5df0 <over_op_delete>, bi_op_abandon = 0x80c5dd0 <over_op_abandon>, 
  bi_op_cancel = 0x80c5db0 <over_op_cancel>, bi_extended = 0x80c5d90 <over_op_extended>, bi_operational = 0x80c5d70 <over_aux_operational>, 
  bi_chk_referrals = 0x80c5d50 <over_aux_chk_referrals>, bi_chk_controls = 0x80c5d30 <over_aux_chk_controls>, bi_entry_get_rw = 0x80f6ce0 <bdb_entry_get>, 
  bi_entry_release_rw = 0x80c5300 <glue_entry_release_rw>, bi_has_subordinates = 0x80d3d30 <bdb_hasSubordinates>, 
  bi_connection_init = 0x80c5c00 <over_connection_init>, bi_connection_destroy = 0x80c5be0 <over_connection_destroy>, 
  bi_tool_entry_open = 0x80c4050 <glue_tool_entry_open>, bi_tool_entry_close = 0x80c40a0 <glue_tool_entry_close>, 
  bi_tool_entry_first = 0x80c5120 <glue_tool_entry_first>, bi_tool_entry_next = 0x80c5210 <glue_tool_entry_next>, 
  bi_tool_entry_get = 0x80c40d0 <glue_tool_entry_get>, bi_tool_entry_put = 0x80c5050 <glue_tool_entry_put>, 
  bi_tool_entry_reindex = 0x80c4100 <glue_tool_entry_reindex>, bi_tool_sync = 0, bi_tool_dn2id_get = 0, bi_tool_id2entry_get = 0, bi_tool_entry_modify = 0, 
  bi_flags = 28928, bi_controls = 0x8183000, bi_ctrls = '\0' <repeats 32 times>, bi_nDB = 1, bi_cf_ocs = 0x8183160, bi_private = 0x81c2250, bi_next = {
    stqe_next = 0x8181b40}}

I'll get the slapd.conf in a moment.