Peter Amstutz
2017-06-27 17:05:12 UTC
Hi all,
We have some software that uses llfuse which includes a test suite
which initializes and closes llfuse many times. Most of the time it
works fine, but occasionally a test deadlocks during FUSE shutdown
(this doesn't seem related to the behavior of any particular test).
This relevant stack trace from gdb suggests a deadlock acquiring the
GIL in llfuse_fuse_destroy. Does anyone have any ideas what might be
wrong?
#0 sem_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S:85
#1 0x00000000004f6785 in PyEval_RestoreThread ()
#2 0x00000000005c8919 in PyGILState_Ensure ()
#3 0x00007f3f84a09ece in __pyx_f_6llfuse_fuse_destroy
(__pyx_v_userdata=<optimized out>) at src/llfuse.c:6950
#4 0x00007f3f8477c7a2 in ?? () from /lib/x86_64-linux-gnu/libfuse.so.2
#5 0x00007f3f84782da3 in fuse_session_destroy () from
/lib/x86_64-linux-gnu/libfuse.so.2
#6 0x00007f3f849c77b9 in __pyx_pf_6llfuse_12close
(__pyx_self=<optimized out>, __pyx_v_unmount=0x92a970
<_Py_TrueStruct>) at src/llfuse.c:38008
#7 __pyx_pw_6llfuse_13close (__pyx_self=<optimized out>,
__pyx_args=<optimized out>, __pyx_kwds=<optimized out>) at
src/llfuse.c:37938
#8 0x00000000004c9e05 in PyEval_EvalFrameEx ()
#9 0x00000000004ca592 in PyEval_EvalFrameEx ()
#10 0x00000000004e5fe8 in ?? ()
#11 0x00000000004cc36b in PyEval_EvalFrameEx ()
#12 0x00000000004ca592 in PyEval_EvalFrameEx ()
#13 0x00000000004ca592 in PyEval_EvalFrameEx ()
#14 0x00000000004e5fe8 in ?? ()
#15 0x00000000005045d8 in ?? ()
#16 0x00000000004d1a1b in PyEval_CallObjectWithKeywords ()
#17 0x00000000005bc102 in ?? ()
#18 0x00007f3f8bdf9064 in start_thread (arg=0x7f3f81fd9700) at
pthread_create.c:309
#19 0x00007f3f8b20b62d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:111
Thanks,
Peter
We have some software that uses llfuse which includes a test suite
which initializes and closes llfuse many times. Most of the time it
works fine, but occasionally a test deadlocks during FUSE shutdown
(this doesn't seem related to the behavior of any particular test).
This relevant stack trace from gdb suggests a deadlock acquiring the
GIL in llfuse_fuse_destroy. Does anyone have any ideas what might be
wrong?
#0 sem_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S:85
#1 0x00000000004f6785 in PyEval_RestoreThread ()
#2 0x00000000005c8919 in PyGILState_Ensure ()
#3 0x00007f3f84a09ece in __pyx_f_6llfuse_fuse_destroy
(__pyx_v_userdata=<optimized out>) at src/llfuse.c:6950
#4 0x00007f3f8477c7a2 in ?? () from /lib/x86_64-linux-gnu/libfuse.so.2
#5 0x00007f3f84782da3 in fuse_session_destroy () from
/lib/x86_64-linux-gnu/libfuse.so.2
#6 0x00007f3f849c77b9 in __pyx_pf_6llfuse_12close
(__pyx_self=<optimized out>, __pyx_v_unmount=0x92a970
<_Py_TrueStruct>) at src/llfuse.c:38008
#7 __pyx_pw_6llfuse_13close (__pyx_self=<optimized out>,
__pyx_args=<optimized out>, __pyx_kwds=<optimized out>) at
src/llfuse.c:37938
#8 0x00000000004c9e05 in PyEval_EvalFrameEx ()
#9 0x00000000004ca592 in PyEval_EvalFrameEx ()
#10 0x00000000004e5fe8 in ?? ()
#11 0x00000000004cc36b in PyEval_EvalFrameEx ()
#12 0x00000000004ca592 in PyEval_EvalFrameEx ()
#13 0x00000000004ca592 in PyEval_EvalFrameEx ()
#14 0x00000000004e5fe8 in ?? ()
#15 0x00000000005045d8 in ?? ()
#16 0x00000000004d1a1b in PyEval_CallObjectWithKeywords ()
#17 0x00000000005bc102 in ?? ()
#18 0x00007f3f8bdf9064 in start_thread (arg=0x7f3f81fd9700) at
pthread_create.c:309
#19 0x00007f3f8b20b62d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:111
Thanks,
Peter