Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
libcurl(7.19,7)在OSX(10.6.8)上与_mdns_query_回调一起崩溃_C_Macos_Curl_Exc Bad Access_Libcurl - Fatal编程技术网

libcurl(7.19,7)在OSX(10.6.8)上与_mdns_query_回调一起崩溃

libcurl(7.19,7)在OSX(10.6.8)上与_mdns_query_回调一起崩溃,c,macos,curl,exc-bad-access,libcurl,C,Macos,Curl,Exc Bad Access,Libcurl,由于未知原因,我的应用程序在使用libcurl时崩溃。在使用Guard Malloc时,它在相同代码的多次循环后自动崩溃 Libcurl版本信息: curl 7.19.7(universal-apple-darwin10.0)libcurl/7.19.7 OpenSSL/0.9.8r zlib/1.2.3协议:tftp ftp telnet dict ldap http文件https ftps 特点:GSS协商IPv6大文件NTLM SSL libz 源代码: char * process_ur

由于未知原因,我的应用程序在使用libcurl时崩溃。在使用Guard Malloc时,它在相同代码的多次循环后自动崩溃

Libcurl版本信息:

curl 7.19.7(universal-apple-darwin10.0)libcurl/7.19.7 OpenSSL/0.9.8r zlib/1.2.3协议:tftp ftp telnet dict ldap http文件https ftps 特点:GSS协商IPv6大文件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
程序中没有使用线程。我在调试器中检查了数据,一切正常。libcurl不喜欢什么东西。有什么解决办法吗

多谢各位

getaddrinfo()是操作系统(OS X)提供的一个libc调用

由于libcurl在许多没有崩溃的操作系统中使用了完全相同的名称resolve函数,因此我认为这表明问题确实存在于osx中,而不是libcurl中

不过,我从来没有看到过这个bug被报告过,如果它真的是OSX中的bug,那就很奇怪了,但我也从来没有在libcurl上看到过它被报告过。这可能意味着问题在您的应用程序中


如果您可以用一个独立的示例程序重复这个问题,那么将其提供给curl项目并请他们(我们)帮助您调试它可能是一个好主意。如果你不能用一个小程序重复它,这将是另一个迹象,表明问题是由你的应用程序引起的

最可能的问题是传入的URL有问题。如何生成它?URL是可以的,我将用一个小程序测试它,看看是否会出现错误。如果发生什么事,我会给你回电话的。谢谢