Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re^4: Error Message "Can't load 'C:/Perl64/lib/auto/DBD/Oracle/Oracle.dll" While Connecting to Oracle (not valid)

by bulk88 (Priest)
on Jan 27, 2014 at 05:00 UTC ( #1072174=note: print w/ replies, xml ) Need Help??


in reply to Re^3: Error Message "Can't load 'C:/Perl64/lib/auto/DBD/Oracle/Oracle.dll" While Connecting to Oracle (not valid)
in thread Error Message "Can't load 'C:/Perl64/lib/auto/DBD/Oracle/Oracle.dll" While Connecting to Oracle

Reading the linked thread, I didn't see a clear cause clearly called out, but it looked to me like the problem in that case was that the DLL's base address conflicted with some other DLL's base address.

base address conflicts only happen on cygwin due to how they implement their fork. Cygwin might have been fixed by now. Very old Win32 GCC (2.x/3.x) also couldn't generate relocation information, or created garbage entries, and the garbage entries only were a problem if the Win32 DLL loader tried to relocate.

One next step I might do is watch what the perl process is doing when this fails. Is there a sysinternals-like process monitor that works on Windows 7 these days? Even a file system monitor might help in pointing at which library is the real problem. I'm not sure how to do the equivalent on Windows, but that shouldn't be hard to look up.

Dependency Walker is what you want. Use the profiling feature in DW. Procmon will also work, but its output is extremely noisy when all you want DLL info, not every file, thread life, and reg access. Manipulating the filters in procmon is alot of work when you could just use dep walker instead.

On Unix, I'd ask lsof to tell me what other DLLs are loaded so I could just check for conflicting base addresses (seems a poor system to be vulnerable to such -- but maybe I misunderstood the real root cause in that other thread).

Doesn't Unix always make PIC ELFs that dont need relocation? and ELF has relocation if you really want it anyway in the standard.


Comment on Re^4: Error Message "Can't load 'C:/Perl64/lib/auto/DBD/Oracle/Oracle.dll" While Connecting to Oracle (not valid)
Re^5: Error Message "Can't load 'C:/Perl64/lib/auto/DBD/Oracle/Oracle.dll" While Connecting to Oracle (not valid)
by tye (Cardinal) on Jan 27, 2014 at 07:08 UTC

    Thanks!

    - tye        

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1072174]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (12)
As of 2014-07-29 10:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (214 votes), past polls