Red Hat Bugzilla – Bug 1170708
COS memory leak when rebuilding the cache
Last modified: 2015-03-05 04:39:55 EST
This bug is created as a clone of upstream ticket: https://fedorahosted.org/389/ticket/47969 When the COS cache is released, the schema cache is not correctly freed. We leak memory every time the cache is rebuilt. {{{ ==24017== 102 (72 direct, 30 indirect) bytes in 3 blocks are definitely lost in loss record 1,277 of 2,056 ==24017== at 0x4C2745D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==24017== by 0x4E854CA: slapi_ch_malloc (ch_malloc.c:155) ==24017== by 0x111F0244: cos_cache_add_attrval (cos_cache.c:1532) ==24017== by 0x111F2A48: cos_cache_schema_build (cos_cache.c:2751) ==24017== by 0x111EE46B: cos_cache_create (cos_cache.c:498) ==24017== by 0x111EE32E: cos_cache_wait_on_change (cos_cache.c:451) ==24017== by 0x718FE3A: ??? (in /usr/lib64/libnspr4.so) ==24017== by 0x77CEEE4: start_thread (in /usr/lib64/libpthread-2.18.so) ==24017== by 0x7AD8B8C: clone (in /usr/lib64/libc-2.18.so) }}}
Fixed upstream. Verification steps: [1] setup DS using valgrind [2] Add 2 COS templates and definitions [3] Modify the template in any way [4] stop theserver and check the valgrind output file for "cos_cache_add_attrval" [5] If it's not found the leak is fixed.
adding new entry "cn=cosPointer,ou=People,dc=example,dc=com" adding new entry "cn=cosPointer1,ou=People,dc=example,dc=com" adding new entry "cn=cosTemplateExample,ou=People,dc=example,dc=com" adding new entry "cn=cosTemplateExample1,ou=People,dc=example,dc=com" [root@dhcp201-126 export]# cat /export/COS_poinet.ldif #cos pointer defination 1 dn: cn=cosPointer,ou=People,dc=example,dc=com objectClass: top objectClass: ldapsubentry objectClass: cossuperdefinition objectClass: cosPointerDefinition description: cosPointer example costemplatedn: cn=cosTemplateExample,ou=people,dc=example,dc=com cosAttribute: st cn: cosPointer #cos pointer defination 2 dn: cn=cosPointer1,ou=People,dc=example,dc=com objectClass: top objectClass: ldapsubentry objectClass: cossuperdefinition objectClass: cosPointerDefinition description: cosPointer example costemplatedn: cn=cosTemplateExample1,ou=people,dc=example,dc=com cosAttribute: postalCode cn: cosPointer1 #cos template defination 1 dn: cn=cosTemplateExample,ou=People,dc=example,dc=com objectClass: top objectClass: costemplate objectClass: extensibleobject st: OR cn: cosTemplateExample #cos template defination 2 dn: cn=cosTemplateExample1,ou=People,dc=example,dc=com objectClass: top objectClass: costemplate objectClass: extensibleobject postalCode: 1234 cn: cosTemplateExample1 [root@dhcp201-126 export]# ldapmodify -D "cn=directory manager" -w Secret123 -p 389 -h localhost << EOF > dn: cn=cosTemplateExample1,ou=People,dc=example,dc=com > changetype: modify > replace: postalCode > postalCode: 5678 > EOF modifying entry "cn=cosTemplateExample1,ou=People,dc=example,dc=com" [root@dhcp201-126 export]# /usr/lib64/dirsrv/slapd-dhcp201-126/stop-slapd [root@dhcp201-126 export]# #grep cos_cache_add_attrval /tmp/valgrind.out # PFA for valgrind.out. Hence VERIFIED.
Created attachment 972703 [details] valgrind output
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHSA-2015-0416.html