我的程序死鎖,這裏是僵局的前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()。典型的世界末日場景涉及多線程內存分配器,該分配器將在分叉進程中立即中斷。 –