私のアプリケーションが何らかの不明な理由でlibcurlを使用してクラッシュしました。 GuardMallocを使用している間、同じコードの多くのループの後に自発的にクラッシュしました。OSX(10.6.8)でlibcurl(7.19,7)が_mdns_query_callbackでクラッシュする
libcurlのバージョン情報:
カール7.19.7(ユニバーサル・りんご・darwin10.0)のlibcurl/7.19.7のOpenSSL/0.9.8r のzlib/1.2.3プロトコル:TFTPのftpのtelnetのdictのLDAP HTTPファイルのhttps FTPS 特長:GSS-ネゴシエートのIPv6については、largefile NTLM SSL
libzをソースコード:ここで
char * process_url(char * url,char * post){
CURLcode res;
curl_easy_reset(curl);
if(curl){
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10);
curl_easy_setopt(curl, CURLOPT_POSTREDIR,CURL_REDIR_POST_ALL);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION,1L);
curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.107 Safari/535.1");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION,write_to_string);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
if (post) {
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, post);
}
ResponseStruct result;
result.response = malloc(sizeof(char));
result.response[0] = '\0';
result.length = 1;
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &result);
res = curl_easy_perform(curl); //CRASHED HERE
if (res) {
printf("CURL FAILED WITH ERROR CODE %i\n",(int)res);
return NULL;
}
sec_sleep(1); //Prevent passing float limit.
return result.response;
}
return NULL;
}
関数スタックです。
#0 0x7fff869d22ae in _mdns_query_callback
#1 0x7fff869bfc29 in handle_query_response
#2 0x7fff869bf08b in DNSServiceProcessResult
#3 0x7fff869d1a71 in _mdns_query_mDNSResponder
#4 0x7fff869d0c61 in _mdns_search
#5 0x7fff869cfffc in _mdns_addrinfo
#6 0x7fff869cf059 in search_addrinfo
#7 0x7fff869cea7a in si_addrinfo
#8 0x7fff869ce48d in getaddrinfo
#9 0x7fff831695fc in Curl_getaddrinfo_ex
#10 0x7fff83164a3d in Curl_getaddrinfo
#11 0x7fff8313dda3 in Curl_resolv
#12 0x7fff8313dfb6 in Curl_resolv_timeout
#13 0x7fff8314b225 in resolve_server
#14 0x7fff83150aaf in create_conn
#15 0x7fff83150c08 in Curl_connect
#16 0x7fff8315b817 in Curl_perform
#17 0x100001126 in process_url at main.c:90
#18 0x1000013f7 in cancel_outstanding_order at main.c:158
#19 0x100002aac in main at main.c:554
プログラムで使用するスレッドはありません。私は自分のデータintをデバッガでチェックしても問題ありません。 libcurlは何か好きではありません。解決策はありますか?
ありがとうございます。
最も一般的な問題は、渡されたURLに問題があることです。どのようにそれを生成するのですか? –
URLはhttps://api-test.tradehill.com/APIv1/USD/GetBalance –