Bug #70271 [Com]: Php SoapServer crashed after second SoapFault

From: Date: Tue, 18 Aug 2015 17:40:55 +0000
Subject: Bug #70271 [Com]: Php SoapServer crashed after second SoapFault
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-195303@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=70271&edit=1 ID: 70271 Comment by: miracle at rpz dot name Reported by: miracle at rpz dot name Summary: Php SoapServer crashed after second SoapFault Status: Feedback Type: Bug Package: SOAP related Operating System: Irrelevant PHP Version: 5.6.12 Block user comment: N Private report: N New Comment: client.php: <?php $client = new SoapClient(null, ['uri' => 'http://test-uri', 'location' => 'http://127.0.0.1:8081/server.php']); try { $client->unknownMethod(); // expected exception } catch (Exception $e) { var_dump($e->getMessage()); } // any "normal" requests here try { $client->unknownMethod(); // server crashed here } catch (Exception $e) { var_dump($e->getMessage()); } ?> $./php ./client.php string(38) "Function 'unknownMethod' doesn't exist" string(27) "Error Fetching http headers" --------------------- server.php: <?php $srv = new SoapServer(null, ['uri' => 'http://test-uri/']); $srv->handle(); ?> $ ./php -S 127.0.0.1:8081 -t /tmp/php-soapserver PHP 5.6.12 Development Server started at Tue Aug 18 20:28:09 2015 Listening on http://127.0.0.1:8081 Document root is /tmp/php-soapserver Press Ctrl-C to quit. [Tue Aug 18 20:28:11 2015] 127.0.0.1:59246 [500]: /server.php - Function 'unknownMethod' doesn't exist in /tmp/php-soapserver/server.php on line 3 Segmentation fault (core dumped) (gdb)bt #0 0x00000000008ca757 in zend_std_object_get_class (object=0x7f3b34a0dc28) at /tmp/php-soapserver/php-5.6.12/Zend/zend_object_handlers.c:1528 #1 0x000000000089001d in zend_get_class_entry (zobject=0x7f3b34a0dc28) at /tmp/php-soapserver/php-5.6.12/Zend/zend_API.c:238 #2 0x00000000006b4c84 in soap_error_handler (error_num=8192, error_filename=0xd58393 "Unknown", error_lineno=0, format=0xd43178 "Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input"..., args=0x7fff26f74920) at /tmp/php-soapserver/php-5.6.12/ext/soap/soap.c:2145 #3 0x000000000088dc11 in zend_error (type=8192, format=0xd43178 "Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input"...) at /tmp/php-soapserver/php-5.6.12/Zend/zend.c:1133 #4 0x0000000000809669 in php_default_post_reader () at /tmp/php-soapserver/php-5.6.12/main/php_content_types.c:75 #5 0x000000000080363f in sapi_read_post_data () at /tmp/php-soapserver/php-5.6.12/main/SAPI.c:247 #6 0x0000000000803ff0 in sapi_activate () at /tmp/php-soapserver/php-5.6.12/main/SAPI.c:482 #7 0x00000000007f7f4e in php_request_startup () at /tmp/php-soapserver/php-5.6.12/main/main.c:1632 #8 0x000000000094c626 in php_cli_server_request_startup (server=0x10896c0 <server>, client=0x2dc21b0) at /tmp/php-soapserver/php-5.6.12/sapi/cli/php_cli_server.c:2100 #9 0x000000000094c932 in php_cli_server_dispatch (server=0x10896c0 <server>, client=0x2dc21b0) at /tmp/php-soapserver/php-5.6.12/sapi/cli/php_cli_server.c:2170 #10 0x000000000094d157 in php_cli_server_recv_event_read_request (server=0x10896c0 <server>, client=0x2dc21b0) at /tmp/php-soapserver/php-5.6.12/sapi/cli/php_cli_server.c:2372 #11 0x000000000094d4ea in php_cli_server_do_event_for_each_fd_callback (_params=0x7fff26f74d30, fd=4, event=1) at /tmp/php-soapserver/php-5.6.12/sapi/cli/php_cli_server.c:2463 #12 0x00000000009489bf in php_cli_server_poller_iter_on_active (poller=0x10896c8 <server+8>, opaque=0x7fff26f74d30, callback=0x94d2af <php_cli_server_do_event_for_each_fd_callback>) at /tmp/php-soapserver/php-5.6.12/sapi/cli/php_cli_server.c:960 #13 0x000000000094d560 in php_cli_server_do_event_for_each_fd (server=0x10896c0 <server>, rhandler=0x94d060 <php_cli_server_recv_event_read_request>, whandler=0x94d17e <php_cli_server_send_event>) ---Type <return> to continue, or q <return> to quit---) at /tmp/php-soapserver/php-5.6.12/sapi/cli/php_cli_server.c:2484 #14 0x000000000094d5c4 in php_cli_server_do_event_loop (server=0x10896c0 <server>) at /tmp/php-soapserver/php-5.6.12/sapi/cli/php_cli_server.c:2494 #15 0x000000000094d904 in do_cli_server (argc=5, argv=0x2c0f710) at /tmp/php-soapserver/php-5.6.12/sapi/cli/php_cli_server.c:2595 #16 0x000000000094236c in main (argc=5, argv=0x2c0f710) at /tmp/php-soapserver/php-5.6.12/sapi/cli/php_cli.c:1381 P.S > report and change the status back to "Open". Lost my "password", cannot find "reset/recover" function... Previous Comments: ------------------------------------------------------------------------ [2015-08-18 14:54:49] laruence@php.net Thank you for this bug report. To properly diagnose the problem, we need a backtrace to see what is happening behind the scenes. To find out how to generate a backtrace, please read http://bugs.php.net/bugs-generating-backtrace.php for *NIX and http://bugs.php.net/bugs-generating-backtrace-win32.php for Win32 Once you have generated a backtrace, please submit it to this bug report and change the status back to "Open". Thank you for helping us make PHP better. ------------------------------------------------------------------------ [2015-08-14 15:05:56] miracle at rpz dot name Description: ------------ On first SoapFault server respond with status 500 (expected behavior). On next fault server crashed. Reproduced on windows and linux, with all 5.6.* versions, php-cli and mod_php, works fine on 5.5 and 5.4. Test script: --------------- <?php if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'POST') { $srv = new SoapServer(null, ['uri' => 'http://test-uri/']); $srv->handle(); } else { if (DIRECTORY_SEPARATOR == '\\') { // windows $phpRoot = 'c:\php56'; $args = sprintf('"%s\php.exe" -d extension_dir=%s\ext -d extension=php_soap.dll -S %s:%d -t %s', $phpRoot, $phpRoot, '127.0.0.1', 8081, __DIR__); $cmd = 'start "srv" ' . $args; pclose(popen($cmd, "r")); } else { // linux $cmd = 'php -S 127.0.0.1:8081 -t ' . __DIR__ . ' > /dev/null 2>&1 &'; exec($cmd); } // wait for starting web-server sleep(10); $client = new SoapClient(null, ['uri' => 'http://test-uri', 'location' => 'http://127.0.0.1:8081/' . basename(__FILE__)]); try { $client->unknownMethod(); // expected exception } catch (Exception $e) { var_dump($e->getMessage()); } // any "normal" requests here try { $client->unknownMethod(); // server crashed here } catch (Exception $e) { var_dump($e->getMessage()); } } Expected result: ---------------- string(38) "Function 'unknownMethod' doesn't exist" string(38) "Function 'unknownMethod' doesn't exist" Actual result: -------------- string(38) "Function 'unknownMethod' doesn't exist" string(27) "Error Fetching http headers" ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=70271&edit=1

« previous php.bugs (#195303) next »