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