【发布时间】:2014-01-17 01:56:25
【问题描述】:
我使用 libcurl 进行 FTP 工作,它工作正常,但如果闲置一段时间,它就会崩溃。这是回溯,尽管阅读了一段时间,但我无法理解出了什么问题。跟踪没有显示我的函数崩溃的来源,因此调试器在这里留下了孤儿。如果可以增加价值,我会使用线程 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
【问题讨论】:
-
在我看来,这似乎是您在代码中的某处损坏了内部 malloc() 结构,这很可能是由于在某处分配的空间不足所致。用 valgrind 编译你的代码并检查它是否抛出任何错误。
-
我使用 C++,不做任何分配。我正在尝试探索并查看 ths 是从哪里上升的。我会尝试 valgrind 选项
-
抱歉,没有看到 c++ 标签。尽管如此,写入一个也不应该在 c++ 中写入的内存位置也很容易。根据我的经验,通常运行良好的库中的崩溃大多是由这种错误触发的,这就是我建议它的原因。
-
@GuntramBlohm,我已经更新了我的问题并添加了一些信息。你能从那里给任何方向吗?我对 Cand 很浅,尽量避免使用 C 库,但这次我不能
-
当您在调试器中处于崩溃点时,让调试器打印 i。打印文件[i]。打印文件[i].c_str()。你觉得他们都好吗?如果
i超出数组范围,这将很好地解释崩溃。
标签: c++ gcc gdb wxwidgets libcurl