Cygwin: forkables: update doc, add release notes
This commit is contained in:
parent
1ba66fe8fa
commit
f6be530a23
|
@ -31,6 +31,12 @@ What's new:
|
||||||
- New APIs: signalfd, timerfd_create, timerfd_gettime, timerfd_settime,
|
- New APIs: signalfd, timerfd_create, timerfd_gettime, timerfd_settime,
|
||||||
timer_getoverrun.
|
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:
|
What changed:
|
||||||
-------------
|
-------------
|
||||||
|
|
|
@ -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
|
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>.
|
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
|
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
|
available via their original file names, but they may reside in a
|
||||||
different directories when using the <ulink
|
different directory when using the <ulink
|
||||||
url="https://social.msdn.microsoft.com/search/en-US?query=dotlocal%20dll%20redirection"
|
url="https://social.msdn.microsoft.com/search/en-US?query=dotlocal%20dll%20redirection"
|
||||||
>DotLocal (.local) Dll Redirection</ulink> feature.
|
>DotLocal (.local) Dll Redirection</ulink> feature.
|
||||||
Since NTFS does support hardlinks, when the fork fails we try again, but
|
Since NTFS does support hardlinks, when the fork fails we try again, but
|
||||||
create a private directory containing hardlinks to the original files as
|
create a private directory containing hardlinks to the original files as
|
||||||
well as the .local file now. The private directory for the hardlinks is
|
well as the <literal>.local</literal> file now. The base directory for the
|
||||||
/var/run/cygfork/, which you have to create manually for now if you need to
|
private hardlink directory is <literal>/var/run/cygfork/</literal>, which
|
||||||
protect fork against exe- and dll- updates on your Cygwin instance. As
|
you have to create manually for now if you need to protect fork against
|
||||||
hardlinks cannot be used across multiple NTFS file systems, please make sure
|
updates to executables and dlls on your Cygwin instance. As hardlinks
|
||||||
your exe- and dll- replacing operations operate on the same single NTFS file
|
cannot be used across multiple NTFS file systems, please make sure your
|
||||||
system as your Cygwin instance and the /var/run/cygfork/ directory.</para>
|
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 directory per user, application and application age,
|
<para>We create one hardlink directory per user, application and application
|
||||||
and remove it when no more processes use that directory. To indicate
|
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
|
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
|
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:
|
handle open any more, we can clean up even after power loss or similar:
|
||||||
|
|
|
@ -107,6 +107,13 @@ Native Windows processes not started by Cygwin processes are mapped
|
||||||
into the range beyond 65535.
|
into the range beyond 65535.
|
||||||
</para></listitem>
|
</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>
|
</itemizedlist>
|
||||||
|
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
Loading…
Reference in New Issue