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: rebaseall failure/perlrebase conflict? [+ perlrebase PATCH]


2010/7/5 Matthias Andree:
> Trying to run rebase fails for me. It rebases a truckload full of dlls,
> then:
>
> /usr/lib/parrot/2.3.0/dynext/rational.dll: new base = 5f640000, new size =
> 20000
> /usr/lib/parrot/2.3.0/dynext/subproxy.dll: new base = 5f620000, new size =
> 20000
> ReBaseImage
> (/usr/lib/perl5/vendor_perl/5.10/i686-cygwin/auto/Image/Magick/Magick.dll)
> failed with last error = 6
>
> And sure enough, no write permission on the file (I had previously run)
>
> $ ls -l
> /usr/lib/perl5/vendor_perl/5.10/i686-cygwin/auto/Image/Magick/Magick.dll
> -r-xr-xr-x 1 mandree root 284686 2010-05-03 16:14
> /usr/lib/perl5/vendor_perl/5.10/i686-cygwin/auto/Image/Magick/Magick.dll
>
> #1 why would rebaseall fail here? perlrebase succeeds, and peflags either
> doesn't touch this, or doesn't fail either.

Because rebaseall doesn't know about special read-only permissions,
and so doesn't try to fix it. For perl dll's I do know, so perlrebase
does a chmod +w before and chmod -w after.

>> #2 I'm a bit worried that I am the owner rather than "Administrator", I
> guess this is an artifact of the Win7 UAC.

I don't think so.

> I had started a CMD.EXE as administrator and launched ash there.

You can try to use the sudo trick, i.e ssh Administrator@localhost

> $ uname -a
> CYGWIN_NT-6.1 COMPUTER 1.7.5(0.225/5/3) 2010-04-12 19:07 i686 Cygwin
>
> (The whole story started when - again - after an upgrade "git svn rebase"
> would fail loading Perl DLLs to the same address. This is a nuisance.)

Yes, it is.

BTW: I found a stupid mistake in /usr/bin/perlrebase, missing a zero
in the base address.
0x540 0000 is way too low.

--- bin/perlrebase~	2010-02-28 14:25:23.000000000 +0100
+++ bin/perlrebase	2010-06-07 18:49:49.203125000 +0200
@@ -1,7 +1,7 @@
 #!/bin/sh
 suff=$1
 suff=${suff:=5.10.1}
-baseaddr=0x5400000
+baseaddr=0x54000000
 perl=/usr/local/bin/perl$suff.exe
 if [ ! -f $perl ]; then
   perl=/usr/bin/perl$suff.exe

-- 
Reini Urban
http://phpwiki.org/           http://murbreak.at/

--
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]