现在的位置: 首页 > 综合 > 正文

libcurl 使用的一个错误

2013年08月12日 ⁄ 综合 ⁄ 共 1132字 ⁄ 字号 评论关闭

转载时请注明出处和作者联系方式: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

抱歉!评论已关闭.