develooper Front page | perl.perl5.porters | Postings from October 2014

[perl #121513] no PERL_IMPLICT_SYS Win32, exactly 4 .. in relative path, DynaLoader loads wrong dll

From:
bulk88 via RT
Date:
October 21, 2014 06:05
Subject:
[perl #121513] no PERL_IMPLICT_SYS Win32, exactly 4 .. in relative path, DynaLoader loads wrong dll
Message ID:
rt-4.0.18-7987-1413871551-1135.121513-15-0@perl.org
On Wed Mar 26 17:13:50 2014, bulk88 wrote:
> This is a bug report for perl from bulk88@hotmail.com,
> generated with the help of perlbug 1.40 running under perl 5.19.10.
> 
> 
> -----------------------------------------------------------------
> [Please describe your issue here]
> 
> This is a very strange bug, maybe with Windows XP SP3 specifically but
> it causes ExtUtils-Constant to fail on no PERL_IMPLICIT_SYS builds.
> DynaLoader and XSLoader both call win32_dynaload which contains the
> actual call to the Win OS (LoadLibraryExA). With PerlDir_mapA, which
> does something on PERL_IMPLICIT_SYS builds. PerlDir_mapA will convert
> relative paths "../../lib/auto/something/something.dll" to absolute
> paths through VDir::MapPathA. How VDir::MapPathA converts relative to
> absolute paths IDK. But anyway. Without PerlDir_mapA, LoadLibraryExA
> will get a relative path. Perl uses the flag
> LOAD_WITH_ALTERED_SEARCH_PATH. On MSDN today the description for the
> flag is.
> 
> -------------------------------------------
> If this value is used and lpFileName specifies an absolute path, the
> system uses the alternate file search strategy discussed in the
> Remarks
> section to find associated executable modules that the specified
> module
> causes to be loaded. If this value is used and lpFileName specifies a
> relative path, the behavior is undefined.
> 
> If this value is not used, or if lpFileName does not specify a path,
> the
> system uses the standard search strategy discussed in the Remarks
> section to find associated executable modules that the specified
> module
> causes to be loaded.
> 
> This value cannot be combined with any LOAD_LIBRARY_SEARCH flag.
> -------------------------------------------
> 
> Note, passing a relative path is "undefined behavior". What that means
> is debatable. Is it a wont fix MS bug? Is it an unimplemented feature?
> Does it do different random things on different versions of Windows?


This is still a bug in blead/5.21.4 (ran into it again).

-- 
bulk88 ~ bulk88 at hotmail.com

---
via perlbug:  queue: perl5 status: new
https://rt.perl.org/Ticket/Display.html?id=121513



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About