I have a question about the Lua source code.
I use lua library in Linux environment, but deadlock phenomenon, the following is part of the stack information:
Thread 4 (Thread 0x7f7ae26ec700 (LWP 14396)):
#0 0x00007f7b7ab03d1c in __lll_lock_wait_private () from /lib64/libc.so.6
#1 0x00007f7b7aa76640 in _L_lock_4452 () from /lib64/libc.so.6
#2 0x00007f7b7aa75a08 in _IO_flush_all_lockp () from /lib64/libc.so.6
Thread 181 (Thread 0x7f7b3af9d700 (LWP 14197)):
#0 0x00007f7b7ab03d1c in __lll_lock_wait_private () from /lib64/libc.so.6
#1 0x00007f7b7aa76728 in _L_lock_6097 () from /lib64/libc.so.6
#2 0x00007f7b7aa7647f in __GI__IO_list_lock () from /lib64/libc.so.6
#3 0x00007f7b7aabd087 in fork () from /lib64/libc.so.6
The problem lies in the use of the following macro:
#define l_popen(L,c,m) (fflush(NULL), popen(c,m))
It is fflush(NULL) that causes the deadlock. I can avoid this deadlock problem if I don't call fflush before popen.
So my question is:
1. Can I just remove fflush(NULL)? What are the risks?
2. If not, is there any other way to solve the problem?
Thank you! :)