Problems with: Improvements to fork handling (2/5)

Christopher Faylor
Sun May 29 00:23:00 GMT 2011

On Sat, May 28, 2011 at 06:40:30PM -0400, Ryan Johnson wrote:
>On 28/05/2011 4:50 PM, Christopher Faylor wrote:
>> On Wed, May 11, 2011 at 02:31:37PM -0400, Ryan Johnson wrote:
>>> This patch has the parent sort its dll list topologically by
>>> dependencies. Previously, attempts to load a DLL_LOAD dll risked pulling
>>> in dependencies automatically, and the latter would then not benefit
>> >from the code which "encourages" them to land in the right places. The
>>> dependency tracking is achieved using a simple class which allows to
>>> introspect a mapped dll image and pull out the dependencies it lists.
>>> The code currently rebuilds the dependency list at every fork rather
>>> than attempt to update it properly as modules are loaded and unloaded.
>>> Note that the topsort optimization affects only cygwin dlls, so any
>>> windows dlls which are pulled in dynamically (directly or indirectly)
>>> will still impose the usual risk of address space clobbers.
>> Bad news.
>> I applied this patch and the one after it but then noticed that zsh started
>> producing:  "bad address: " errors.
>> path:4: bad address: /share/bin/dopath
>> term:1: bad address: /bin/tee
>> The errors disappear when I back this patch out.
>> FWIW, I was running "zsh -l".  I have somewhat complicated
>> .zshrc/.zlogin/.zshenv files.  I'll post them if needed.
>> Until this is fixed, this patch and the subsequent ones which rely on
>> it, can't go in.  I did commit this fix but it has been backed out now.
>Hmm. I also see bad address errors in bash sometimes. However, when I 
>searched through the cygwin mailing list archives I saw that other 
>people have reported this problem in the past [1], so I figured it was 
>some existing, sporadic issue rather than my patch...
>Could you tell me what a 'bad address' error is? I'd be happy to debug 
>this, but really don't know what kind of bug I'm hunting here, except 
>that it might be a problem wow64 and suspending threads [2]. Whatever 
>became of these bad address errors the last time(s) they cropped up? I 
>can't find any resolution with Google, at least.

If I had any insight beyond "It works without the patch and it doesn't
work with it" I would have shared it.


Pulling random messages out of the mailing list with the term "bad
address" in them is not going to fix the problem.  Given all of the
stuff you're doing with memory, it makes sense to me that your code has
a problem rather than this is a coincidental manifestation of a problem
reported three months ago.


More information about the Cygwin-patches mailing list