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

Re: (ITS#6021) slapo-pcache/back-ldap slapd crashes



On 14 Mar 2009, at 15:49, Pierangelo Masarati wrote:

Hello,

Thanks for your quick reply.

>> (gdb) bt
>> #0  0x00b8d402 in __kernel_vsyscall ()
>> #1  0x009e8d20 in raise () from /lib/libc.so.6
>> #2  0x009ea631 in abort () from /lib/libc.so.6
>> #3  0x00a20e6b in __libc_message () from /lib/libc.so.6
>> #4  0x00a28b16 in _int_free () from /lib/libc.so.6
>> #5  0x00a2c070 in free () from /lib/libc.so.6
>> #6  0x081d5746 in ber_memfree_x (p=0xa6809478, ctx=0x0) at memory.c: 
>> 152
>> #7  0x081d630c in ber_bvarray_free_x (a=0x9049bb8, ctx=0x0) at  
>> memory.c:731
>> #8  0x081d6343 in ber_bvarray_free (a=0x9049bb8) at memory.c:741
>> #9  0x08079757 in attr_clean (a=0xb62d41bc) at attr.c:134
>
> The problem seems to be here; apparently, the a->a_nvals array is  
> being incorrectly freed.  If you have those core files around, it  
> would be interesting to see the contents of those attributes, e.g.
>
> p *a
> p a->a_desc[0]
> p a->a_flags
> p a->a_nvals[0]
>
> from within frame 9.


(gdb) up
#9  0x08079757 in attr_clean (a=0xb62d41bc) at attr.c:134
134				ber_bvarray_free( a->a_nvals );
(gdb) p *a
$1 = {a_desc = 0x8faa150, a_vals = 0x90487f0, a_nvals = 0x9049bb8,
   a_numvals = 631, a_flags = 0, a_next = 0x0}
(gdb) p a->a_desc[0]
$2 = {ad_next = 0x0, ad_type = 0x8fbba20, ad_cname = {bv_len = 9,
     bv_val = 0x8fba5d8 "memberUid"}, ad_tags = {bv_len = 0, bv_val =  
0x0},
   ad_flags = 0}
(gdb) p a->a_flags
$3 = 0
(gdb) p a->a_nvals[0]
$4 = {bv_len = 8, bv_val = 0x905aac0 "v1ggoodh"}
(gdb)


>> #10 0x0807983b in attrs_free (a=0xb62d41bc) at attr.c:196
>> #11 0x0807c059 in entry_clean (e=0xb5acfdbc) at entry.c:504
>> #12 0x0811ec17 in ldap_back_search (op=0xa680e5d8, rs=0xb5ad10e0)
>>    at search.c:354
>
> Also, it would be interesting to see the parameters of the search;  
> e.g.
>
> p op->o_req_ndn
> p op->o_request.oq_search
> p op->o_request.oq_search.rs_filterstr
> p op->o_request.oq_search.rs_attrs[0] (unless NULL)
>
> from within frame 12


(gdb) up
#12 0x0811ec17 in ldap_back_search (op=0xa680e5d8, rs=0xb5ad10e0)
     at search.c:354
354					entry_clean( &ent );
(gdb) p op->o_req_ndn
$5 = {bv_len = 24, bv_val = 0xb44ce1e4 "dc=inf,dc=ed,dc=ac,dc=uk"}
(gdb) p op->o_request.oq_search
$6 = {rs_scope = 2, rs_deref = 0, rs_slimit = 24576, rs_tlimit = 3600,
   rs_limit = 0x8fa88b8, rs_attrsonly = 0, rs_attrs = 0xb44ce904,
   rs_filter = 0xb44ce86c, rs_filterstr = {bv_len = 112,
     bv_val = 0xb44ce87c "(&(objectClass=posixGroup)(| 
(memberUid=vlavrenk) 
(uniqueMember=uid=vlavrenk,ou=people,dc=inf,dc=ed,dc=ac,dc=uk)))"}}
(gdb) p op->o_request.oq_search.rs_filterstr
$7 = {bv_len = 112,
   bv_val = 0xb44ce87c "(&(objectClass=posixGroup)(| 
(memberUid=vlavrenk) 
(uniqueMember=uid=vlavrenk,ou=people,dc=inf,dc=ed,dc=ac,dc=uk)))"}
(gdb) p op->o_request.oq_search.rs_attrs[0]
$8 = {an_name = {bv_len = 9, bv_val = 0x907b012 "gidNumber"},
   an_desc = 0x8f85930, an_oc_exclude = 0, an_oc = 0x0}
(gdb)


> Finally, it would be great to see your slapd.conf.


No problem, this is the database, back-ldap, pcache part of it:

database                ldap
suffix                  dc=inf,dc=ed,dc=ac,dc=uk
rootdn                  uid=ldaprep/ 
hostname.inf.ed.ac.uk,cn=inf.ed.ac.uk,cn=gssapi,cn=auth
uri                     "ldap://server1.inf.ed.ac.uk/,ldap:// 
server2.inf.ed.ac.uk"
idassert-bind           mode=none
                         bindmethod=sasl
                         saslmech=GSSAPI
idassert-authzFrom      "dn:*"

overlay                 pcache

proxycache              bdb 5000 4 500 300
proxycachequeries       10000

proxyattrset            0 cn userPassword memberUid uniqueMember  
gidNumber
proxyattrset            1 uid userPassword uidNumber gidNumber cn  
homeDirectory
loginShell gecos description objectClass afsHomeDirectory primaryRoles  
secondary
Roles
proxyattrset            2 cn nisNetgroupTriple memberNisNetgroup
proxyattrset            3 "*"

proxytemplate           (uid=) 1 1800 1800
proxytemplate           (&(objectClass=)(uid=)) 1 1800 1800
proxytemplate           (&(objectClass=)(cn=)) 0 1800 1800
proxytemplate           (&(objectClass=)(cn=)) 2 1800 1800
proxytemplate           (&(objectClass=)(|(memberUid=) 
(uniqueMember=))) 0 1800 1800
proxytemplate           (&(objectClass=)(uniqueMember=)) 0 1800 1800
proxytemplate           (&(objectClass=)(memberUid=)) 0 1800 1800
proxytemplate           (&(objectClass=)(uidNumber=)) 1 1800 1800
proxytemplate           (&(objectClass=)(gidNumber=)) 0 1800 1800
proxytemplate           (&(objectClass=)(amdmapName=)(amdmapKey=)) 3  
1800 1800
proxytemplate           (&(objectClass=)(uid=)) 3 1800 1800

directory               /var/openldap-data

checkpoint    128 60
cachesize    10000
idlcachesize    10000

dbconfig                set_cachesize 0 16777216 1
dbconfig                set_lg_regionmax 262144
dbconfig                set_lg_bsize 2097152


If there's anything else that would be useful, let me know.  As I  
mentioned, I have a number of other core files, including some that  
look the same as this one.

Cheers
Toby


-- 
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.