|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2006-10-12 18:05 UTC] harry at telappliant dot com
Description:
------------
when using use_soap_error_handler and a soap server & client without wsdl the soap server bombs if an exception is thrown!
Reproduce code:
---------------
# test.php
<?php
class TestClass
{
public function getCallLog( ) {
throw new Exception("bugger");
}
}
use_soap_error_handler(TRUE);
$server = new SoapServer( NULL, array('uri' => 'http://example.com') );
$server->setClass('TestClass');
$server->handle();
?>
# test-client.php
<?php
$params = array( 'style' => SOAP_RPC, 'use' => SOAP_ENCODED, 'uri' => 'http://192.168.254.72/soapb$
$client = new SoapClient( NULL, $params );
$blah = $client->getCallLog( array() );
print_r($blah);
?>
Expected result:
----------------
The exception being passed back to the client.
Actual result:
--------------
The server-side bombs.
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1213290816 (LWP 8597)]
0xb74122e2 in zend_get_executed_lineno () from /usr/lib/apache2/modules/libphp5.so
(gdb) bt
#0 0xb74122e2 in zend_get_executed_lineno () from /usr/lib/apache2/modules/libphp5.so
#1 0xbfb21e18 in ?? ()
#2 0xb7434152 in zend_clear_exception () from /usr/lib/apache2/modules/libphp5.so
#3 0xb7434152 in zend_clear_exception () from /usr/lib/apache2/modules/libphp5.so
#4 0xb74341db in zend_clear_exception () from /usr/lib/apache2/modules/libphp5.so
#5 0xb74227dd in _object_and_properties_init () from /usr/lib/apache2/modules/libphp5.so
#6 0xb742288a in _object_init_ex () from /usr/lib/apache2/modules/libphp5.so
#7 0xb72fc097 in zif_SoapClient___setLocation () from /usr/lib/apache2/modules/libphp5.so
#8 0xb72ff61b in zif_SoapServer_fault () from /usr/lib/apache2/modules/libphp5.so
#9 0xb7435bcc in zend_throw_error_exception () from /usr/lib/apache2/modules/libphp5.so
#10 0xb7435d74 in zend_exception_error () from /usr/lib/apache2/modules/libphp5.so
#11 0xb74206aa in zend_execute_scripts () from /usr/lib/apache2/modules/libphp5.so
#12 0xb73ddcbb in php_execute_script () from /usr/lib/apache2/modules/libphp5.so
#13 0xb74aa20e in zend_get_zval_ptr_ptr () from /usr/lib/apache2/modules/libphp5.so
#14 0x08068ed5 in ap_run_handler ()
#15 0x0806934c in ap_invoke_handler ()
#16 0x08066118 in ap_process_request ()
#17 0x08060fd8 in _start ()
(gdb)
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Oct 30 22:00:01 2025 UTC |
Bug can still be replicated with PHP Version 5.2.0RC6-dev (snapshot 200610130830). Full backtrace: #0 0xb74603d2 in zend_get_executed_lineno () at /home/harryr/software/php5.2-200610130830/Zend/zend_execute_API.c:394 No locals. #1 0xb7483432 in zend_default_exception_new_ex (class_type=0xb7662418, skip_top_traces=1) at /home/harryr/software/php5.2-200610130830/Zend/zend_exceptions.c:97 tmp = {value = {lval = -1078094272, dval = -0.11557535821119647, str = { val = 0xbfbd9640 "▒&f▒", len = -1078094248}, ht = 0xbfbd9640, obj = {handle = 3216873024, handlers = 0xbfbd9658}}, refcount = 0, type = 252 '▒', is_ref = 168 '▒'} obj = {value = {lval = 2, dval = -6.2692341670811935e-42, str = { val = 0x2 <Address 0x2 out of bounds>, len = -1218348576}, ht = 0x2, obj = {handle = 2, handlers = 0xb76179e0}}, refcount = 136390592, type = 72 'H', is_ref = 150 '\226'} object = (zend_object *) 0xb76626bc #2 0xb74834bb in zend_default_exception_new (class_type=0x0) at /home/harryr/software/php5.2-200610130830/Zend/zend_exceptions.c:105 No locals. #3 0xb746fb1c in _object_and_properties_init (arg=0xbfbd9810, class_type=0x82b9cf0, properties=0x0) at /home/harryr/software/php5.2-200610130830/Zend/zend_API.c:950 tmp = (zval *) 0xb761a780 object = (zend_object *) 0x5 #4 0xb746fbda in _object_init_ex (arg=0x1, class_type=0x1) at /home/harryr/software/php5.2-200610130830/Zend/zend_API.c:957 No locals. #5 0xb7343e07 in set_soap_fault (obj=0xbfbd9810, fault_code_ns=0x0, fault_code=0xb75c5360 "Server", fault_string=0xbfbd9830 "Uncaught exception 'Exception' with message 'bugger' in /home/webuser/ default/soapbug/test.php:5\nStack trace:\n#0 [internal function]: TestClass->getCallLog(Array, NULL , NULL, NULL, NULL)\n#1 /home/webu"..., fault_actor=0x0, fault_detail=0x0, name=0x0) at /home/harryr/software/php5.2-200610130830/ext/soap/soap.c:3115 No locals. #6 0xb7347338 in soap_error_handler (error_num=1, error_filename=0xb7663140 "/home/webuser/default/soapbug/test.php", error_lineno=5, format=0xb75bf02d "Uncaught %s\n thrown", args=0xbfbd9c80 "▒▒e▒▒\234▒▒") at /home/harryr/software/php5.2-200610130830/ext/soap/soap.c:2134 code = 0xb75c5360 "Server" buffer = "Uncaught exception 'Exception' with message 'bugger' in /home/webuser/default/soa pbug/test.php:5\nStack trace:\n#0 [internal function]: TestClass->getCallLog(Array, NULL, NULL, NUL L, NULL)\n#1 /home/webu"... outbuf = (zval *) 0x0 outbuflen = {value = {lval = 0, dval = 0, str = {val = 0x0, len = 0}, ht = 0x0, obj = { handle = 0, handlers = 0x0}}, refcount = 1, type = 0 '\0', is_ref = 0 '\0'} old = 1 fault = 0 fault_obj = {value = {lval = 0, dval = 0, str = {val = 0x0, len = 0}, ht = 0x0, obj = { handle = 0, handlers = 0x0}}, refcount = 1, type = 5 '\005', is_ref = 0 '\0'} _old_in_compilation = 0 '\0' _old_in_execution = 0 '\0' ---Type <return> to continue, or q <return> to quit--- _old_current_execute_data = (zend_execute_data *) 0x0 #7 0xb7484edc in zend_error_va (type=1, file=0x1 <Address 0x1 out of bounds>, lineno=1, format=0x1 <Address 0x1 out of bounds>) at /home/harryr/software/php5.2-200610130830/Zend/zend_exceptions.c:657 No locals. #8 0xb7485084 in zend_exception_error (exception=0xb7663198) at /home/harryr/software/php5.2-200610130830/Zend/zend_exceptions.c:696 str = (zval *) 0xb76626f4 file = (zval *) 0xb7663128 line = (zval *) 0xb7663170 ce_exception = (zend_class_entry *) 0x4 #9 0xb746ed16 in zend_execute_scripts (type=8, retval=0x0, file_count=3) at /home/harryr/software/php5.2-200610130830/Zend/zend.c:1128 orig_user_exception_handler = (zval *) 0x1 params = (zval ***) 0x0 retval2 = (zval *) 0xbf2bbf30 old_exception = (zval *) 0x0 ex_class_name = "Exception", '\0' <repeats 118 times> files = 0xbfbd9dd4 "" i = 1 file_handle = (zend_file_handle *) 0x0 orig_op_array = (zend_op_array *) 0x0 orig_retval_ptr_ptr = (zval **) 0x0 local_retval = (zval *) 0x0 #10 0xb7429aeb in php_execute_script (primary_file=0xbfbdbff0) at /home/harryr/software/php5.2-200610130830/main/main.c:1758 realfile = "ceil\000▒▒▒\004\000\000\000\200▒▒\214\000\000\000|▒▒\002\000\000\000▒#G▒abs\000P▒▒▒\021\000\000\000\200▒▒\214\000\000\000|▒▒\002\000\000\000▒#G▒convert_uudecode\000\000\000\000|▒▒\002\000\000\000▒#G▒convert_uuencode\000\000\000\000|▒▒\002\000\000\000▒#G▒base64_encode\000▒▒\214\000\000\000|▒▒\002\000\000\000▒#G▒base64_decode\000▒▒\214\000\000\000|▒▒\002\000\000\000▒#G▒getlastm"... prepend_file_p = (zend_file_handle *) 0x0 append_file_p = (zend_file_handle *) 0x3 prepend_file = {type = 0 '\0', filename = 0x0, opened_path = 0x0, handle = {fd = 0, fp = 0x0, stream = {handle = 0x0, reader = 0, closer = 0, fteller = 0, interactive = 0}}, free_filename = 0 '\0'} append_file = {type = 0 '\0', filename = 0x0, opened_path = 0x0, handle = {fd = 0, fp = 0x0, stream = {handle = 0x0, reader = 0, closer = 0, fteller = 0, interactive = 0}}, free_filename = 0 '\0'} old_cwd = 0xbfbd9de0 "/" retval = 0 #11 0xb750fa7e in php_handler (r=0x82f6e88) at /home/harryr/software/php5.2-200610130830/sapi/apache2handler/sapi_apache2.c:592 zfd = {type = 5 '\005', filename = 0x82f7fd8 "/home/webuser/default/soapbug/test.php", opened_path = 0xb765e794 "\b", handle = {fd = -1218058176, fp = 0xb765e840, stream = { handle = 0xb765e840, reader = 0xb743ac70 <_php_stream_read>, ---Type <return> to continue, or q <return> to quit--- closer = 0xb7428220 <stream_closer_for_zend>, fteller = 0xb7428250 <stream_fteller_for_zend>, interactive = 0}}, free_filename = 0 '\0'} ctx = (php_struct * volatile) 0x82f86b8 conf = (void *) 0x814efb0 brigade = (apr_bucket_brigade * volatile) 0x82f8808 bucket = (apr_bucket *) 0x1 rv = 1 parent_req = (request_rec * volatile) 0x0 #12 0x08068ed5 in ap_run_handler () No symbol table info available. #13 0x0806934c in ap_invoke_handler () No symbol table info available. #14 0x08066118 in ap_process_request () No symbol table info available. #15 0x08060fd8 in _start () No symbol table info available.