| Bug #70490 | Suppression is too strict on some systems | ||
|---|---|---|---|
| Submitted: | 2 Oct 2013 12:24 | Modified: | 29 Jun 2017 12:32 |
| Reporter: | Sergei Glushchenko | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Security: Encryption | Severity: | S3 (Non-critical) |
| Version: | 5.6.12, 5.7 | OS: | Linux |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | openssl, valgrind | ||
[8 Oct 2013 18:18]
Sveta Smirnova
Thank you for the report. Please provide test case, demonstrating the problem.
[29 Oct 2013 3:55]
Roel Van de Paar
Sveta, can we proceed without test case please?
[1 Nov 2013 19:45]
Sveta Smirnova
Roel, we can. But, please, at least specify which tests and on which platform did you run when you saw such errors?
[2 Dec 2013 1:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[20 Nov 2015 12:37]
Laurynas Biveinis
This is still an issue. Server 5.7.9, built with -DWITH_SSL=system -DWITH_VALGRIND=ON, example testcase main.mysql_client_test, will produce on Ubuntu Trusty LTS and Ubuntu Wily the following:
32 bytes in 1 blocks are still reachable in loss record 2 of 4
at 0x4C2BBCF: malloc (vg_replace_malloc.c:299)
by 0x553DD87: CRYPTO_malloc (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0)
by 0x55F555E: sk_new (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0)
by 0x52B5FF9: ??? (in /lib/x86_64-linux-gnu/libssl.so.1.0.0)
by 0x52B80F8: SSL_COMP_get_compression_methods (in /lib/x86_64-linux-gnu/libssl.so.1.0.0)
by 0x52BD7E2: SSL_library_init (in /lib/x86_64-linux-gnu/libssl.so.1.0.0)
by 0x1DF2F67: ssl_start (viosslfactories.c:367)
by 0xE8DBB7: init_ssl() (mysqld.cc:3323)
by 0xE90B9D: mysqld_main(int, char**) (mysqld.cc:4725)
by 0xE87EE5: main (main.cc:25)
The suppression for this is
{
OpenSSL still reachable.
Memcheck:Leak
fun:malloc
fun:CRYPTO_malloc
fun:sk_new
fun:load_builtin_compressions
fun:SSL_COMP_get_compression_methods
fun:SSL_library_init
}
Note that sk_new is ??? above. This hinders any Valgrind testing on these platforms at least with -DWITH_SSL=system.
You have also observed this issue while verifying e.g. bug 78999.
[20 Nov 2015 12:38]
Laurynas Biveinis
Err "load_builtin_compressions" not "sk_new"
[2 May 2017 15:39]
MySQL Verification Team
Hi Laurynas, I am going to try to repeat this on Oracle Linux, with latest 5.7, since I do not use Ubuntu Linux. Would that be OK ???
[2 May 2017 18:36]
MySQL Verification Team
I verified it with 5.7.18:
---------------
orker[1] Valgrind report from /home/smilivoj/ssl/mysql-5.7.18/mysql-test/var/log/mysqld.1.err after tests:
main.mysql_client_test
--------------------------------------------------------------------------
HEAP SUMMARY:
in use at exit: 64 bytes in 2 blocks
total heap usage: 60,271 allocs, 60,269 frees, 153,093,454 bytes allocated
32 bytes in 1 blocks are still reachable in loss record 1 of 2
at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
by 0x596C2D2: CRYPTO_malloc (in /usr/lib64/libcrypto.so.1.0.1e)
by 0x59E4B2E: sk_new (in /usr/lib64/libcrypto.so.1.0.1e)
by 0x56DE879: ??? (in /usr/lib64/libssl.so.1.0.1e)
by 0x56E0828: SSL_COMP_get_compression_methods (in /usr/lib64/libssl.so.1.0.1e)
by 0x56E61C8: SSL_library_init (in /usr/lib64/libssl.so.1.0.1e)
by 0x1D9461A: ssl_start (viosslfactories.c:422)
by 0xE645EB: init_ssl() (mysqld.cc:3381)
by 0xE674BE: mysqld_main(int, char**) (mysqld.cc:4834)
by 0xE5EA2F: main (main.cc:25)
32 bytes in 1 blocks are still reachable in loss record 2 of 2
at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
by 0x596C2D2: CRYPTO_malloc (in /usr/lib64/libcrypto.so.1.0.1e)
by 0x59E4B4C: sk_new (in /usr/lib64/libcrypto.so.1.0.1e)
by 0x56DE879: ??? (in /usr/lib64/libssl.so.1.0.1e)
by 0x56E0828: SSL_COMP_get_compression_methods (in /usr/lib64/libssl.so.1.0.1e)
by 0x56E61C8: SSL_library_init (in /usr/lib64/libssl.so.1.0.1e)
by 0x1D9461A: ssl_start (viosslfactories.c:422)
by 0xE645EB: init_ssl() (mysqld.cc:3381)
by 0xE674BE: mysqld_main(int, char**) (mysqld.cc:4834)
by 0xE5EA2F: main (main.cc:25)
LEAK SUMMARY:
definitely lost: 0 bytes in 0 blocks
indirectly lost: 0 bytes in 0 blocks
possibly lost: 0 bytes in 0 blocks
still reachable: 64 bytes in 2 blocks
suppressed: 0 bytes in 0 blocks
For counts of detected and suppressed errors, rerun with: -v
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 2)
valgrind_report [ fail ]
Test ended at 2017-05-02 20:30:50
Valgrind reported failures at shutdown, see above
--------------------------------------------------------------------------
The servers were restarted 0 times
Spent 0.000 of 31 seconds executing testcases
Completed: Failed 1/1 tests, 0.00% were successful.
[3 May 2017 2:25]
Laurynas Biveinis
Thanks Sinisa!
[29 Jun 2017 7:21]
Shishir Jaiswal
Posted by developer: Approved on RB
[29 Jun 2017 12:32]
Paul DuBois
Posted by developer: Fixed in 5.6.38, 5.7.20, 8.0.3. Work was done for test suite. No changelog entry needed.

Description: valgrind.supp has an suppression which looks like { OpenSSL still reachable. Memcheck:Leak fun:malloc fun:CRYPTO_malloc fun:sk_new fun:load_builtin_compressions fun:SSL_COMP_get_compression_methods fun:SSL_library_init } It however doesn't work everywhere. We saw valgrind errors as following: ==32338== ==32338== HEAP SUMMARY: ==32338== in use at exit: 75,876,624 bytes in 832 blocks ==32338== total heap usage: 32,498 allocs, 31,666 frees, 130,387,498 bytes allocated ==32338== ==32338== 32 bytes in 1 blocks are still reachable in loss record 1 of 296 ==32338== at 0x4A069EE: malloc (vg_replace_malloc.c:270) ==32338== by 0x3417C5D9CD: CRYPTO_malloc (in /usr/lib64/libcrypto.so.1.0.0) ==32338== by 0x3417CB6F5E: sk_new (in /usr/lib64/libcrypto.so.1.0.0) ==32338== by 0x341C83D0E4: ??? (in /usr/lib64/libssl.so.1.0.0) ==32338== by 0x341C83D308: SSL_COMP_get_compression_methods (in /usr/lib64/libssl.so.1.0.0) ==32338== by 0x341C844651: SSL_library_init (in /usr/lib64/libssl.so.1.0.0) ==32338== by 0xC798DB: ssl_start (viosslfactories.c:155) ==32338== by 0x625FD9: init_ssl() (mysqld.cc:4310) ==32338== by 0x630170: mysqld_main(int, char**) (mysqld.cc:5509) ==32338== by 0x340C41ECDC: (below main) (in /lib64/libc-2.12.so) ==32338== ==32338== 32 bytes in 1 blocks are still reachable in loss record 2 of 296 ==32338== at 0x4A069EE: malloc (vg_replace_malloc.c:270) ==32338== by 0x3417C5D9CD: CRYPTO_malloc (in /usr/lib64/libcrypto.so.1.0.0) ==32338== by 0x3417CB6F7C: sk_new (in /usr/lib64/libcrypto.so.1.0.0) ==32338== by 0x341C83D0E4: ??? (in /usr/lib64/libssl.so.1.0.0) ==32338== by 0x341C83D308: SSL_COMP_get_compression_methods (in /usr/lib64/libssl.so.1.0.0) ==32338== by 0x341C844651: SSL_library_init (in /usr/lib64/libssl.so.1.0.0) ==32338== by 0xC798DB: ssl_start (viosslfactories.c:155) ==32338== by 0x625FD9: init_ssl() (mysqld.cc:4310) ==32338== by 0x630170: mysqld_main(int, char**) (mysqld.cc:5509) ==32338== by 0x340C41ECDC: (below main) (in /lib64/libc-2.12.so) Originally reported as https://bugs.launchpad.net/percona-server/+bug/1205196. How to repeat: Probably depends on environment. Suggested fix: Make suppression less strict.