Bug #73889 [Opn]: memory leaks / valgrind report

From: Date: Fri, 03 Mar 2017 11:09:06 +0000
Subject: Bug #73889 [Opn]: memory leaks / valgrind report
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-207677@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=73889&edit=1

 ID:                 73889
 User updated by:    spam2 at rhsoft dot net
 Reported by:        spam2 at rhsoft dot net
 Summary:            memory leaks / valgrind report
 Status:             Open
 Type:               Bug
-Package:            Unknown/Other Function
+Package:            MySQLi related
-PHP Version:        7.1.0
+PHP Version:        7.1.3
 Block user comment: N
 Private report:     N

 New Comment:

updated component and version


Previous Comments:
------------------------------------------------------------------------
[2017-03-03 11:08:12] spam2 at rhsoft dot net

frankly this still exists with 7.1.3RC1 and no feedback at all after trying to provide the requested
informations is not cool

==28119== 86,312 bytes in 2,201 blocks are definitely lost in loss record 137 of 137
==28119==    at 0x4C2BBAD: malloc (vg_replace_malloc.c:299)
==28119==    by 0x6C83555: __zend_malloc (zend_alloc.c:2820)
==28119==    by 0x6BD4244: zend_string_alloc (zend_string.h:122)
==28119==    by 0x6BD42DA: zend_string_init (zend_string.h:158)
==28119==    by 0x6BDC0A8: php_mysqlnd_rset_field_read (mysqlnd_wireprotocol.c:1378)
==28119==    by 0x6C01598: mysqlnd_mysqlnd_res_meta_read_metadata_pub (mysqlnd_result_meta.c:76)
==28119==    by 0x6BF6A5D: mysqlnd_mysqlnd_res_read_result_metadata_pub (mysqlnd_result.c:385)
==28119==    by 0x6BF7BD7: mysqlnd_query_read_result_set_header (mysqlnd_result.c:539)
==28119==    by 0x6C097FC: mysqlnd_com_reap_result_run (mysqlnd_commands.c:764)
==28119==    by 0x6BC375F: mysqlnd_mysqlnd_conn_data_reap_query_pub (mysqlnd_connection.c:917)
==28119==    by 0x6BC2EB2: mysqlnd_mysqlnd_conn_data_query_pub (mysqlnd_connection.c:859)
==28119==    by 0x12BEC857: zif_mysqli_query (mysqli_nonapi.c:593)

------------------------------------------------------------------------
[2017-01-21 18:28:35] spam2 at rhsoft dot net

any news here?

memleaks are really serious because you need to configure the server be it httpd or fpm to more
often restart forkers and that has a performance impact up to not even get the machine to 100% CPU
because it's busy with fork processes

"MaxRequestsPerChild 100" - 70% CPU
Concurrency Level: 150
Time taken for tests: 31.819 seconds
Complete requests: 100000
Failed requests: 0
Total transferred: 397837794 bytes
HTML transferred: 360737544 bytes
Requests per second: 3142.74 [#/sec] (mean)
Time per request: 47.729 [ms] (mean)
Time per request: 0.318 [ms] (mean, across all concurrent requests)
Transfer rate: 12209.95 [Kbytes/sec] received

"MaxRequestsPerChild 100000" - 90% CPU
Concurrency Level: 150
Time taken for tests: 24.304 seconds
Complete requests: 100000
Failed requests: 0
Total transferred: 397835334 bytes
HTML transferred: 360735110 bytes
Requests per second: 4114.62 [#/sec] (mean)
Time per request: 36.455 [ms] (mean)
Time per request: 0.243 [ms] (mean, across all concurrent requests)
Transfer rate: 15985.74 [Kbytes/sec] received

------------------------------------------------------------------------
[2017-01-11 10:57:58] spam2 at rhsoft dot net

7.1.1 RC1 some line numbers changed

==28074== 82,976 bytes in 2,124 blocks are definitely lost in loss record 136 of 136
==28074==    at 0x4C2BBAD: malloc (vg_replace_malloc.c:299)
==28074==    by 0x6C89E18: __zend_malloc (zend_alloc.c:2820)
==28074==    by 0x6BDABC8: zend_string_alloc (zend_string.h:122)
==28074==    by 0x6BDAC5E: zend_string_init (zend_string.h:158)
==28074==    by 0x6BE2A2C: php_mysqlnd_rset_field_read (mysqlnd_wireprotocol.c:1378)
==28074==    by 0x6C07F07: mysqlnd_mysqlnd_res_meta_read_metadata_pub (mysqlnd_result_meta.c:76)
==28074==    by 0x6BFD3CC: mysqlnd_mysqlnd_res_read_result_metadata_pub (mysqlnd_result.c:385)
==28074==    by 0x6BFE546: mysqlnd_query_read_result_set_header (mysqlnd_result.c:539)
==28074==    by 0x6C1016B: mysqlnd_com_reap_result_run (mysqlnd_commands.c:764)
==28074==    by 0x6BCA0E3: mysqlnd_mysqlnd_conn_data_reap_query_pub (mysqlnd_connection.c:917)
==28074==    by 0x6BC9836: mysqlnd_mysqlnd_conn_data_query_pub (mysqlnd_connection.c:859)
==28074==    by 0xA3C0BE5: zif_mysqli_query (mysqli_nonapi.c:593)

------------------------------------------------------------------------
[2017-01-08 18:38:21] spam2 at rhsoft dot net

i optimized the environment to use "httpd -X" (no forking) and ignore the loop-settings
for code-coverage in case 'valgrind' is part of the game - finally that leads to easily
profile every php-build with one call for each page of a sample cms-setup and report memleaks with
minimized output
____________________________________________

this one looks serious

==17212== 78,144 bytes in 2,016 blocks are definitely lost in loss record 136 of 136
==17212==    at 0x4C2BBAD: malloc (vg_replace_malloc.c:299)
==17212==    by 0x6C2EBB7: __zend_malloc (zend_alloc.c:2820)
==17212==    by 0x6B7C730: zend_string_alloc (zend_string.h:122)
==17212==    by 0x6B7C7C6: zend_string_init (zend_string.h:158)
==17212==    by 0x6B845E5: php_mysqlnd_rset_field_read (mysqlnd_wireprotocol.c:1378)
==17212==    by 0x6BA9C69: mysqlnd_mysqlnd_res_meta_read_metadata_pub (mysqlnd_result_meta.c:76)
==17212==    by 0x6B9F0D8: mysqlnd_mysqlnd_res_read_result_metadata_pub (mysqlnd_result.c:385)
==17212==    by 0x6BA0252: mysqlnd_query_read_result_set_header (mysqlnd_result.c:539)
==17212==    by 0x6BB207A: mysqlnd_com_reap_result_run (mysqlnd_commands.c:764)
==17212==    by 0x6B6BBFC: mysqlnd_mysqlnd_conn_data_reap_query_pub (mysqlnd_connection.c:917)
==17212==    by 0x6B6B34F: mysqlnd_mysqlnd_conn_data_query_pub (mysqlnd_connection.c:859)
==17212==    by 0xA3E7B83: zif_mysqli_query (mysqli_nonapi.c:589)
____________________________________________

complete result

 CMS_AUTOTESTS="0"
 export ZEND_DONT_UNLOAD_MODULES=1
 /usr/bin/valgrind --tool=memcheck --leak-check=yes --leak-check=full
--log-file=$PROFILE_ROOT/logs/valgrind.log $HTTPD_BINARY -X -f "$PROFILE_ROOT/httpd.conf"
&

==17212== Memcheck, a memory error detector
==17212== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==17212== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==17212== Command: /usr/sbin/httpd -X -f /rpmbuild/PHP-PGO/httpd.conf
==17212== Parent PID: 17194
==17212== 
==17212== 
==17212== HEAP SUMMARY:
==17212==     in use at exit: 292,291 bytes in 2,519 blocks
==17212==   total heap usage: 278,014 allocs, 275,495 frees, 62,878,401 bytes allocated
==17212== 
==17212== 32 bytes in 1 blocks are possibly lost in loss record 52 of 136
==17212==    at 0x4C2BBAD: malloc (vg_replace_malloc.c:299)
==17212==    by 0x6C2EBB7: __zend_malloc (zend_alloc.c:2820)
==17212==    by 0x6BDC5B5: zend_hash_str_add_mem (zend_hash.h:611)
==17212==    by 0x6BDEAD1: sapi_register_post_entry (SAPI.c:954)
==17212==    by 0x6BDEA3F: sapi_register_post_entries (SAPI.c:940)
==17212==    by 0x6BE2AD5: php_setup_sapi_content_types (php_content_types.c:64)
==17212==    by 0x6BDC6E9: sapi_globals_ctor (SAPI.c:66)
==17212==    by 0x6BDC753: sapi_startup (SAPI.c:89)
==17212==    by 0x6D4242E: php_apache_server_startup (sapi_apache2.c:497)
==17212==    by 0x1669F2: ap_run_post_config (in /usr/sbin/httpd)
==17212==    by 0x13230F: main (in /usr/sbin/httpd)
==17212== 
==17212== 32 bytes in 1 blocks are possibly lost in loss record 53 of 136
==17212==    at 0x4C2BBAD: malloc (vg_replace_malloc.c:299)
==17212==    by 0x6C2EBB7: __zend_malloc (zend_alloc.c:2820)
==17212==    by 0x6BDC5B5: zend_hash_str_add_mem (zend_hash.h:611)
==17212==    by 0x6BDEAD1: sapi_register_post_entry (SAPI.c:954)
==17212==    by 0x6BDEA3F: sapi_register_post_entries (SAPI.c:940)
==17212==    by 0xA66B9E4: OnUpdate_mbstring_encoding_translation (mbstring.c:1423)
==17212==    by 0x6C86093: zend_register_ini_entries (zend_ini.c:256)
==17212==    by 0xA66BD05: zm_startup_mbstring (mbstring.c:1554)
==17212==    by 0x6C6A66D: zend_startup_module_ex (zend_API.c:1843)
==17212==    by 0x6C6A6CF: zend_startup_module_zval (zend_API.c:1858)
==17212==    by 0x6C7837A: zend_hash_apply (zend_hash.c:1508)
==17212==    by 0x6C6AC9B: zend_startup_modules (zend_API.c:1969)
==17212== 
==17212== 48 bytes in 1 blocks are possibly lost in loss record 73 of 136
==17212==    at 0x4C2BBAD: malloc (vg_replace_malloc.c:299)
==17212==    by 0x6C2EBB7: __zend_malloc (zend_alloc.c:2820)
==17212==    by 0x6C7361A: zend_string_alloc (zend_string.h:122)
==17212==    by 0x6C736B0: zend_string_init (zend_string.h:158)
==17212==    by 0x6C75C0C: _zend_hash_str_add (zend_hash.c:666)
==17212==    by 0x6BDC590: zend_hash_str_add_mem (zend_hash.h:610)
==17212==    by 0x6BDEAD1: sapi_register_post_entry (SAPI.c:954)
==17212==    by 0x6BDEA3F: sapi_register_post_entries (SAPI.c:940)
==17212==    by 0x6BE2AD5: php_setup_sapi_content_types (php_content_types.c:64)
==17212==    by 0x6BDC6E9: sapi_globals_ctor (SAPI.c:66)
==17212==    by 0x6BDC753: sapi_startup (SAPI.c:89)
==17212==    by 0x6D4242E: php_apache_server_startup (sapi_apache2.c:497)
==17212== 
==17212== 64 bytes in 1 blocks are possibly lost in loss record 82 of 136
==17212==    at 0x4C2BBAD: malloc (vg_replace_malloc.c:299)
==17212==    by 0x6C2EBB7: __zend_malloc (zend_alloc.c:2820)
==17212==    by 0x6C7361A: zend_string_alloc (zend_string.h:122)
==17212==    by 0x6C736B0: zend_string_init (zend_string.h:158)
==17212==    by 0x6C75C0C: _zend_hash_str_add (zend_hash.c:666)
==17212==    by 0x6BDC590: zend_hash_str_add_mem (zend_hash.h:610)
==17212==    by 0x6BDEAD1: sapi_register_post_entry (SAPI.c:954)
==17212==    by 0x6BDEA3F: sapi_register_post_entries (SAPI.c:940)
==17212==    by 0xA66B9E4: OnUpdate_mbstring_encoding_translation (mbstring.c:1423)
==17212==    by 0x6C86093: zend_register_ini_entries (zend_ini.c:256)
==17212==    by 0xA66BD05: zm_startup_mbstring (mbstring.c:1554)
==17212==    by 0x6C6A66D: zend_startup_module_ex (zend_API.c:1843)
==17212== 
==17212== 288 bytes in 1 blocks are possibly lost in loss record 114 of 136
==17212==    at 0x4C2BBAD: malloc (vg_replace_malloc.c:299)
==17212==    by 0x6C2EBB7: __zend_malloc (zend_alloc.c:2820)
==17212==    by 0x6C73E81: zend_hash_real_init_ex (zend_hash.c:138)
==17212==    by 0x6C73FFD: zend_hash_check_init (zend_hash.c:161)
==17212==    by 0x6C755F5: _zend_hash_add_or_update_i (zend_hash.c:551)
==17212==    by 0x6C75C36: _zend_hash_str_add (zend_hash.c:667)
==17212==    by 0x6BDC590: zend_hash_str_add_mem (zend_hash.h:610)
==17212==    by 0x6BDEAD1: sapi_register_post_entry (SAPI.c:954)
==17212==    by 0x6BDEA3F: sapi_register_post_entries (SAPI.c:940)
==17212==    by 0x6BE2AD5: php_setup_sapi_content_types (php_content_types.c:64)
==17212==    by 0x6BDC6E9: sapi_globals_ctor (SAPI.c:66)
==17212==    by 0x6BDC753: sapi_startup (SAPI.c:89)
==17212== 
==17212== 78,144 bytes in 2,016 blocks are definitely lost in loss record 136 of 136
==17212==    at 0x4C2BBAD: malloc (vg_replace_malloc.c:299)
==17212==    by 0x6C2EBB7: __zend_malloc (zend_alloc.c:2820)
==17212==    by 0x6B7C730: zend_string_alloc (zend_string.h:122)
==17212==    by 0x6B7C7C6: zend_string_init (zend_string.h:158)
==17212==    by 0x6B845E5: php_mysqlnd_rset_field_read (mysqlnd_wireprotocol.c:1378)
==17212==    by 0x6BA9C69: mysqlnd_mysqlnd_res_meta_read_metadata_pub (mysqlnd_result_meta.c:76)
==17212==    by 0x6B9F0D8: mysqlnd_mysqlnd_res_read_result_metadata_pub (mysqlnd_result.c:385)
==17212==    by 0x6BA0252: mysqlnd_query_read_result_set_header (mysqlnd_result.c:539)
==17212==    by 0x6BB207A: mysqlnd_com_reap_result_run (mysqlnd_commands.c:764)
==17212==    by 0x6B6BBFC: mysqlnd_mysqlnd_conn_data_reap_query_pub (mysqlnd_connection.c:917)
==17212==    by 0x6B6B34F: mysqlnd_mysqlnd_conn_data_query_pub (mysqlnd_connection.c:859)
==17212==    by 0xA3E7B83: zif_mysqli_query (mysqli_nonapi.c:589)
==17212== 
==17212== LEAK SUMMARY:
==17212==    definitely lost: 78,144 bytes in 2,016 blocks
==17212==    indirectly lost: 0 bytes in 0 blocks
==17212==      possibly lost: 464 bytes in 5 blocks
==17212==    still reachable: 213,683 bytes in 498 blocks
==17212==         suppressed: 0 bytes in 0 blocks
==17212== Reachable blocks (those to which a pointer was found) are not shown.
==17212== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==17212== 
==17212== For counts of detected and suppressed errors, rerun with: -v
==17212== ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=73889


--
Edit this bug report at https://bugs.php.net/bug.php?id=73889&edit=1


Thread (11 messages)

« previous php.bugs (#207677) next »