作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我将 libcurl 用于 FTP 工作,它工作正常,但如果闲置一段时间,它就会崩溃。这是回溯,尽管阅读了一段时间,但我还是无法理解哪里出了问题。跟踪没有显示我的函数崩溃起源于何处,因此调试器在这里留下了孤儿。如果增加值(value),我会使用线程Linux 上的编译器是 GCC 4.7
0 0x00007fff8e09b524 addbyter /home/stefano/Desktop/myproject/curl-7.33.0/lib/mprintf.c 914
1 0x00007fff8e09a32f dprintf_formatf /home/stefano/Desktop/myproject/curl-7.33.0/lib/mprintf.c 572
2 0x00007fff8e09b5a4 curl_mvsnprintf /home/stefano/Desktop/myproject/curl-7.33.0/lib/mprintf.c 932
3 0x00007fff8e089510 Curl_failf /home/stefano/Desktop/myproject/curl-7.33.0/lib/sendf.c 152
4 0x00007fff8e07dbf4 Curl_resolv_timeout /home/stefano/Desktop/myproject/curl-7.33.0/lib/hostip.c 618
5 0x00007fff78012bf8 ??
6 0x000000c300000016 ??
7 0x00007fff8e0d3604 ??
8 0x0000000000000002 ??
9 0x00000000001b7740 ??
10 0x0000000000000000 ??
更新 1在debugger下再次运行,在一行遇到了crash
FILE *fd;
fd = fopen(files[i].c_str(), "rb"); //<---here goes the crash!
files[i].c_str() 应该从 wxString 给出 const* char新的BT是
0 0x00007fff8e08952a Curl_failf /home/stefano/Desktop/myproject/curl-7.33.0/lib/sendf.c 154
1 0x00007fff8e07dbf4 Curl_resolv_timeout /home/stefano/Desktop/myproject/curl-7.33.0/lib/hostip.c 618
2 0x00007fff780158c8 ??
3 0x00000000001b7730 ??
4 0x00007fff78009808 ??
5 0x00007fff78015e79 ??
6 0x00007fff78009808 ??
7 0x00007fff8c8a04a0 ??
8 0x00007fff8e0c84ca ftp_multi_statemach /home/stefano/Desktop/myproject/curl-7.33.0/lib/ftp.c 3113
最佳答案
如果您在非主线程中使用 curl,则可能会导致此类错误。当 curl 无法解析 dns 条目时,它会发送一个信号(默认情况下)以超时中断线程。信号不是线程安全的,可能会导致崩溃。您应该使用 --enable-threaded-resolver 或支持 c-ares 来编译 libcurl。
对我来说,完全禁用信号也很有用
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1)
关于c++ - 空闲时间后 libcurl 奇怪崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20835172/
我是一名优秀的程序员,十分优秀!