c - 从子线程调用时 getaddrinfo 和 gethostbyname 崩溃?

标签 c linux multithreading getaddrinfo gethostbyname

我们创建了一个在 Ubuntu 上运行的多线程、单核应用程序。

当我们从主进程调用getaddrinfogethostbyname时,它不会崩溃。

但是,当我们从主进程创建线程并从创建的线程调用函数 getaddrinfogethostbyname 时,它总是崩溃。

请帮忙。 请找到下面的调用堆栈:

#0  0xf7e9f890 in ?? () from /lib/i386-linux-gnu/libc.so.6
#1  0xf7e9fa73 in __res_ninit () from /lib/i386-linux-gnu/libc.so.6
#2  0xf7ea0a68 in __res_maybe_init () from /lib/i386-linux-gnu/libc.so.6
#3  0xf7e663be in ?? () from /lib/i386-linux-gnu/libc.so.6
#4  0xf7e696bb in getaddrinfo () from /lib/i386-linux-gnu/libc.so.6
#5  0x080c4e35 in mn_task_entry (args=0xa6c4130 <ipc_os_input_params>) at /home/nextg/Alps_RT/mn/src/mn_main.c:699
#6  0xf7fa5d78 in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#7  0xf7e9001e in clone () from /lib/i386-linux-gnu/libc.so.6

最佳答案

getaddrinfo 崩溃的原因是,进行调用的子线程没有足够的堆栈空间。

关于c - 从子线程调用时 getaddrinfo 和 gethostbyname 崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26063276/

相关文章:

代码效果很好,但我不知道如何在第二步中进行逆向处理

c - 为什么 `execvp` 需要一个 `char *const argv[]` ?

c - 格式化字符串漏洞

Linux 中的共享中断线可以有不同的中断处理程序吗?

python - CherryPy 等待稍后停止的额外线程结束

c - 如何构建axis2c非官方源代码

MYSQL写在磁盘上不可见

c# - 在 ASP.Net/SignalR 环境中使用 System.Threading.Timer 的风险

c++ - 简单快速读取过程

c - 为什么我会遇到此代码的段错误?应该很简单?