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.