Bug #65562 [Opn]: memory leak in zend_parse_arg
Edit report at https://bugs.php.net/bug.php?id=65562&edit=1 ID: 65562 Updated by: johan...@php.net Reported by:rrh at newrelic dot com Summary:memory leak in zend_parse_arg Status: Open Type: Bug Package:Performance problem Operating System: all PHP Version:5.5.3 Block user comment: N Private report: N New Comment: Adam, well usually we won't need such an test function as usually we only accept things reproducable with core PHP a bug, so this report is no PHP bug. The primary purpose of the debug function here would be to allow verifying this issue was fixed (if rrh confirms this is the actual issue, I might have overseen some other issue). As I define this as not a PHP bug per se I agreee with Niki that we simply might not add an test to our test suite (currently this would be relevant only in an edge case for a commercial extension, due to the kind of error and PHP's gc also of low severity) but I wanted to discuss the requirements in case somebody picks this bug up. (and it's not one of, we already have leak() and two or so other debug only functions already) Anyways, the time spent on discussing this might have been more than needed to fix&test this, so I'll shut up unless anybody wants my review or I have some time&mood while sitting on a machine with a PHP tree. ;-) Previous Comments: [2013-08-27 20:06:55] ahar...@php.net With my doc hat on, I'm personally not too concerned if we have a debug build only function â we can cross that bridge when we get to it, and I don't think anyone relies particularly heavily on the prototype extraction scripts anyway. With my php-src hat on, would it be better to consider adding a debug extension (say ext/debug) that wraps ZE functions where appropriate so we can start writing PHPT tests for them, rather than doing this as a one off? [2013-08-27 09:42:17] ni...@php.net @johannes: Does this really need a test? The change is rather obvious after all. Introducing debug-only functions for this seems like overkill. [2013-08-26 23:15:59] johan...@php.net A cleaner patch might pass the quiet argument to zend_parse_arg_impl, this would safe the allocation in there. This also seems to be limited to C and f modifiers which, in PHP itself, aren't used in combination with ZEND_PARSE_PARAMS_QUIET. So for adding a test we might need a deug-build-only functionin zend_builtin_functions.c. This might need coordination with docs and their function detection scripts. And sorry if I'm a bit harsh, but 99% of the internal API bugs we get are user errors and this bug was sparse on information. [2013-08-26 23:14:26] s...@php.net Waiting feedback on the patch [2013-08-26 23:07:33] rrh at newrelic dot com I will test the patch, and in the future come up with patches for your review. 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=65562 -- Edit this bug report at https://bugs.php.net/bug.php?id=65562&edit=1
Bug #65562 [Opn]: memory leak in zend_parse_arg
Edit report at https://bugs.php.net/bug.php?id=65562&edit=1 ID: 65562 Updated by: ahar...@php.net Reported by:rrh at newrelic dot com Summary:memory leak in zend_parse_arg Status: Open Type: Bug Package:Performance problem Operating System: all PHP Version:5.5.3 Block user comment: N Private report: N New Comment: With my doc hat on, I'm personally not too concerned if we have a debug build only function â we can cross that bridge when we get to it, and I don't think anyone relies particularly heavily on the prototype extraction scripts anyway. With my php-src hat on, would it be better to consider adding a debug extension (say ext/debug) that wraps ZE functions where appropriate so we can start writing PHPT tests for them, rather than doing this as a one off? Previous Comments: [2013-08-27 09:42:17] ni...@php.net @johannes: Does this really need a test? The change is rather obvious after all. Introducing debug-only functions for this seems like overkill. [2013-08-26 23:15:59] johan...@php.net A cleaner patch might pass the quiet argument to zend_parse_arg_impl, this would safe the allocation in there. This also seems to be limited to C and f modifiers which, in PHP itself, aren't used in combination with ZEND_PARSE_PARAMS_QUIET. So for adding a test we might need a deug-build-only functionin zend_builtin_functions.c. This might need coordination with docs and their function detection scripts. And sorry if I'm a bit harsh, but 99% of the internal API bugs we get are user errors and this bug was sparse on information. [2013-08-26 23:14:26] s...@php.net Waiting feedback on the patch [2013-08-26 23:07:33] rrh at newrelic dot com I will test the patch, and in the future come up with patches for your review. [2013-08-26 23:02:38] yohg...@php.net I suspect you have pointer issue. Valgrind does not handle ***(pointer to pointer to pointer) well. Check your hash handling code carefully, it may help. 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=65562 -- Edit this bug report at https://bugs.php.net/bug.php?id=65562&edit=1
Bug #65562 [Opn]: memory leak in zend_parse_arg
Edit report at https://bugs.php.net/bug.php?id=65562&edit=1 ID: 65562 Updated by: yohg...@php.net Reported by:rrh at newrelic dot com Summary:memory leak in zend_parse_arg Status: Open Type: Bug Package:Performance problem Operating System: all PHP Version:5.5.3 Block user comment: N Private report: N New Comment: If you are certain, please provide short and complete module code that leaks memory. (i.e. full module code that compiles as module) It should be by using ext_skel shell script. Previous Comments: [2013-08-26 21:21:52] rrh at newrelic dot com I didn't provide code to show the issue because the issue is almost certainly independent of my module extension, and a quick inspection of the code looking at the control flow paths would show that efree isn't called on all paths leading to a return from the function. [2013-08-26 20:53:04] johan...@php.net Please provide compilable code showing the issue. In general: We don't consider issues which can't be triggered by userspace code as bug but expect extension authors to provide patches to improve PHP. [2013-08-26 20:23:12] rrh at newrelic dot com Description: Function zend_parse_arg leaks memory, as discovered when I ran valgrind with php test cases designed to exercise a module we wrote. zend_parse_arg calls zend_parse_arg_impl. Unfortunately, not all control flow paths to the return in zend_parse_arg call efree to free up the memory allocated by zend_parse_arg_impl to hold the error string. In my case, quiet != 0, so the lone efree (which has 2 additional guards) is not called. -- Edit this bug report at https://bugs.php.net/bug.php?id=65562&edit=1