Bug #65562 [Opn]: memory leak in zend_parse_arg

2013-08-27 Thread johannes
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

2013-08-27 Thread aharvey
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

2013-08-26 Thread yohgaki
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