X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_BJ,TW_RW,TW_WX,TW_XR,TW_YG,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org MIME-Version: 1.0 In-Reply-To: <4D320D0B.601@cpan.org> References: <4D30158D DOT 8090709 AT cpan DOT org> <4D3018EF DOT 60104 AT gmx DOT de> <4D305E4B DOT 3070600 AT cpan DOT org> <4D320D0B DOT 601 AT cpan DOT org> Date: Mon, 17 Jan 2011 20:28:43 +0100 Message-ID: Subject: Re: More Weird Perl .dll Errors From: Reini Urban To: rkitover AT cpan DOT org, cygwin AT cygwin DOT com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com 2011/1/15 Rafael Kitover: > Hi Reini, > > I'm not having any luck: > > $ perl -MClass::XSAccessor -le 1 > Can't load > '/usr/lib/perl5/site_perl/5.10/i686-cygwin/auto/Class/XSAccessor/XSAccess= or.dll' > for module Class::X > SAccessor: No such file or directory at > /usr/lib/perl5/5.10/i686-cygwin/XSLoader.pm line 70. > =A0at /usr/lib/perl5/site_perl/5.10/i686-cygwin/Class/XSAccessor.pm line = 11 > Compilation failed in require. > BEGIN failed--compilation aborted. > > $ perlrebase > ... > ReBaseImage > (/usr/lib/perl5/site_perl/5.10/i686-cygwin/auto/Class/XSAccessor/XSAccess= or.dll) > failed with last e > rror =3D 6 bad, not loadable. > $ ls -l > /usr/lib/perl5/site_perl/5.10/i686-cygwin/auto/Class/XSAccessor/XSAccesso= r.dll > -rwxr-xrwx 1 rkitover None 500002 Jan 15 15:41 The o+w perm will fail for -T taint mode, but this is not the problem here. > /usr/lib/perl5/site_perl/5.10/i686-cygwin/auto/Class/XSAccessor/ > XSAccessor.dll > > $ peflags > /usr/lib/perl5/site_perl/5.10/i686-cygwin/auto/Class/XSAccessor/XSAccesso= r.dll > /usr/lib/perl5/site_perl/5.10/i686-cygwin/auto/Class/XSAccessor/XSAccesso= r.dll: > coff(0x2106) pe(0x8000) good > $ imagebase > /usr/lib/perl5/site_perl/5.10/i686-cygwin/auto/Class/XSAccessor/XSAccesso= r.dll > 68640000 good. > $ ldd > /usr/lib/perl5/site_perl/5.10/i686-cygwin/auto/Class/XSAccessor/XSAccesso= r.dll > =A0 =A0 =A0 =A0ntdll.dll =3D> /cygdrive/c/Windows/SysWOW64/ntdll.dll (0x7= 7480000) > =A0 =A0 =A0 =A0kernel32.dll =3D> /cygdrive/c/Windows/syswow64/kernel32.dll > (0x75530000) > =A0 =A0 =A0 =A0KERNELBASE.dll =3D> /cygdrive/c/Windows/syswow64/KERNELBAS= E.dll > (0x74d70000) bad. This is all? If so you have a mingw perl dll here, which cannot be loaded by cygwin perl. mine: $ ldd /usr/lib/perl5/site_perl/5.10/i686-cygwin/auto/Class/XSAccessor/XSAcc= essor.dll ntdll.dll =3D> /cygdrive/c/Windows/SYSTEM32/ntdll.dll (0x77990000) kernel32.dll =3D> /cygdrive/c/Windows/system32/kernel32.dll (0x7712= 0000) KERNELBASE.dll =3D> /cygdrive/c/Windows/system32/KERNELBASE.dll (0x75b90000) cygwin1.dll =3D> /usr/bin/cygwin1.dll (0x61000000) ADVAPI32.DLL =3D> /cygdrive/c/Windows/system32/ADVAPI32.DLL (0x76e2= 0000) msvcrt.dll =3D> /cygdrive/c/Windows/system32/msvcrt.dll (0x75de0000) sechost.dll =3D> /cygdrive/c/Windows/SYSTEM32/sechost.dll (0x761900= 00) RPCRT4.dll =3D> /cygdrive/c/Windows/system32/RPCRT4.dll (0x77020000) cyggcc_s-1.dll =3D> /usr/bin/cyggcc_s-1.dll (0x67f00000) cygperl5_10.dll =3D> /usr/bin/cygperl5_10.dll (0x56010000) cygcrypt-0.dll =3D> /usr/bin/cygcrypt-0.dll (0x72fe0000) cygssp-0.dll =3D> /usr/bin/cygssp-0.dll (0x67280000) SspiCli.dll =3D> /cygdrive/c/Windows/system32/SspiCli.dll (0x759f00= 00) > On 1/14/2011 12:00 PM, Reini Urban wrote: >> >> 2011/1/14 Rafael Kitover: >>> >>> I tried both peflagsall and rebaseall with a -T list including all .dlls >>> under /usr/lib/perl5 as well as /usr/bin/cygperl5_10.dll >>> >>> But the error for MOP.dll persists. >> >> The Class::MOP and Sub::Name dll's are different beasts. >> If they do not load, (even windows refuses to load them apparently) >> you'll have to recompile them, followed by a perlrebase. >> >>> I'm not sure that when I tried the rebaseall it ran through to >>> completion, >>> because it gave me this error: >>> >>> FixImage (/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgcc_s_sjlj-1.dl= l) >>> failed with last error =3D 13 >> >> You have to exclude all mingw dll's from rebaseall. >> This will be fixed in the next rebase package. >> >>> This is Windows 7 64bit >>> >>> On 1/14/2011 4:35 AM, Matthias Andree wrote: >>>> >>>> Am 14.01.2011 10:21, schrieb Rafael Kitover: >>>>> >>>>> Something weird happened to my Class::MOP .dll : >>>>> >>>>> $ perl -MClass::MOP -le 1 >>>>> Can't load >>>>> '/usr/lib/perl5/site_perl/5.10/i686-cygwin/auto/Class/MOP/MOP.dll' for >>>>> module Class::MOP: No such fi >>>>> le or directory at /usr/lib/perl5/5.10/i686-cygwin/XSLoader.pm line 7= 0. >>>>> =A0 at /usr/lib/perl5/site_perl/5.10/i686-cygwin/Class/MOP.pm line 38 >>>>> Compilation failed in require. >>>>> BEGIN failed--compilation aborted. >>>>> >>>>> If I try to run perlrebase, I get this: >>>>> >>>>> ... >>>>> /usr/lib/perl5/5.10/i686-cygwin/auto/Time/Piece/Piece.dll: new base = =3D >>>>> 57900000, new size =3D 10000 >>>>> /usr/lib/perl5/5.10/i686-cygwin/auto/Unicode/Normalize/Normalize.dll: >>>>> new base =3D 57910000, new size =3D 50000 >>>>> /usr/lib/perl5/5.10/i686-cygwin/auto/Win32/Win32.dll: new base =3D >>>>> 57960000, new size =3D 20000 >>>>> /usr/lib/perl5/5.10/i686-cygwin/auto/Win32API/File/File.dll: new base= =3D >>>>> 57980000, new size =3D 30000 >>>>> ReBaseImage >>>>> (/usr/lib/perl5/site_perl/5.10/i686-cygwin/auto/Class/MOP/MOP.dll) >>>>> failed with last error =3D 6 >> >> Either no write+exec permission or broken dependency. >> >>>>> I tried doing a "notest force install Class::MOP" in CPAN shell, same >>>>> error after the installation finishes. >> >> If it's not the perm (unlikely), check the imagebase of your new dll: >> >> $ cat ~/bin/imagebase >> #!/bin/sh >> objdump -p $1 |grep ImageBase |cut -c12- >> >> $ imagebase >> /usr/lib/perl5/site_perl/5.10/i686-cygwin/auto/Class/MOP/MOP.dll >> 66c00000 >> >> And check the bases of the dependant dll's also: Anything below >> 0x4000_0000 is broken. >> >> $ ldd /usr/lib/perl5/site_perl/5.10/i686-cygwin/auto/Class/MOP/MOP.dll >> =A0 =A0 =A0 =A0 ntdll.dll =3D> =A0/cygdrive/c/Windows/SYSTEM32/ntdll.dll= (0x778b0000) >> =A0 =A0 =A0 =A0 kernel32.dll =3D> =A0/cygdrive/c/Windows/system32/kernel= 32.dll >> (0x777d0000) >> =A0 =A0 =A0 =A0 KERNELBASE.dll =3D> =A0/cygdrive/c/Windows/system32/KERN= ELBASE.dll >> (0x75cb0000) >> =A0 =A0 =A0 =A0 cygwin1.dll =3D> =A0/usr/bin/cygwin1.dll (0x61000000) >> =A0 =A0 =A0 =A0 ADVAPI32.DLL =3D> =A0/cygdrive/c/Windows/system32/ADVAPI= 32.DLL >> (0x77730000) >> =A0 =A0 =A0 =A0 msvcrt.dll =3D> =A0/cygdrive/c/Windows/system32/msvcrt.d= ll >> (0x76600000) >> =A0 =A0 =A0 =A0 sechost.dll =3D> =A0/cygdrive/c/Windows/SYSTEM32/sechost= .dll >> (0x767e0000) >> =A0 =A0 =A0 =A0 RPCRT4.dll =3D> =A0/cygdrive/c/Windows/system32/RPCRT4.d= ll >> (0x766b0000) >> =A0 =A0 =A0 =A0 cyggcc_s-1.dll =3D> =A0/usr/bin/cyggcc_s-1.dll (0x67f000= 00) >> =A0 =A0 =A0 =A0 cygperl5_10.dll =3D> =A0/usr/bin/cygperl5_10.dll (0x5601= 0000) >> =A0 =A0 =A0 =A0 cygcrypt-0.dll =3D> =A0/usr/bin/cygcrypt-0.dll (0x694d00= 00) >> =A0 =A0 =A0 =A0 cygssp-0.dll =3D> =A0/usr/bin/cygssp-0.dll (0x67280000) >> =A0 =A0 =A0 =A0 SspiCli.dll =3D> =A0/cygdrive/c/Windows/system32/SspiCli= .dll >> (0x75910000) >> >>>>> I tried rebooting and running perlrebase again, same error. >>>> >>>> Try rebaseall, or if you're under Vista or 7, peflagsall. --=20 Reini Urban http://phpwiki.org/=A0 =A0 =A0 =A0 =A0=A0 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