Bug #77785 [Opn->Fbk]: memory leak… in "do_register_internal_class"

From: Date: Thu, 12 Aug 2021 11:11:39 +0000
Subject: Bug #77785 [Opn->Fbk]: memory leak… in "do_register_internal_class"
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-235789@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=77785&edit=1 ID: 77785 Updated by: nikic@php.net Reported by: aotto1968 at t-online dot de Summary: memory leak… in "do_register_internal_class" -Status: Open +Status: Feedback Type: Bug Package: *General Issues Operating System: linux latest PHP Version: 7.3.3 Block user comment: N Private report: N New Comment: I can't reproduce this (that is, I don't see any startup leaks with a normal PHP build -- I haven't tested the phpmsgque extension in particular). The code also looks correct to me: zend_new_interned_string releases the string passed to it. Previous Comments: ------------------------------------------------------------------------ [2019-03-23 11:13:11] aotto1968 at t-online dot de Description: ------------ Problem… overwrite "lowercase_name" without free ressource. ==44094== 32 bytes in 1 blocks are possibly lost in loss record 1,002 of 2,699 ==44094== at 0x4C2A080: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==44094== by 0x6A7681: __zend_malloc (zend_alloc.c:2903) ==44094== by 0x6D1834: zend_string_alloc (zend_string.h:133) ==44094== by 0x6DCEE3: zend_string_tolower_ex (zend_operators.c:2677) ==44094== by 0x6EEAF7: do_register_internal_class (zend_API.c:2730) ==44094== by 0x6EECBF: zend_register_internal_class (zend_API.c:2775) ==44094== by 0x6EEB7E: zend_register_internal_class_ex (zend_API.c:2747) ==44094== by 0x683E9B2: phpmsgque_MqDumpC_Init (MqDumpC_php.c:422) ==44094== by 0x6815718: zm_startup_phpmsgque (phpmsgque.c:104) ==44094== by 0x6EBC6A: zend_startup_module_ex (zend_API.c:1878) ==44094== by 0x6EBCE8: zend_startup_module_zval (zend_API.c:1893) ==44094== by 0x6FB15A: zend_hash_apply (zend_hash.c:1688) ==44094== by 0x6EC32C: zend_startup_modules (zend_API.c:2004) ==44094== by 0x633DE1: php_module_startup (main.c:2333) ==44094== by 0x7C1017: php_cli_startup (php_cli.c:420) ==44094== by 0x7C301C: main (php_cli.c:1356) static zend_class_entry *do_register_internal_class(zend_class_entry *orig_class_entry, uint32_t ce_flags) /* {{{ */ { zend_class_entry *class_entry = malloc(sizeof(zend_class_entry)); zend_string *lowercase_name; *class_entry = *orig_class_entry; class_entry->type = ZEND_INTERNAL_CLASS; zend_initialize_class_data(class_entry, 0); class_entry->ce_flags = ce_flags | ZEND_ACC_CONSTANTS_UPDATED; class_entry->info.internal.module = EG(current_module); if (class_entry->info.internal.builtin_functions) { zend_register_functions(class_entry, class_entry->info.internal.builtin_functions, &class_entry->function_table, MODULE_PERSISTENT); } >>>>> lowercase_name = zend_string_tolower_ex(orig_class_entry->name, 1); >>>>> lowercase_name = zend_new_interned_string(lowercase_name); zend_hash_update_ptr(CG(class_table), lowercase_name, class_entry); zend_string_release_ex(lowercase_name, 1); return class_entry; } ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=77785&edit=1

« previous php.bugs (#235789) next »