* fcntl.cc (fcntl64): Don't lock fd table when performing locking.
* flock.cc (flock): Ditto.
(lockf): Ditto.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
+2015-11-05 Corinna Vinschen <corinna@vinschen.de>
+
+ * fcntl.cc (fcntl64): Don't lock fd table when performing locking.
+ * flock.cc (flock): Ditto.
+ (lockf): Ditto.
+
2015-11-05 Corinna Vinschen <corinna@vinschen.de>
* sigproc.cc (pending_signals::clear): Yet another fix to fix the fix.
/* fcntl.cc: fcntl syscall
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2008, 2009,
- 2010, 2011, 2012, 2013, 2014 Red Hat, Inc.
+ 2010, 2011, 2012, 2013, 2014, 2015 Red Hat, Inc.
This file is part of Cygwin.
{
debug_printf ("fcntl(%d, %d, ...)", fd, cmd);
- cygheap_fdget cfd (fd, true);
+
+ /* Don't lock the fd table when performing locking calls. */
+ cygheap_fdget cfd (fd, cmd < F_GETLK || cmd > F_SETLKW);
if (cfd < 0)
__leave;
/* flock.cc. NT specific implementation of advisory file locking.
- Copyright 2003, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Red Hat, Inc.
+ Copyright 2003, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Red Hat, Inc.
This file is part of Cygwin.
__try
{
- cygheap_fdget cfd (fd, true);
+ cygheap_fdget cfd (fd);
if (cfd < 0)
__leave;
__try
{
- cygheap_fdget cfd (filedes, true);
+ cygheap_fdget cfd (filedes);
if (cfd < 0)
__leave;
- Workaround a bug in Windows 10 NLS handling.
Addresses: https://cygwin.com/ml/cygwin/2015-10/msg00547.html
+
+- Avoid unnecessry locking and thus a potential deadlock in flock(2).
+ Addresses: https://cygwin.com/ml/cygwin/2015-11/msg00095.html