This is the mail archive of the cygwin 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]
Other format: [Raw text]

Re: cygwin-1.7.10-1 fork - address space needed by ... already in use


On Feb  8 14:24, Heiko Elger wrote:
> Corinna Vinschen writes:
> 
> > 
> > What happens in this testcase is that Cygwin checks the full DLL path
> > and then finds that the new path to cyggcc_s-1.dll is not the same as
> > the path it has already loaded.  Therefore it assumes that it has to add
> > the file to list.
> > 
> > This is plainly wrong, because, as you can read on
> > http://msdn.microsoft.com/en-us/library/ms682586%28v=vs.85%29.aspx the
> > Windows loader does not load a DLL again, if it already has a module
> > loaded which has the same basename.  Therefore the test for the full
> > pathname in Cygwin has to to be replaced with only testing the module
> > basename.
> > 
> > However, while this situation in the doit2 testcase is simply explained,
> > I don't see how this affects your rsync call.
> > 
> > Denis, can you please change your test output?  Instead of printing only
> > d_alt->modname, please print d_alt->name and then run your rsync test
> > again.  If this is the same problem as in the doit testcase, I'd like to
> > see where the second cygiconv-2.dll is coming from.  In theory, if you
> > have only a single installation of cygiconv-2.dll, this should'nt
> > happen.
> 
> Hello,
> 
> just one more question concerning the problem of loading dlls twice.
> We installed cygwin into c:\Programme\cygwin
> 1) c:\programme is a symbolic link (like junction of sysinternal tools) 
> to "c:\Program Files" via MKLINK /J 
> and 
> 2) c:\Programme is a WINDOWS7 language German localized link/substition/ or 
> whatever to "c:\Program Files" too.
> 
> Can this be a problem for cygwin too - concerning the problem of this thread?

AFAICS, yes.  That could be part of the problem.  The path to DLLs is
not normalized by the Windows loader before it's stored in the DLL list,
and the GetModuleFileName function returns the path as stored.  If the
DLL has been loaded using one path, and then, in the forkee, is found
using the other path, that would explain a collision.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


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