libcurl 使用的一个错误

来源:互联网 发布:电器仿真cad软件 编辑:程序博客网 时间:2024/06/05 03:30

转载时请注明出处和作者联系方式:http://blog.csdn.net/mimepp

作者联系方式:YU TAO <yut616 at sohu dot com> 

关键字: libcurl, liboauth, kpfs, __longjmp_chk, CURLOPT_NOSIGNAL

近来遇到一个 libcurl crash 的问题,这里记录一下。

出错的 log:

*** longjmp causes uninitialized stack frame ***:kpfs.svn/src/.libs/lt-kpfs terminated======= Backtrace: =========/lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x45)[0xb74c7dd5]/lib/i386-linux-gnu/libc.so.6(+0xffd2a)[0xb74c7d2a]/lib/i386-linux-gnu/libc.so.6(__longjmp_chk+0x4b)[0xb74c7c9b]/usr/lib/i386-linux-gnu/libcurl-nss.so.4(+0x9f15)[0xb7577f15][0xb7741400][0xb7741424]/lib/i386-linux-gnu/libpthread.so.0(sem_wait+0x45)[0xb76fbcc5]/lib/libfuse.so.2(fuse_session_loop_mt+0xe4)[0xb75d8354]/lib/libfuse.so.2(fuse_loop_mt+0x27)[0xb75dc297]/lib/libfuse.so.2(+0x16b35)[0xb75deb35]kpfs.svn/src/.libs/lt-kpfs[0x804936b]/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0xb73e14d3]kpfs.svn/src/.libs/lt-kpfs[0x804941d]======= Memory map: ========
查到是需要在使用 libcurl 时,将 signal 全部关闭:curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1),否则的话,出现解析 DNS 超时后,会引起 libcurl crash。

检查 liboauth 也有增加这个内容,但需要打开:--with-curltimeout,详细见:

http://code.google.com/p/kpfs/wiki/why_and_how_to_compile_install_liboauth_0_9_5

原创粉丝点击