summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Haubenwallner <michael.haubenwallner@ssi-schaefer.com>2019-02-08 15:38:56 +0100
committerCorinna Vinschen <corinna@vinschen.de>2019-02-11 14:28:00 +0100
commitf6be530a23789124f4eb0bbab3b87a7b1335057a (patch)
tree9bd61953ec1269d0103becb6d3f1e70c64aa2765
parent1ba66fe8fa94b2148c12beae9948b0cdf6bf1ffa (diff)
downloadcygnal-f6be530a23789124f4eb0bbab3b87a7b1335057a.tar.gz
cygnal-f6be530a23789124f4eb0bbab3b87a7b1335057a.tar.bz2
cygnal-f6be530a23789124f4eb0bbab3b87a7b1335057a.zip
Cygwin: forkables: update doc, add release notes
-rw-r--r--winsup/cygwin/release/3.06
-rw-r--r--winsup/doc/highlights.xml28
-rw-r--r--winsup/doc/new-features.xml7
3 files changed, 30 insertions, 11 deletions
diff --git a/winsup/cygwin/release/3.0 b/winsup/cygwin/release/3.0
index da0fe0961..da357558d 100644
--- a/winsup/cygwin/release/3.0
+++ b/winsup/cygwin/release/3.0
@@ -31,6 +31,12 @@ What's new:
- New APIs: signalfd, timerfd_create, timerfd_gettime, timerfd_settime,
timer_getoverrun.
+- fork(2) now is able to recover from when an in-use executable/dll is
+ removed or replaced during process runtime. This feature is disabled by
+ default and limited to exes/dlls on the same NTFS partition as the Cygwin
+ installation. For more information and how to enable, please refer to
+ https://www.cygwin.com/cygwin-ug-net/highlights.html#ov-hi-process
+
What changed:
-------------
diff --git a/winsup/doc/highlights.xml b/winsup/doc/highlights.xml
index 25b227382..67e326cb4 100644
--- a/winsup/doc/highlights.xml
+++ b/winsup/doc/highlights.xml
@@ -202,21 +202,27 @@ While Windows does not allow to remove binaries in use from the file
system, they still can be renamed or moved into the recycle bin, as
outlined for unlink(2) in <xref linkend="ov-new1.7-file"></xref>.
To allow an existing process to fork, the original binary files need to be
-available via their original file names, but they may reside in
-different directories when using the <ulink
+available via their original file names, but they may reside in a
+different directory when using the <ulink
url="https://social.msdn.microsoft.com/search/en-US?query=dotlocal%20dll%20redirection"
>DotLocal (.local) Dll Redirection</ulink> feature.
Since NTFS does support hardlinks, when the fork fails we try again, but
create a private directory containing hardlinks to the original files as
-well as the .local file now. The private directory for the hardlinks is
-/var/run/cygfork/, which you have to create manually for now if you need to
-protect fork against exe- and dll- updates on your Cygwin instance. As
-hardlinks cannot be used across multiple NTFS file systems, please make sure
-your exe- and dll- replacing operations operate on the same single NTFS file
-system as your Cygwin instance and the /var/run/cygfork/ directory.</para>
-
-<para>We create one directory per user, application and application age,
-and remove it when no more processes use that directory. To indicate
+well as the <literal>.local</literal> file now. The base directory for the
+private hardlink directory is <literal>/var/run/cygfork/</literal>, which
+you have to create manually for now if you need to protect fork against
+updates to executables and dlls on your Cygwin instance. As hardlinks
+cannot be used across multiple NTFS file systems, please make sure your
+executable and dll replacing operations operate on the same single NTFS file
+system as your Cygwin instance and the <literal>/var/run/cygfork/</literal>
+directory. Note that this private hardlink directory also does help for
+when a wrong dll is found in the parent process' current working directory.
+To enable creating the hardlinks, you need to stop all currently running
+Cygwin processes after creating this directory, once per Cygwin installation:
+<literallayout>$ mkdir --mode=a=rwxt /var/run/cygfork</literallayout></para>
+
+<para>We create one hardlink directory per user, application and application
+age, and remove it when no more processes use that directory. To indicate
whether a directory still is in use, we define a mutex name similar to
the directory name. As mutexes are destroyed when no process holds a
handle open any more, we can clean up even after power loss or similar:
diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml
index 6801e3eeb..8fc0ac6fe 100644
--- a/winsup/doc/new-features.xml
+++ b/winsup/doc/new-features.xml
@@ -107,6 +107,13 @@ Native Windows processes not started by Cygwin processes are mapped
into the range beyond 65535.
</para></listitem>
+<listitem><para>
+fork(2) now is able to recover from when an in-use executable/dll is
+removed or replaced during process runtime. This feature is disabled by
+default and limited to exes/dlls on the same NTFS partition as the Cygwin
+installation. For more information and how to enable, please refer to
+<xref linkend="ov-hi-process"></xref>.
+</para></listitem>
</itemizedlist>
</sect2>