Improvements to fork handling (1/5)

Ryan Johnson ryan.johnson@cs.utoronto.ca
Tue May 17 11:14:00 GMT 2011


Any feedback on these patches?

On 11/05/2011 2:31 PM, Ryan Johnson wrote:
> Hi all,
>
> This is the first of a series of patches, sent in separate emails as 
> requested.
>
> The first patch allows a child which failed due to address space 
> clobbers to report cleanly back to the parent. As a result, DLL_LINK 
> which land wrong, DLL_LOAD whose space gets clobbered, and failure to 
> replicate the cygheap, generate retries and dispense with the terminal 
> spam. Handling of unexpected errors should not have changed. Further, 
> the patch fixes several sources of access violations and crashes, 
> including:
> - accessing invalid state after failing to notice that a 
> statically-linked dll loaded at the wrong location
> - accessing invalid state while running dtors on a failed forkee. I 
> follow cgf's approach of simply not running any dtors, based on the 
> observation that dlls in the parent (gcc_s!) can store state about 
> other dlls and crash trying to access that state in the child, even if 
> they appeared to map properly in both processes.
> - attempting to generate a stack trace when somebody in the call chain 
> used alloca(). This one is only sidestepped here, because we eliminate 
> the access violations and api_fatal calls which would have triggered 
> the problematic stack traces. I have a separate patch which allows 
> offending functions to disable stack traces, if folks are interested, 
> but it was kind of noisy so I left it out for now (cygwin uses alloca 
> pretty liberally!).
>
> Ryan



More information about the Cygwin-patches mailing list