flock deadlock

Nahor via Cygwin <[email protected]>
Newsgroups gmane.os.cygwin
Message-ID <CA+1R0Vg7b7YyvgDf1=or8oxskEX4BJwMJQxxTKYaUHWPQeD9iQ@mail.gmail.com>
Hi Takashi,

Can your fix for flock (8f551af4f) also fix a similar issue between processes?
I figure that if Cygwin uses some kind of shared memory to handle
locking/inodes/..., then the issue that I had between threads would
also apply between processes.

There is a new test in MSYS2 fish that trigger something very similar
to the old issue but across processes this time:
- one application is blocked with this stacktrace:
========
Thread 1 (Thread 15116.0x8304 "fish"):
#0  0x00007ffb525c1c44 in ntdll!ZwWaitForSingleObject () from
/c/WINDOWS/SYSTEM32/ntdll.dll
#1  0x00007ffb4f5e76af in WaitForSingleObjectEx () from
/c/WINDOWS/System32/KERNELBASE.dll
#2  0x0000000180067731 in lockf_t::create_lock_obj
(this=this@entry=0x80000cb50) at
/d/S/B/src/msys2-runtime/winsup/cygwin/flock.cc:838
#3  0x0000000180069def in lf_setlock (lock=0x80000cb50,
node=0x80000c570, clean=0x7ffff42e8, fhdl=<optimized out>) at
/d/S/B/src/msys2-runtime/winsup/cygwin/flock.cc:1401
#4  fhandler_base::lock (this=<optimized out>, a_op=<optimized out>,
fl=<optimized out>) at
/d/S/B/src/msys2-runtime/winsup/cygwin/flock.cc:1148
#5  0x000000018006a6a4 in flock (fd=4, operation=1) at
/d/S/B/src/msys2-runtime/winsup/cygwin/flock.cc:1864
#6  0x00000001801ac5b4 in _sigfe () at sigfe.s:35
...
====
- another is blocked with the following:
====
Thread 1 (Thread 20040.0x75ac "fish"):
#0  0x00007ffb525c1c44 in ntdll!ZwWaitForSingleObject () from
/c/WINDOWS/SYSTEM32/ntdll.dll
#1  0x00007ffb4f5e76af in WaitForSingleObjectEx () from
/c/WINDOWS/System32/KERNELBASE.dll
#2  0x000000018006703b in inode_t::LOCK (this=0x800015360) at
/d/S/B/src/msys2-runtime/winsup/cygwin/flock.cc:314
#3  inode_t::get (dev=1881899537, ino=ino@entry=13792273859584895,
create_if_missing=create_if_missing@entry=false, lock=lock@entry=true)
at /d/S/B/src/msys2-runtime/winsup/cygwin/flock.cc:504
#4  0x0000000180068e31 in fhandler_base::del_my_locks
(this=0x800013a60, from=on_close) at
/d/S/B/src/msys2-runtime/winsup/cygwin/flock.cc:402
#5  0x000000018010d90f in fhandler_base::close_with_arch
(this=0x800013a60, flag=flag@entry=-1) at
/d/S/B/src/msys2-runtime/winsup/cygwin/fhandler/base.cc:1309
#6  0x00000001800de66b in __close (fd=5, flag=-1) at
/d/S/B/src/msys2-runtime/winsup/cygwin/syscalls.cc:1710
#7  close (fd=5) at /d/S/B/src/msys2-runtime/winsup/cygwin/syscalls.cc:1722
#8  0x00000001801ac5b4 in _sigfe () at sigfe.s:35
...
====

Killing one or the other unblock the remaining one.

Thanks,
Nahor

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.