ID:               26332
 Comment by:       dtorop933 at gmail dot com
 Reported By:      foxkill at gmx dot de
 Status:           Open
 Bug Type:         cURL related
 Operating System: Linux
 PHP Version:      5.0.0RC1-dev
 New Comment:

This appears related to the version of libcurl installed.  Running
libcurl 7.12.3, foxkill's code works properly for me.  Trying curl
7.12.0, 7.12.1, and 7.12.2, I see the same endless loop as foxkill. 
(This with PHP 5.0.3 on Linux machines running either Debian sarge
w/2.6.10 kernel or redhat 9 w/2.4.27 kernel.)

The key revision to libcurl seems to be a change to how curl handles
file descriptors on 2004/11/19 08:52:33 UTC.  Using curl source from
CVS before this date I get the endless loop, after this things work.  I
don't understand ramifications of the patch, though, clearly isn't all
or nothing, as sniper saw no problem on 3/15/04, well before the patch
or libcurl 7.12.3.


Previous Comments:
------------------------------------------------------------------------

[2004-03-17 06:07:57] foxkill at gmx dot de

I did try the latest snapshots. But the problem is still existent.
Perhaps I should have mentioned that I use a debug version of php-cli
and the php curl library as shared module. In a realease build with
compiled in curl it seems to work as expected. Did you read my
additional comments that I provided with the example script on
http://www.secnow.de/websearch/websearch.txt? The problem seems to be
related to the fd_set variables that are set in curl_multi_perform.
When curl_multi_exec is called these fd_set variables are no longer
available.

------------------------------------------------------------------------

[2004-03-15 10:48:48] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip

Works fine for me with latest CVS snapshot.


------------------------------------------------------------------------

[2004-02-25 05:08:08] foxkill at gmx dot de

You'll find the script to reproduce the error under:
http://www.secnow.de/websearch/websearch.txt

The script runs either in an endless loop or if it terminates it
prints:
Last leak repeated 2 times
/opt/local/src/lamp/php5-src/ext/curl/multi.c(62) :  Freeing 0x40291A34
(8 bytes), script=websearch.php
=== Total 4 memory leaks detected ===

------------------------------------------------------------------------

[2003-11-20 09:48:05] foxkill at gmx dot de

Description:
------------
I try to use curl_multi_fdset() together with curl_multi_exec() in
php5. But this doesn't work.
I modelled my php code after the sample (multi-app.c) which is provided
by the curl-src package.

Reproduce code:
---------------
this is the code I use for php5 (three single curl handles were
added):

while (CURLM_CALL_MULTI_PERFORM == curl_multi_exec($m, $still_running))

  ;

while ($still_running) {
     $fd = curl_multi_select($m, 1);

     switch($fd) {
        case -1:
        break;

        case 0:
        default:
        while (CURLM_CALL_MULTI_PERFORM == curl_multi_exec($m,
$still_running))
          ;
    }
}

Expected result:
----------------
The code should behave like the multi-app.c sample. See
[curl-src]/docs/examples/multi-app.c.

Actual result:
--------------
The code runs in an endless loop. Because curl_multi_exec() (alias
curl_multi_perform()) needs to reference the variables readfds,
writefds which were set by a previous call to curl_multi_fdset(). But
these fdsets have gone out of scope. The C Code works because the
fdsets are still present on the stack. See man 3 curl_multi_fdset for
further details. curl --version gives:

curl 7.10.8 (i686-pc-linux-gnu) libcurl/7.10.8 OpenSSL/0.9.7c
zlib/1.1.4
Protocols: ftp gopher ldap http file https ftps
Features: SSL libz NTLM



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=26332&edit=1

Reply via email to