From:             galaxy dot mipt at gmail dot com
Operating system: Linux 2.6.18 x86
PHP version:      5.2.9
PHP Bug Type:     XMLRPC-EPI related
Bug description:  Segfault due to bound callback param

Description:
------------
In my particular case when the callback for
xmlrpc_server_register_method() is a class method attempt to save some of
the parameters passed to that callback during xmlrpc_server_call_method()
call results in segfault.

Well, I cannot provide short code that would reproduce the segfault I get
in my application - it's sort of unstable. But the code below at least show
that something is really wrong here.

I believe that $method_name just gets garbage-collected no matter that it
is bound with $this->method. Decoupling them, for example like this,
helps:
$this->method = (string)$method_name;


Reproduce code:
---------------
class MyXmlRpc {

    private $s;

    private $method;

    function impl($method_name, $params, $user_data){
        $this->method = $method_name;
        print "Inside impl(): {$this->method}\n";
        return array_sum($params);
    }

    function __construct() {
        $this->s = xmlrpc_server_create();
        xmlrpc_server_register_method($this->s,'add', array($this,
'impl'));
    }

    function call($req) {
        return xmlrpc_server_call_method($this->s, $req, null);
    }

    function getMethod() {return $this->method;}

}

$x = new MyXmlRpc;
$resp = $x->call(xmlrpc_encode_request('add',array(1,2,3)));

$method = $x->getMethod();

print "Global scope: $method\n";



Expected result:
----------------
Inside impl(): add
Global scope: add

Actual result:
--------------
Inside impl(): add
Global scope:

-- 
Edit bug report at http://bugs.php.net/?id=47818&edit=1
-- 
Try a CVS snapshot (PHP 5.2):        
http://bugs.php.net/fix.php?id=47818&r=trysnapshot52
Try a CVS snapshot (PHP 5.3):        
http://bugs.php.net/fix.php?id=47818&r=trysnapshot53
Try a CVS snapshot (PHP 6.0):        
http://bugs.php.net/fix.php?id=47818&r=trysnapshot60
Fixed in CVS:                        
http://bugs.php.net/fix.php?id=47818&r=fixedcvs
Fixed in CVS and need be documented: 
http://bugs.php.net/fix.php?id=47818&r=needdocs
Fixed in release:                    
http://bugs.php.net/fix.php?id=47818&r=alreadyfixed
Need backtrace:                      
http://bugs.php.net/fix.php?id=47818&r=needtrace
Need Reproduce Script:               
http://bugs.php.net/fix.php?id=47818&r=needscript
Try newer version:                   
http://bugs.php.net/fix.php?id=47818&r=oldversion
Not developer issue:                 
http://bugs.php.net/fix.php?id=47818&r=support
Expected behavior:                   
http://bugs.php.net/fix.php?id=47818&r=notwrong
Not enough info:                     
http://bugs.php.net/fix.php?id=47818&r=notenoughinfo
Submitted twice:                     
http://bugs.php.net/fix.php?id=47818&r=submittedtwice
register_globals:                    
http://bugs.php.net/fix.php?id=47818&r=globals
PHP 4 support discontinued:          http://bugs.php.net/fix.php?id=47818&r=php4
Daylight Savings:                    http://bugs.php.net/fix.php?id=47818&r=dst
IIS Stability:                       
http://bugs.php.net/fix.php?id=47818&r=isapi
Install GNU Sed:                     
http://bugs.php.net/fix.php?id=47818&r=gnused
Floating point limitations:          
http://bugs.php.net/fix.php?id=47818&r=float
No Zend Extensions:                  
http://bugs.php.net/fix.php?id=47818&r=nozend
MySQL Configuration Error:           
http://bugs.php.net/fix.php?id=47818&r=mysqlcfg

Reply via email to