Edit report at https://bugs.php.net/bug.php?id=64177&edit=1

 ID:                 64177
 Updated by:         a...@php.net
 Reported by:        a...@php.net
 Summary:            curl_multi_* crash with libcurl 7.29.0
-Status:             Assigned
+Status:             Closed
 Type:               Bug
 Package:            cURL related
 Operating System:   any
 PHP Version:        Irrelevant
 Assigned To:        ab
 Block user comment: N
 Private report:     N

 New Comment:

That commit fixes this issue, obviously there can be no plausible workaround in 
php. I think curl 7.29.0 should be banned for regular PHP builds. I'll be using 
that patch to build with 7.29.0 for now (as no newer curl version is yet out).


Previous Comments:
------------------------------------------------------------------------
[2013-02-15 09:32:46] paj...@php.net

This commit may fix this regression:

https://github.com/bagder/curl/commit/da3fc1ee91de656a30f3a12de394bcba55119872

@a please patch our libcurl and test again :)

------------------------------------------------------------------------
[2013-02-08 23:31:40] a...@php.net

Description:
------------
Perhaps that's a libcurl bug, but the curl extension multi functionality 
consistently fails with 7.29.0 . For instance this snippet based on 
ext/curl/tests/curl_multi_init_basic.phpt

$mh = curl_multi_init();
curl_multi_close($mh);

Basically it does crash always if no handles were added between init and 
cleanup. Ther corresponding snippet in c

#include <curl/curl.h>

int main(void)
{
  CURLM *multi_handle;

  multi_handle = curl_multi_init();

  curl_multi_cleanup(multi_handle);

  return 0;
}

That snippets do successfully work with the libcurl versions prior to 7.29.0 . 
The issue introduces itself starting with this commit in libcurl included in 
7.29.0

https://github.com/bagder/curl/commit/c43127414d89ccb9ef6517081f68986d991bcfb3#L10R1776

And the commit is related to a big change explaned here 
http://daniel.haxx.se/blog/2013/01/17/internally-were-all-multi-now/

The issue is consistently reproduceable on linux and windows through all PHP 
versions.

Expected result:
----------------
no crash

Actual result:
--------------
#0  _php_curl_multi_close (rsrc=0xb707259c) at 
/home/weltling/dws/src/php-5.5-nts/ext/curl/multi.c:349
#1  0x085902ff in list_entry_destructor (ptr=0xb707259c) at 
/home/weltling/dws/src/php-5.5-nts/Zend/zend_list.c:183
#2  0x0858d72e in zend_hash_del_key_or_index (ht=0x8aa7158, arKey=0x0, 
nKeyLength=0, h=4, flag=1)
    at /home/weltling/dws/src/php-5.5-nts/Zend/zend_hash.c:531
#3  0x0858ffed in _zend_list_delete (id=4) at 
/home/weltling/dws/src/php-5.5-nts/Zend/zend_list.c:57
#4  0x081d1d8b in zif_curl_multi_close (ht=1, return_value=0xb7070b3c, 
return_value_ptr=0x0, this_ptr=0x0, 
    return_value_used=0) at 
/home/weltling/dws/src/php-5.5-nts/ext/curl/multi.c:330
#5  0x085b7f4b in zend_do_fcall_common_helper_SPEC (execute_data=0xb70540c4)
    at /home/weltling/dws/src/php-5.5-nts/Zend/zend_vm_execute.h:542
#6  0x085bdc7b in ZEND_DO_FCALL_SPEC_CONST_HANDLER (execute_data=0xb70540c4)
    at /home/weltling/dws/src/php-5.5-nts/Zend/zend_vm_execute.h:2293
#7  0x085b695c in execute_ex (execute_data=0xb70540c4) at 
/home/weltling/dws/src/php-5.5-nts/Zend/zend_vm_execute.h:356
#8  0x085b7023 in zend_execute (op_array=0xb70713a8) at 
/home/weltling/dws/src/php-5.5-nts/Zend/zend_vm_execute.h:381
#9  0x0857ed2d in zend_execute_scripts (type=8, retval=0x0, file_count=3)
    at /home/weltling/dws/src/php-5.5-nts/Zend/zend.c:1316
#10 0x085023ec in php_execute_script (primary_file=0xbfffdff0) at 
/home/weltling/dws/src/php-5.5-nts/main/main.c:2479
#11 0x086a7d59 in do_cli (argc=2, argv=0xbffff284) at 
/home/weltling/dws/src/php-5.5-nts/sapi/cli/php_cli.c:988
#12 0x086a8ec3 in main (argc=2, argv=0xbffff284) at 
/home/weltling/dws/src/php-5.5-nts/sapi/cli/php_cli.c:1364


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



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

Reply via email to