Cygwin: forkables: update doc, add release notes
This commit is contained in:
		
				
					committed by
					
						 Corinna Vinschen
						Corinna Vinschen
					
				
			
			
				
	
			
			
			
						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> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user