diff options
author | Michael Haubenwallner <michael.haubenwallner@ssi-schaefer.com> | 2019-02-08 17:38:56 +0300 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2019-02-11 16:28:00 +0300 |
commit | f6be530a23789124f4eb0bbab3b87a7b1335057a (patch) | |
tree | 9bd61953ec1269d0103becb6d3f1e70c64aa2765 /winsup/doc/highlights.xml | |
parent | 1ba66fe8fa94b2148c12beae9948b0cdf6bf1ffa (diff) |
Cygwin: forkables: update doc, add release notes
Diffstat (limited to 'winsup/doc/highlights.xml')
-rw-r--r-- | winsup/doc/highlights.xml | 28 |
1 files changed, 17 insertions, 11 deletions
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: |