Edit report at http://bugs.php.net/bug.php?id=47948&edit=1
ID: 47948
Updated by: felipe@php.net
Reported by: ehassler at synapsestudios dot com
Summary: call_user_func_array() with autoload causes crash
-Status: No Feedback
+Status: Feedback
Type: Bug
Package: Reproducible crash
Operating System: *
PHP Version: 5.2.9
New Comment:
Please try using this snapshot:
http://snaps.php.net/php5.2-latest.tar.gz
For Windows:
http://windows.php.net/snapshots/
Previous Comments:
------------------------------------------------------------------------
[2010-02-12 15:31:34] janssens dot cyril at gmail dot com
Same problem on Debian 5 32bit + php 5.2.6 when using recursive
call_user_func_array function.
The workaround is to use eval statement:
$object = 'foo';
$method = 'bar';
$args = array();//some arguments
$i=0;
$strArg='';
foreach ($args as $arg){
$varname = 'arg'.$i;
$$varname = $arg;
$strArg .= '$'.$varname.',';
$i++;
}
$strArg = substr($strArg,0,-1);
$cmd = '$_return = '.$object.'::'.$method.'('.$strArg.');';
eval($cmd);
//Enjoy :-)
return $_return;
Regards,
Cyril
------------------------------------------------------------------------
[2010-01-11 01:00:00] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, 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".
------------------------------------------------------------------------
[2010-01-08 16:27:47] muqker at muqker dot com
I didn't know about Edit Submission. However, I did not open this bug,
I just had the same problem and tried to provide a script to
reproduce. Should I use that anyway?
Yes, the crash is there. I am getting:
[Fri Jan 08 17:55:49 2010] [notice] child pid 3534 exit signal
Segmentation fault (11)
in apache2's error log and the browser reports that it receives "Error
324 (net::ERR_EMPTY_RESPONSE): Unknown error."
php -n index.php ends with "Segmentation Fault".
If I include explicitly the class that otherwise autoload tries to
load, or if I do not use call_user_func_array, but a normal call, then
the crash is gone.
Some system info:
PHP Version 5.2.6-3ubuntu4.2
Apache Version Apache/2.2.11 (Ubuntu) DAV/2 SVN/1.5.4 PHP/5.2.6-
3ubuntu4.2 with Suhosin-Patch
Apache API Version 20051115
Loaded Modules core mod_log_config mod_logio prefork http_core mod_so
mod_alias mod_auth_basic mod_authn_file mod_authz_default
mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex
mod_cgi mod_dav mod_dav_fs mod_dav_svn mod_authz_svn mod_deflate
mod_dir mod_env mod_mime mod_negotiation mod_php5 mod_rewrite
mod_setenvif mod_status
Linux dufus 2.6.28-16-generic #55-Ubuntu SMP Tue Oct 20 19:48:24 UTC
2009 i686
GNU C Library stable release version 2.9, by Roland McGrath et al.
Let me know if I can provide any other info.
------------------------------------------------------------------------
[2010-01-03 20:54:56] johannes@php.net
When editing you have to use the "Edit Submission" tab to re-open it.
Are you sure the script you provided is correct - it works for me, as
far as I can tell, on 5.2 and 5.3 while there is a warning for a missing
parameter:
$ php -n index.php
<pre>array(7) {
[0]=>
array(7) {
["file"]=>
string(47) "/tmp/test47948/muqker/index.php"
["line"]=>
int(41)
["function"]=>
string(1) "f"
["class"]=>
string(1) "A"
["object"]=>
object(A)#2 (0) {
}
["type"]=>
string(2) "->"
["args"]=>
array(0) {
}
}
[1]=>
array(7) {
["file"]=>
string(47) "/tmp/test47948/muqker/index.php"
["line"]=>
int(45)
["function"]=>
string(1) "g"
["class"]=>
string(1) "A"
["object"]=>
object(A)#2 (0) {
}
["type"]=>
string(2) "->"
["args"]=>
array(0) {
}
}
[2]=>
array(7) {
["file"]=>
string(47) "/tmp/test47948/muqker/index.php"
["line"]=>
int(15)
["function"]=>
string(1) "h"
["class"]=>
string(1) "A"
["object"]=>
object(A)#2 (0) {
}
["type"]=>
string(2) "->"
["args"]=>
array(0) {
}
}
[3]=>
array(7) {
["file"]=>
string(47) "/tmp/test47948/muqker/index.php"
["line"]=>
int(19)
["function"]=>
string(2) "zz"
["class"]=>
string(10) "Controller"
["object"]=>
object(Controller)#1 (0) {
}
["type"]=>
string(2) "->"
["args"]=>
array(0) {
}
}
[4]=>
array(7) {
["file"]=>
string(47) "/tmp/test47948/muqker/index.php"
["line"]=>
int(23)
["function"]=>
string(10) "executeNew"
["class"]=>
string(10) "Controller"
["object"]=>
object(Controller)#1 (0) {
}
["type"]=>
string(2) "->"
["args"]=>
array(1) {
[0]=>
&NULL
}
}
[5]=>
array(7) {
["file"]=>
string(47) "/tmp/test47948/muqker/index.php"
["line"]=>
int(59)
["function"]=>
string(13) "executeClient"
["class"]=>
string(10) "Controller"
["object"]=>
object(Controller)#1 (0) {
}
["type"]=>
string(2) "->"
["args"]=>
array(1) {
[0]=>
&NULL
}
}
[6]=>
array(4) {
["file"]=>
string(47) "/tmp/test47948/muqker/index.php"
["line"]=>
int(62)
["function"]=>
string(4) "main"
["args"]=>
array(0) {
}
}
}
Warning: Missing argument 2 for
CheckedFacilityPeer::getCheckedFacilities() in
/tmp/test47948/muqker/CheckedFacilityPeer.php on line 42
ff
------------------------------------------------------------------------
[2010-01-03 17:09:52] muqker at muqker dot com
I see the status has changed to "No Feedback". Is the script I provided
to reproduce not ok? I am sorry but I do not have a test environment
where I can try your snapshot.
------------------------------------------------------------------------
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
http://bugs.php.net/bug.php?id=47948--
Edit this bug report at http://bugs.php.net/bug.php?id=47948&edit=1