Page 1 of 1

CuRL crashes on consecutive requests

Posted: Mon May 26, 2008 1:22 pm
by impulse()
I have a PHP script which makes a CuRL call which then returns an array which has up to 600 values. I then have a foreach loop which goes through each of those entries and makes a CuRL request for each of those. But I've noticed after 100 or so calls the script crashes with the following:
*** glibc detected *** php: double free or corruption (!prev): 0x0d6264e0 ***
======= Backtrace: =========
/lib/libc.so.6[0x64fac1]
/lib/libc.so.6(cfree+0x90)[0x6530f0]
/usr/lib/libnspr4.so(PR_Free+0x38)[0x5f1c0b8]
/usr/lib/libnsspem.so[0x59cba5]
/usr/lib/libnsspem.so[0x58c2d8]
/usr/lib/libnsspem.so[0x58d0be]
/usr/lib/libnsspem.so[0x591875]
/usr/lib/libnsspem.so[0x598d29]
/usr/lib/libnsspem.so[0x5884ec]
/usr/lib/libnss3.so[0x5fa3b62]
/usr/lib/libnss3.so(PK11_CreateGenericObject+0x50)[0x5fa3d80]
/usr/lib/libcurl.so.4[0x1427f8]
/usr/lib/libcurl.so.4(Curl_nss_connect+0x5e6)[0x143446]
/usr/lib/libcurl.so.4(Curl_ssl_connect+0x2f)[0x13fddf]
/usr/lib/libcurl.so.4(Curl_http_connect+0xa7)[0x120077]
/usr/lib/libcurl.so.4(Curl_protocol_connect+0x7b)[0x128a3b]
/usr/lib/libcurl.so.4(Curl_connect+0x2e8)[0x12b648]
/usr/lib/libcurl.so.4(Curl_perform+0xfc)[0x13517c]
/usr/lib/libcurl.so.4(curl_easy_perform+0x5d)[0x1357cd]
php(zif_curl_exec+0xa2)[0x8092fe2]
php[0x8226420]
php(execute+0x188)[0x8225258]
php(zend_execute_scripts+0x1ba)[0x820432a]
php(php_execute_script+0x246)[0x81bf3c6]
php(main+0x128b)[0x8289d2b]
/lib/libc.so.6(__libc_start_main+0xe0)[0x5fc390]
php[0x8078281]
======= Memory map: ========
00110000-00111000 r-xp 00110000 00:00 0 [vdso]
00111000-0014e000 r-xp 00000000 fd:00 3716547 /usr/lib/libcurl.so.4.0.1
0014e000-00150000 rwxp 0003c000 fd:00 3716547 /usr/lib/libcurl.so.4.0.1
00150000-00157000 r-xp 00000000 fd:00 3766249 /usr/lib/php/modules/dbase.so
00157000-00158000 rwxp 00006000 fd:00 3766249 /usr/lib/php/modules/dbase.so
00158000-0015f000 r-xp 00000000 fd:00 3766250 /usr/lib/php/modules/json.so
0015f000-00160000 rwxp 00006000 fd:00 3766250 /usr/lib/php/modules/json.so
00160000-0016a000 r-xp 00000000 fd:00 3767170 /usr/lib/php/modules/ldap.so
0016a000-0016b000 rwxp 00009000 fd:00 3767170 /usr/lib/php/modules/ldap.so
0016b000-00178000 r-xp 00000000 fd:00 3716346 /usr/lib/liblber-2.3.so.0.2.27
00178000-00179000 rwxp 0000c000 fd:00 3716346 /usr/lib/liblber-2.3.so.0.2.27
00179000-00340000 r-xp 00000000 fd:00 3765313 /usr/lib/php/modules/mbstring.so
00340000-00345000 rwxp 001c6000 fd:00 3765313 /usr/lib/php/modules/mbstring.so
00345000-00350000 r-xp 00000000 fd:00 3767167 /usr/lib/php/modules/mysql.so
00350000-00351000 rwxp 0000b000 fd:00 3767167 /usr/lib/php/modules/mysql.so
00351000-00369000 r-xp 00000000 fd:00 3767168 /usr/lib/php/modules/mysqli.so
00369000-0036b000 rwxp 00018000 fd:00 3767168 /usr/lib/php/modules/mysqli.so
0036b000-0037f000 r-xp 00000000 fd:00 3767102 /usr/lib/php/modules/pdo.so
0037f000-00381000 rwxp 00013000 fd:00 3767102 /usr/lib/php/modules/pdo.so
00381000-00387000 r-xp 00000000 fd:00 3767169 /usr/lib/php/modules/pdo_mysql.so
00387000-00388000 rwxp 00005000 fd:00 3767169 /usr/lib/php/modules/pdo_mysql.so
00388000-0038d000 r-xp 00000000 fd:00 3767103 /usr/lib/php/modules/pdo_sqlite.so
0038d000-0038e000 rwxp 00004000 fd:00 3767103 /usr/lib/php/modules/pdo_sqlite.so
0038e000-00395000 r-xp 00000000 fd:00 5592731 /lib/librt-2.7.so
00395000-00396000 r-xp 00007000 fd:00 5592731 /lib/librt-2.7.so
00396000-00397000 rwxp 00008000 fd:00 5592731 /lib/librt-2.7.so
00397000-00400000 r-xp 00000000 fd:00 3716386 /usr/lib/libsqlite3.so.0.8.6
00400000-00402000 rwxp 00068000 fd:00 3716386 /usr/lib/libsqlite3.so.0.8.6
00402000-00412000 r-xp 00000000 fd:00 3766251 /usr/lib/php/modules/zip.so
00412000-00413000 rwxp 0000f000 fd:00 3766251 /usr/lib/php/modules/zip.so
00413000-0041d000 r-xp 00000000 fd:00 5592492 /lib/libnss_files-2.7.so
0041d000-0041e000 r-xp 00009000 fd:00 5592492 /lib/libnss_files-2.7.so
0041e000-0041f000 rwxp 0000a000 fd:00 5592492 /lib/libnss_files-2.7.so
0041f000-00423000 r-xp 00000000 fd:00 5592490 /lib/libnss_dns-2.7.so
00423000-00424000 r-xp 00003000 fd:00 5592490 /lib/libnss_dns-2.7.so
00424000-00425000 rwxp 00004000 fd:00 5592490 /lib/libnss_dns-2.7.so
00425000-00477000 r-xp 00000000 fd:00 3701231 /usr/lib/libsoftokn3.so
00477000-0047b000 rwxp 00051000 fd:00 3701231 /usr/lib/libsoftokn3.so
00Aborted
I have Googled about an some have suggested that it's because I don't close the CuRL handle but in my script I do close the handle. I'm running PHP5 on Fedora 8. Can anybody suggest why this may be happening.

Thanks in advance, Stephen

Re: CuRL crashes on consecutive requests

Posted: Mon May 26, 2008 5:58 pm
by whiterabbit
If you are executing multiple URL's via CURL, you may want to look into curl_multi_init(). Of course you would have to use the corresponding functions for that as well.

curl_multi_exec
curl_multi_getcontent
curl_multi_close
curl_multi_add_handle

Maybe that will help with your problem. If that doesn't help, please post your code so we can see exactly what is going on.