Memory leak in FR 3.0.19 ?

Arnaud LAURIOU arnaud.lauriou at renater.fr
Fri Oct 18 14:26:03 CEST 2019


On 10/11/19 3:33 PM, Alan DeKok wrote:
> On Oct 11, 2019, at 9:15 AM, Arnaud LAURIOU<arnaud.lauriou at renater.fr>  wrote:
>> We are suspecting memory leak in FR 3.0.19 : process memory status show VmData always keep
>> increasing leading to VmSwap use after a few days which also keep increasing.
>>
>> I have 2 questions :
>> - What are the compile options to use valgrind ? only flag --enable-developper ?||
>    valgrind is a run-time checker, and doesn't need any compile time changes.  You just run:
>
> 	valgrind --tool=memcheck --leak-check=full radiusd -f ...
>
>    Note that you will need the "-f".
>
>> - In the changelog for version 3.0.20 : some memories problems seems to be solved, do you
>> know when this version will be released ? (if the release date is close, we can wait to test this
>> release rather than 3.0.19)
>    As Matthew says, you can test it now.
Thank's for your answers, here are some logs after testing FR 3.0.20 
with about a
hundred authentications (let me know if you need more specific information
from valgrind, I don't know it well) :

==27160== LEAK SUMMARY:
==27160==    definitely lost: 9,390 bytes in 50 blocks
==27160==    indirectly lost: 308,580 bytes in 2,163 blocks
==27160==      possibly lost: 78,682,289 bytes in 13,374 blocks
==27160==    still reachable: 1,779,086 bytes in 31,899 blocks
==27160==                       of which reachable via heuristic:
==27160==                         length64           : 53,360 bytes in 
356 blocks
==27160==                         newarray           : 1,936 bytes in 22 
blocks
==27160==         suppressed: 0 bytes in 0 blocks
==27160== Reachable blocks (those to which a pointer was found) are not 
shown.

blocks 'definitely lost' :

==27160== 32,936 (136 direct, 32,800 indirect) bytes in 1 blocks are 
definitely lost in loss record 1,499 of 1,529
==27160==    at 0x4C31B25: calloc (in 
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==27160==    by 0x840B31E: gnutls_x509_crt_init (in 
/usr/lib/x86_64-linux-gnu/libgnutls.so.30.14.10)
==27160==    by 0x84102A8: gnutls_x509_crt_list_import (in 
/usr/lib/x86_64-linux-gnu/libgnutls.so.30.14.10)
==27160==    by 0x78C5A93: ??? (in 
/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.8)
==27160==    by 0x78C342F: ??? (in 
/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.8)
==27160==    by 0x78B968C: ldap_set_option (in 
/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.8)
==27160==    by 0x7680B53: mod_conn_create (ldap.c:1532)
==27160==    by 0x137CDC: fr_connection_spawn (connection.c:438)
==27160==    by 0x13859F: fr_connection_get_internal (connection.c:858)
==27160==    by 0x767B528: mod_authorize (rlm_ldap.c:1465)
==27160==    by 0x131762: call_modsingle (modcall.c:304)
==27160==    by 0x131762: modcall_recurse (modcall.c:580)
==27160==    by 0x1310A2: modcall_child (modcall.c:410)


==27160== 34,794 (4,320 direct, 30,474 indirect) bytes in 9 blocks are 
definitely lost in loss record 1,502 of 1,529
==27160==    at 0x4C31B25: calloc (in 
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==27160==    by 0x83FFF47: gnutls_x509_privkey_init (in 
/usr/lib/x86_64-linux-gnu/libgnutls.so.30.14.10)
==27160==    by 0x78C5A12: ??? (in 
/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.8)
==27160==    by 0x78C342F: ??? (in 
/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.8)
==27160==    by 0x78B968C: ldap_set_option (in 
/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.8)
==27160==    by 0x7680B53: mod_conn_create (ldap.c:1532)
==27160==    by 0x137CDC: fr_connection_spawn (connection.c:438)
==27160==    by 0x138228: fr_connection_pool_check (connection.c:728)
==27160==    by 0x767B677: mod_authorize (rlm_ldap.c:1673)
==27160==    by 0x131762: call_modsingle (modcall.c:304)
==27160==    by 0x131762: modcall_recurse (modcall.c:580)
==27160==    by 0x1310A2: modcall_child (modcall.c:410)
==27160==    by 0x13124B: modcall_recurse (modcall.c:791)


==27160== 61,216 (304 direct, 60,912 indirect) bytes in 2 blocks are 
definitely lost in loss record 1,515 of 1,529
==27160==    at 0x4C31B25: calloc (in 
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==27160==    by 0x9F4305B: ??? (in 
/usr/lib/x86_64-linux-gnu/libtasn1.so.6.5.5)
==27160==    by 0x9F4326C: asn1_create_element (in 
/usr/lib/x86_64-linux-gnu/libtasn1.so.6.5.5)
==27160==    by 0x840B343: gnutls_x509_crt_init (in 
/usr/lib/x86_64-linux-gnu/libgnutls.so.30.14.10)
==27160==    by 0x84102A8: gnutls_x509_crt_list_import (in 
/usr/lib/x86_64-linux-gnu/libgnutls.so.30.14.10)
==27160==    by 0x78C5A93: ??? (in 
/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.8)
==27160==    by 0x78C342F: ??? (in 
/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.8)
==27160==    by 0x78B968C: ldap_set_option (in 
/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.8)
==27160==    by 0x7680B53: mod_conn_create (ldap.c:1532)
==27160==    by 0x137CDC: fr_connection_spawn (connection.c:438)
==27160==    by 0x138228: fr_connection_pool_check (connection.c:728)
==27160==    by 0x767B677: mod_authorize (rlm_ldap.c:1673)


==27160== 143,384 (1,224 direct, 142,160 indirect) bytes in 9 blocks are 
definitely lost in loss record 1,520 of 1,529
==27160==    at 0x4C31B25: calloc (in 
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==27160==    by 0x840B31E: gnutls_x509_crt_init (in 
/usr/lib/x86_64-linux-gnu/libgnutls.so.30.14.10)
==27160==    by 0x84102A8: gnutls_x509_crt_list_import (in 
/usr/lib/x86_64-linux-gnu/libgnutls.so.30.14.10)
==27160==    by 0x78C5A93: ??? (in 
/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.8)
==27160==    by 0x78C342F: ??? (in 
/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.8)
==27160==    by 0x78B968C: ldap_set_option (in 
/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2.10.8)
==27160==    by 0x7680B53: mod_conn_create (ldap.c:1532)
==27160==    by 0x137CDC: fr_connection_spawn (connection.c:438)
==27160==    by 0x138228: fr_connection_pool_check (connection.c:728)
==27160==    by 0x767B677: mod_authorize (rlm_ldap.c:1673)
==27160==    by 0x131762: call_modsingle (modcall.c:304)
==27160==    by 0x131762: modcall_recurse (modcall.c:580)
==27160==    by 0x1310A2: modcall_child (modcall.c:410)


Issue with the ldap module ?

Regards,

Arnaud Lauriou


More information about the Freeradius-Users mailing list