我的程序死锁,这里是僵局的前4帧:死锁内malloc_atfork
#0 __lll_lock_wait_private() at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:97
#1 0x00007f926250b7aa in _L_lock_12502() at malloc.c:3507
#2 0x00007f926250a2df in malloc_atfork (sz=12, caller=<value optimized out>) at arena.c:217
#3 0x00007f926250881a in __libc_calloc (n=<value optimized out>, elem_size=<value optimized out>) at malloc.c:4040
我倾向于这是造成东西我做错了的问题。我们在强调服务器并将其用于高使用率级别时看到了僵局,但除此之外,我们无法重现这一点。有谁知道这是什么样的错误?
有没有可能malloc需要真正的大数字?(例如3gb +) –
@dheer:你可以在死锁时显示所有线程的调用堆栈。从这个调用堆栈看起来像这个线程是等待一些其他线程获取的锁。 –
如果子进程没有立即覆盖程序映像,通常不可能在多线程程序中使用fork()。典型的世界末日场景涉及多线程内存分配器,该分配器将在分叉进程中立即中断。 –