Bug #12353 | mysql ssl connection using mysql_real_connect and mysql_close cause memory leak | ||
---|---|---|---|
Submitted: | 3 Aug 2005 18:03 | Modified: | 5 Aug 2005 2:18 |
Reporter: | jimmy ta | Email Updates: | |
Status: | Can't repeat | Impact on me: | |
Category: | MySQL Server | Severity: | S1 (Critical) |
Version: | 4.1.13 source | OS: | Windows (windows XP and unix) |
Assigned to: | CPU Architecture: | Any |
[3 Aug 2005 18:03]
jimmy ta
[5 Aug 2005 2:18]
MySQL Verification Team
I tested your test case against Purify for Windows. There is a potentila memory leak and the memory leak of 4 bytes in the function putenv is for the use of VC++ 6.0 compiler, you can avoid that compiling the server and client with VS 2003. I just modified your test code removing the while(1) and the user, password, database values. c:\mysql\bin>mysql --ssl-ca=cacert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 4.1.13-nt Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> SHOW VARIABLES LIKE 'have_openssl'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | have_openssl | YES | +---------------+-------+ 1 row in set (0.06 sec) mysql> START TEST END TESTF CONNECTIONS MADE : 1 Press any key to continue... [I] Starting Purify'd ssltest.exe at 04/08/2005 23:09:26 Instrumented executable: C:\Arquivos de programas\Rational\PurifyPlus\cache\ssltest$Purify_C_mysql_bin.exe Working directory: C:\mysql\bin Command line arguments: <none> Process ID: 0x3fc Thread ID: 0xb5c [I] Starting main [E] ABR: Array bounds read in my_xml_parse {1 occurrence} Reading 4 bytes from 0x025c45dd (1 byte at 0x025c45e0 illegal) Address 0x025c45dd is 17797 bytes into a 17800 byte block at 0x025c0058 Address 0x025c45dd points to a malloc'd block in heap 0x003e0000 Thread ID: 0xb5c Error location my_xml_parse [xml.obj] my_parse_charset_xml [ssltest.exe] get_collation_number [ssltest.exe] get_collation_number [ssltest.exe] get_charset_by_csname [ssltest.exe] mysql_real_connect [ssltest.exe] main [ssltest.cpp:48] mainCRTStartup [printf.obj] Allocation location my_malloc [my_malloc.obj] get_collation_number [ssltest.exe] get_collation_number [ssltest.exe] get_charset_by_csname [ssltest.exe] mysql_real_connect [ssltest.exe] main [ssltest.cpp:48] mainCRTStartup [printf.obj] [I] Summary of all memory leaks... {32 bytes, 2 blocks} [I] MPK: Potential memory leak of 28 bytes from 1 block allocated in LdrLoadDll [NTDLL.dll] Distribution of potentially leaked blocks 28 bytes from 1 block of 28 bytes (0x0015adc8) Allocation location HeapAlloc [KERNEL32.dll] LdrLoadDll [NTDLL.dll] LoadLibraryExA [kernel32.dll] mysql_server_init [ssltest.exe] mysql_init [ssltest.exe] main [ssltest.cpp:35] mainCRTStartup [printf.obj] [W] MLK: Memory leak of 4 bytes from 1 block allocated in putenv [ssltest.exe] Distribution of leaked blocks 4 bytes from 1 block of 4 bytes (0x003e6670) Allocation location _putenv_lk [putenv.obj] putenv [putenv.obj] setEnvString [ssltest.exe] my_init [ssltest.exe] mysql_server_init [ssltest.exe] mysql_init [ssltest.exe] main [ssltest.cpp:35] mainCRTStartup [printf.obj] [I] Exiting with code 0 (0x00000000) Process time: 406 milliseconds [I] Program terminated at 04/08/2005 23:10:20
[5 Aug 2005 23:48]
jimmy ta
I am compiling with gcc 3.4.1 on solaris and I notice the same problem. Can you suggest a version of gcc I can use on solaris.