http://www.perlmonks.org?node_id=1007568


in reply to Re^10: if Digest::SHA1 loaded Can't load LibXML/LibXML.dll Invalid access to memory location
in thread if Digest::SHA1 loaded Can't load LibXML/LibXML.dll Invalid access to memory location

Same messsage :)

$ perl badcrabs.txt ret=1849688064 glr=2 $ perl -MDigest::SHA1 badcrabs.txt ret=0 glr=193

In depends.exe its now

LDR: LdrRelocateImageWithBias() failed 0xc000007b
LDR: OldBase     : 6E400000
LDR: NewBase     : 00A90000
LDR: Diff        : 0xffffffff92690000
LDR: NextOffset  : 00CC9F90
LDR: *NextOffset : 0x302e
LDR: SizeOfBlock : 0x5c

Compared to -MDigest::SHA1 -MXML::LibXML

LDR: LdrRelocateImageWithBias() failed 0xc000007b
LDR: OldBase     : 6E400000
LDR: NewBase     : 010A0000
LDR: Diff        : 0xffffffff92ca0000
LDR: NextOffset  : 012D9F90
LDR: *NextOffset : 0x302e
LDR: SizeOfBlock : 0x5c

Apparently LdrRelocate... errors happen ( Weird problem loading a dll with win32 LoadLibrary() function ) commonly with cygwin , and they recommend using some "rebaseall" shell script, and I saw they do some rebase-ing for MakeMaker/cygwin

So I look through my dlls $ perl -lne " chomp; print; print qx{objdump -x $_ |grep ImageBase }; " dlls.txt and both Digest/SHA1/SHA1.dll and auto/XML/LibXML/LibXML.dll share ImageBase 6e400000

Not sure if this is a problem but http://www.sourceware.org/ml/cygwin-apps/2011-07/msg00002.html / http://www.sourceware.org/ml/cygwin/2010-07/msg00258.html / perl5140delta suggests this collision is the problem , so I'll need to rebase, so I try that with the default rebase-2.4.2 address

 perl -pi.orig -e " s{^(LDDLFLAGS = )}{$1 -Wl,--image-base=0x70000000 }; " Makefile

and it worked!!!!!

*whew*

So from time to time I'll have to rebase a few dlls if I stick with this old OS