php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #25942 When non-local OCILogon call fails, PEAR::SOAP enters recursive loop
Submitted: 2003-10-21 19:54 UTC Modified: 2004-09-01 16:45 UTC
From: jpatrin at pnicorp dot com Assigned: arnaud (profile)
Status: Not a bug Package: PEAR related
PHP Version: 4.3.3 OS: Linux
Private report: No CVE-ID: None
 [2003-10-21 19:54 UTC] jpatrin at pnicorp dot com
Description:
------------
Using PEAR::SOAP 0.8RC2.

When a SOAP Server class method calls a method (in the case I tested, it is the PEAR::DB::connect method) which calls OCILogon and it fails, the SOAP server enters an infinite loop (after the server function ends) and segfaults the apache child process. The infinite loop seems to be in Base::_serializeValue (logging the values, names, and types shows repetition of the same thing over and over).

If I do an OCILogon IN the server function, the soap server catches the error fine and returns it.

Another possible bug. If I do the OCILogon IN the server function and the length of the name of the server class and the length of the name of the function called add up to more than 29, the same segfault problem happens. For an example, try commenting out the OCILogon code (and commenting the PEAR::DB code) in the abcde function and adding 'y' to the class name.

None of this seems to happen when using mysql.

Reproduce code:
---------------
Sample scripts at URL provided.

http://www.reversefold.com/~papercrane/pearSoapError.tgz

Expected result:
----------------
Error: DB Error: connect failed

Actual result:
--------------
Error: curl_exec error 52 Empty reply from server

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2003-10-21 19:57 UTC] jpatrin at pnicorp dot com
I completely forgot to mention that if I set my own error handling function for the duration of the connect that this all works fine. This is shown in the example code given.

(This is very strange to me as I'm using the PEAR DB class, which does its own error handling.)
 [2003-10-27 15:35 UTC] jpatrin at pnicorp dot com
I have just tested it with mysql:// instead of oci8:// and the same thing happens. This looks more and more like a problem with PEAR::SOAP's error handling function.
 [2004-09-01 16:45 UTC] alan_k@php.net
if you are still experiencing this, can you move this on pear.php.net, as it is a little more likely the maintainer will see it.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Mar 29 00:01:28 2024 UTC