uclibc下使用libcurl的段错误(缺少hosts文件)

最近要在某个嵌入式Linux下使用libcurl这个库,该Linux的标准C库是uclibc,程序执行到curl_easy_perform总是会出现段错误。

使用gdb调试之后发现是uclibc使用gethostbyaddr_r的时候会假设hosts文件存在(/etc/hosts或者/etc/config/hosts),

但是恰好我们的Linux没有这个文件,这就导致无限循环(而且每次循环会动态分配2倍于上一次循环的内存来保存主机名称)

这样循环到一定次数,就会出现内存地址越界。(参见uclibc的libc/inet/getaddrinfo.c Line 656)。

posted @ 2013-06-07 16:40  梧留柒  阅读(769)  评论(0编辑  收藏  举报