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


in reply to Re^8: 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

I think you messed up a different compiler flag when you removed -s

I did the first time and it wouldn't compile, but not this time, I'm sure :)

or there is a bug in your Mingw

This could very well be, but the message is the same with both my perls and compilers -- one is everything compiled with  gcc version 4.6.3 (gcc-4.6.3 release with patches [build 20121012 by perlmingw.sf.net]) the other is a mix of gcc versions ( perl compiled with 4.5.2, maybe (probably not) some modules with 4.6 something, xml2 with 4.7.0 ), but the errors messages are identical

I've also got filealyzer and gcc comes with dumpbin-alike objdump, and there is a reloc section listed with a "RVA" entry size aren't 0

$ ack -in size 2 |head SizeOfCode 0010f000 SizeOfInitializedData 00288800 SizeOfUninitializedData 00001a00 SizeOfImage 005d0000 SizeOfHeaders 00000600 SizeOfStackReserve 00200000 SizeOfStackCommit 00001000 SizeOfHeapReserve 00100000 SizeOfHeapCommit 00001000 NumberOfRvaAndSizes 00000010 $ ack -n RVA 2 [ 0] +base[ 1] 2b500 Export RVA [ 1] +base[ 2] 2b500 Export RVA

My search for that error message yielded http://stackoverflow.com/questions/2622607/windows-loader-problem-turn-on-verbose-mode which I don't understand :)

  • Comment on Re^9: if Digest::SHA1 loaded Can't load LibXML/LibXML.dll Invalid access to memory location
  • Select or Download Code

Replies are listed 'Best First'.
Re^10: if Digest::SHA1 loaded Can't load LibXML/LibXML.dll Invalid access to memory location
by bulk88 (Priest) on Dec 05, 2012 at 19:26 UTC

      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