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: Cannot exec() program outside of /bin if PATH is unset


On Oct 16 23:51, Christian Franke wrote:
> Corinna Vinschen wrote:
> >...
> >I implemented this in the latest snapshot.  It calls SetDllDirectory
> >on Cygwin's /bin, and dlopen addiotnally tries to load the DLL with
> >LoadLibraryEx(LOAD_WITH_ALTERED_SEARCH_PATH) if all else failed.
> 
> For some reason, the SetDllDirectory() call has no effect for exec():
> 
> Testcase:
> 
> $ unset PATH
> 
> $ uname -srvm
> -bash: uname: No such file or directory
> 
> $ /bin/uname -srvm
> CYGWIN_NT-6.1-WOW64 1.7.33s(0.277/5/3) 20141014 19:44:03 i686
> 
> $ /usr/sbin/alternatives
> /usr/sbin/alternatives: error while loading shared libraries: ?: cannot open
> shared object file: No such file or directory

Weird.  The same sequence of commands works fine for me on W8,
W8.1 and W10 64 bit, under i686 as well as x86_64 Cygwin.  

[...]

but it doesn't on Vista and W7, wow.

The question now is, is it because the path given to SetDllDirectory
is not propagated to child processes on older systems, or is it
because the directory is only used in calls to LoadLibrary{Ex} on
older systems.

Stay tuned, I have to investigate this.


Thanks,
Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

Attachment: pgpPm49Tv34iV.pgp
Description: PGP signature


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