This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: [BUG] cygwin-1.3.3-2 -- making auto-import dlls


On Wed, Sep 19, 2001 at 12:34:51PM +1000, Robert Collins wrote:
>I went round this one with Paul's original patch.
>
>Auto image base is bad (for cygwin).
>
>Very bad.
>
>Ok, now the scare is over, here is why:
>
>Lemma: Cygwin1.dll is only relocatable if it is consistently relocated
>to the same address in _all_ process's that load cygwin1.dll. Proof:
>cygwin copies the process address space to fork, if references to
>cygwin1.dll are not valid in the hild, the child will die badly.
>
>Auto image base will conflict with cygwin1.dll semi-randomly. Because
>other cygwin linked .dll's come before cygwin1.dll in the PE header
>(don't know if this is due to link order, sorting of the file or
>whathaveyou) cygwin1.dll is the last .dll. Thus when there is a
>conflict, cygwin1.dll gets relocated.
>
>The problem: bash does not depend on these conflicting .dll's, so every
>process started that does depend on them will fail to initialise.
>
>Solution: don't use auto-image-base. The overhead from relocation is
>quite low, why not let windows just do its thing.

Even that is not guaranteed to fix this problem, though.

Location of the cygwin heap is one of a few AFAIK inavoidable iffy
assumptions that cygwin makes.  Cygwin's whole fork algorithm relies
on similar undocumented deterministic behavior.

cgf

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]