php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #74331 ph_soap crashes apache (x64 only)
Submitted: 2017-03-29 12:11 UTC Modified: 2017-04-04 14:36 UTC
From: jerome dot celle at gmail dot com Assigned:
Status: Closed Package: SOAP related
PHP Version: 7.1.3 OS: windows 7 64 bits
Private report: No CVE-ID: None
 [2017-03-29 12:11 UTC] jerome dot celle at gmail dot com
Description:
------------
Configuration:
- Windows 7 64 bits
- httpd-2.4.25-win64-VC14
- php-7.1.3-Win32-VC14-x64

A simple call to SoapClient (see below) crashes the httpd process.
If I revert to x86 versions of both apache and php, it works just fine.

Excerpt from Event Viewer:
Faulting application name: httpd.exe, version: 2.4.25.0, time stamp: 0x58550e9f
Faulting module name: php_soap.dll, version: 7.1.3.0, time stamp: 0x58c888b7
Exception code: 0xc0000005
Fault offset: 0x000000000001e271
Faulting process id: 0x3bcc
Faulting application start time: 0x01d2a88404203e14
Faulting application path: C:\apache\bin\httpd.exe
Faulting module path: c:\php\ext\php_soap.dll
Report Id: 449372a4-1477-11e7-95e7-f0d5bfd3a21f

Test script:
---------------
$client = new SoapClient(  $someurl, array( 'login' => $my_login, 'password' => $my_password ));



Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2017-03-29 13:30 UTC] ab@php.net
-Status: Open +Status: Feedback
 [2017-03-29 13:30 UTC] ab@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.


 [2017-03-30 08:25 UTC] jerome dot celle at gmail dot com
I could not yet produce the backtrace (it is a bit complex for me).
Nevertheless, during my attempt to do it, I had to run apache as a standalone application (httpd -X) and not as a service.
In this context there is NO crash: the soap call all succeed.
Maybe it helps.
 [2017-03-30 14:23 UTC] jerome dot celle at gmail dot com
I think I managed to produce the backtrace.
Can't see how to attach it to the ticket...
 [2017-03-30 14:55 UTC] requinix@php.net
You can probably just put it into a comment. If you feel it may be too long then a pastebin or gist or something like that is fine too.
 [2017-03-31 05:36 UTC] phpdev at ehrhardt dot nl
This bug report was initiated at Apachelounge:
https://www.apachelounge.com/viewtopic.php?p=35105#35105

I tried to reproduce it with the same config, but did not succeed. The Soap login went just fine with PHP 7.1.3 TS x64, running as mod_php under Apache 2.4.25 Win64 VC14.
 [2017-03-31 12:36 UTC] jerome dot celle at gmail dot com
Here is the info I think useful from backtrace:

PHP_SOAP!SDL_DESERIALIZE_STRING+11In httpd__PID__15704__Date__03_30_2017__Time_10_18_20AM__988__Second_Chance_Exception_C0000005.dmp the assembly instruction at php_soap!sdl_deserialize_string+11 in c:\php\ext\php_soap.dll from The PHP Group has caused an access violation exception (0xC0000005) when trying to read from memory location 0x755b747c on thread 10

php_soap!sdl_deserialize_string+11 
php_soap!get_sdl_from_cache+171 
php_soap!get_sdl+382 
php_soap!zim_SoapClient_SoapClient+b78 
php7ts!ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HANDLER+d2 
php7ts!execute_ex+64 
php7ts!zend_execute+1d1 
php7ts!zend_execute_scripts+13e 
php7ts!php_execute_script+4f8 
php7apache2_4!php_handler+635 
libhttpd!ap_run_handler+35 
libhttpd!ap_invoke_handler+110 
libhttpd!ap_internal_redirect_handler+29a 
libhttpd!ap_process_request+17 
libhttpd!ap_byterange_filter+1533 
libhttpd!ap_run_process_connection+35 
libhttpd!ap_process_connection+45 
libhttpd!ap_run_generate_log_id+3d9a 
kernel32!BaseThreadInitThunk+d 
ntdll!RtlUserThreadStart+1d
 [2017-04-02 01:15 UTC] ab@php.net
Thanks for the backtrace. I'd suspect there might be something with the cached WSDL stuff like accessing the cache generated by a different PHP version. Unfortunately it's hard to say more without a reproduce case, could please a self contained reproducer be provided?

Thanks.
 [2017-04-03 09:20 UTC] jerome dot celle at gmail dot com
-Status: Feedback +Status: Open
 [2017-04-03 09:20 UTC] jerome dot celle at gmail dot com
Good catch !
At some point I cleaned this cache to test, I guess I did not do it well because this morning, cleaning it again and changing the soap cache directory in php.ini to a brand new location I was pleased to see it work perfectly.
Thanks and sorry for the 'false' bug.
 [2017-04-04 14:36 UTC] jerome dot celle at gmail dot com
-Status: Open +Status: Closed
 [2017-04-04 14:36 UTC] jerome dot celle at gmail dot com
Not a bug.
 
PHP Copyright © 2001-2017 The PHP Group
All rights reserved.
Last updated: Sun Nov 19 01:31:42 2017 UTC