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: R: [1.7] does LD_PRELOAD support more than 1 dll ?


On Sat, May 30, 2009 at 12:59:15PM +0000, Marco Atzeri wrote:
>
>--- Sab 30/5/09, Christopher ha scritto:
>
>> >> ? Did you export it?? That might make a
>> >> difference if the shell is involved.
>> >> 
>> >> ? ? cheers,
>> >> ? ? ? DaveK
>> >> 
>> >Hi Dave,
>> >also exporting all the 3 variables in the script
>> >does make no difference
>> >
>> >export
>> PATH="$builddir/src:$builddir/liboctave:$builddir/libcruft:$PATH"
>> >export LD_PRELOAD="$liboctinterp:$liboctave:$libcruft"
>> >export
>> LD_LIBRARY_PATH="$builddir/src:$builddir/liboctave:$builddir/libcruft:$LD_LIBRARY_PATH"
>> >OCTAVE_SITE_INITFILE="$top_srcdir/scripts/startup/main-rcfile"
>> \
>> >? exec $driver "$builddir/src/octave"
>> --no-init-path --path="$LOADPATH" --image-path="$IMAGEPATH"
>> --doc-cache-file="$DOCFILE" --info-file="$INFOFILE" "$@"
>> >
>> >
>> >? ? ? 5 [main] sh 3964
>> C:\cygwin2\bin\sh.exe: *** fatal error - error while loading
>> shared libraries:
>> /pub/cygports/octave/octave-3.2.0-rc4_build/src/cygoctinterp.dll:
>> cannot open shared object file: No such process
>> 
>>  From the source:
>> 
>> ? ? ? if (!LoadLibraryW
>> (lib.get_wide_win32_path (libname)))
>> ? ? ? ? {
>> ? ? ? ? ? __seterrno ();
>> ? ? ? ? ? api_fatal ("error while
>> loading shared libraries: %s: "
>> ? ? ? ? ? ? ? ?
>> ? ???"cannot open shared object file:
>> %s", p,
>> ? ? ? ? ? ? ? ?
>> ? ???strerror (get_errno ()));
>> ? ? ? ? }
>> 
>>  "No such process" == ESRCH == PROC_NOT_FOUND
>> 
>> cgf
>
>Hi Christopher
>but the dll file is there:
>
>$ ls -lh /pub/cygports/octave/octave-3.2.0-rc4_build/src/cygoctinterp.dll
>-rwxr-xr-x 1 itq00146 Domain_Users 202M May 27 20:01 /pub/cygports/octave/octave-3.2.0-rc4_build/src/cygoctinterp.dll

It doesn't say "File not found".

>so how can it fail to load dlls only with LD_PRELOAD defined ?
>
>Ok, I found it. 
>The order is also relevant
>
>cygoctinterp.dll requires 
>   cygcruft.dll and cygoctave.dll
>
>cygoctave.dll requires 
>  cygcruft.dll
>
>So the working way is :
>
>export LD_PRELOAD="$libcruft:$liboctave:$liboctinterp"

i.e., dependency order is important.  That isn't too surprising is it?

cgf

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]