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: Spurious "You have multiple copies of cygwin1.dll on your syste m."


On  7 Oct, Christopher Faylor wrote:
>  On Thu, Oct 07, 2004 at 02:49:29PM +1000, luke.kendall@cisra.canon.com.au wrote:
>  >After installing Cygwin by using a shell script running by executing
>  >bash from a network-installed Cygwin, the script fails when it tries to
>  >run a post-install script.  The error reported is:
>  >
> >    bash-2.05b$ post-install.sh -which latest -fresh
> >    c:\cygwin\bin\bash.exe (3208): *** cygheap version mismatch detected - 0x616D000
> >    0/0x61780000.
> >    You have multiple copies of cygwin1.dll on your system.
> >    Search for cygwin1.dll using the Windows Start->Find/Search facility
> >    and delete all but the most recent version.  The most recent version *should*
> >    reside in x:\cygwin\bin, where 'x' is the drive on which you have
> >    installed the cygwin distribution.
>  >
>  >A search showed that there really is only c:\cygwin\bin\cygwin1.dll -
>  >the message is wrong.
>  >
>  >I'd say the sanity-check is detecting cygwin1.dll associated with the
>  >bash that's running from the network-mounted drive.
>  
>  You wouldn't say that if you knew what "cygheap" was.  This is an indication
>  that a child executable is detecting that its cygheap is not at the same
>  location as the parent.  Since the cygheap lives at the end of the cygwin DLL
>  it's hard to see how this could be anything other than two different versions
>  of cygwin being invoked.

Okay, and in fact there are two (possibly different) versions of
cygwin1.dll available to be loaded into memory.  I don't know why
Cygwin attempted to load the freshly-installed cygwin1.dll, though.
It wasn't on the PATH of the network-loaded shell script.

To be pedantic, the warning is wrong because it says you have multiple
copies of cygwin1.dll on your system.  There aren't, and indeed a
Search for cygwin1.dll using the Windows Start->Find/Search facility
confirms that there is only a single cygwin1.dll, freshly installed.

Try this: from a machine on your network, with Cygwin installed, share
the c:/cygwin directory (i.e. the path where you installed Cygwin).

On another PC, start a DOS window.  set PATH=this network Cygwin path
Type bash.  You get a bash prompt.

Now you have a situation where cygwin1.dll is loaded in memory from
across the network.  And if you have Cygwin installed on the local
machine, you don't get error messages about multiple Cygwin versions
installed on your PC.  You can run all the Cygwin commands.

So even knowing that the error message is imprecise and misleading in
this situation, and that it probably means that Cygwin tried to load up
cygwin1.dll from a different path to a copy that's already loaded, and
that it's incompatible with the one that's already loaded, I don't know
why Cygwin is trying to load this other DLL.

I suspect the error message should be "Attempting to load an
inconsistent version of cygwin1.dll".

I freely confess I'm doing something unusual.  Maybe I'm the first
person on the planet to attempt to automate Cygwin installation via a
shell script from an already existing and stable copy of Cygwin
installed elsewhere on the network?

Anyway, I'll keep battering away at the attempt, and see if I can find
something on cygheap so I understand more about what's going on.

Thanks,

luke


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.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]