Skip Menu |

This queue is for tickets about the File-Map CPAN distribution.

Report information
The Basics
Id: 76796
Status: resolved
Priority: 0/
Queue: File-Map

People
Owner: Nobody in particular
Requestors: chm [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: Critical
Broken in: 0.48
Fixed in: (no value)



Subject: DLL load fails because msvcrt.dll is missing strerror_s
The introduction of the strerror_s routine causes the File-Map-0.48 to die during tests because the strerror_s is not present in the msvcrt.dll that comes with MinGW as used by Strawberry Perl Portable.  Here is the test log from my try but the strerror_s came up in a pop-up requestor:

Can't load 'C:\chm\strawberry\514-w-pdl2410\git\File-Map-0.48\blib\arch/auto/File/Map/Map.dll' for module File::Map: load_file:The specified procedure could not be found at C:/chm/strawberry/514-w-pdl2410/perl/lib/DynaLoader.pm line 190.
 at -e line 1
Compilation failed in require at -e line 1.

Show quoted text
#   Failed test 'File::Map loaded ok'
#   at t/00-compile.t line 62.
#                   ''
#     doesn't match '(?^s:^\s*File::Map ok)'
# Looks like you failed 1 test of 1.
t/00-compile.t ............
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/1 subtests
Can't load 'C:\chm\strawberry\514-w-pdl2410\git\File-Map-0.48\blib\arch/auto/File/Map/Map.dll' for module File::Map: load_file:The specified procedure could not be found at C:/chm/strawberry/514-w-pdl2410/perl/lib/DynaLoader.pm line 190.
 at t/10-basics.t line 5
Compilation failed in require at t/10-basics.t line 5.
BEGIN failed--compilation aborted at t/10-basics.t line 5.
t/10-basics.t .............
Dubious, test returned 2 (wstat 512, 0x200)
No subtests run
Can't load 'C:\chm\strawberry\514-w-pdl2410\git\File-Map-0.48\blib\arch/auto/File/Map/Map.dll' for module File::Map: load_file:The specified procedure could not be found at C:/chm/strawberry/514-w-pdl2410/perl/lib/DynaLoader.pm line 190.
 at t/10-empty.t line 5
Compilation failed in require at t/10-empty.t line 5.
BEGIN failed--compilation aborted at t/10-empty.t line 5.
t/10-empty.t ..............
Dubious, test returned 2 (wstat 512, 0x200)
No subtests run
Can't load 'C:\chm\strawberry\514-w-pdl2410\git\File-Map-0.48\blib\arch/auto/File/Map/Map.dll' for module File::Map: load_file:The specified procedure could not be found at C:/chm/strawberry/514-w-pdl2410/perl/lib/DynaLoader.pm line 190.
 at t/20-errors.t line 6
Compilation failed in require at t/20-errors.t line 6.
BEGIN failed--compilation aborted at t/20-errors.t line 6.
t/20-errors.t .............
Dubious, test returned 2 (wstat 512, 0x200)
No subtests run
Can't load 'C:\chm\strawberry\514-w-pdl2410\git\File-Map-0.48\blib\arch/auto/File/Map/Map.dll' for module File::Map: load_file:The specified procedure could not be found at C:/chm/strawberry/514-w-pdl2410/perl/lib/DynaLoader.pm line 190.
 at t/20-protect.t line 6
Compilation failed in require at t/20-protect.t line 6.
BEGIN failed--compilation aborted at t/20-protect.t line 6.
t/20-protect.t ............
Dubious, test returned 2 (wstat 512, 0x200)
Failed 8/8 subtests
t/20-remap.t .............. skipped: Only works on Linux
Can't load 'C:\chm\strawberry\514-w-pdl2410\git\File-Map-0.48\blib\arch/auto/File/Map/Map.dll' for module File::Map: load_file:The specified procedure could not be found at C:/chm/strawberry/514-w-pdl2410/perl/lib/DynaLoader.pm line 190.
 at t/20-tainting.t line 7
Compilation failed in require at t/20-tainting.t line 7.
BEGIN failed--compilation aborted at t/20-tainting.t line 7.
t/20-tainting.t ...........
Dubious, test returned 2 (wstat 512, 0x200)
No subtests run
Can't load 'C:\chm\strawberry\514-w-pdl2410\git\File-Map-0.48\blib\arch/auto/File/Map/Map.dll' for module File::Map: load_file:The specified procedure could not be found at C:/chm/strawberry/514-w-pdl2410/perl/lib/DynaLoader.pm line 190.
 at t/20-threads.t line 19
Compilation failed in require at t/20-threads.t line 19.
BEGIN failed--compilation aborted at t/20-threads.t line 19.
t/20-threads.t ............
Dubious, test returned 2 (wstat 512, 0x200)
Failed 7/7 subtests
Can't load 'C:\chm\strawberry\514-w-pdl2410\git\File-Map-0.48\blib\arch/auto/File/Map/Map.dll' for module File::Map: load_file:The specified procedure could not be found at C:/chm/strawberry/514-w-pdl2410/perl/lib/DynaLoader.pm line 190.
 at t/20-unicode.t line 8
Compilation failed in require at t/20-unicode.t line 8.
BEGIN failed--compilation aborted at t/20-unicode.t line 8.
t/20-unicode.t ............
Dubious, test returned 2 (wstat 512, 0x200)
No subtests run
t/release-kwalitee.t ...... skipped: these tests are for release candidate testing
t/release-pod-coverage.t .. skipped: these tests are for release candidate testing
t/release-pod-syntax.t .... skipped: these tests are for release candidate testing

Test Summary Report
-------------------
t/00-compile.t          (Wstat: 256 Tests: 1 Failed: 1)
  Failed test:  1
  Non-zero exit status: 1
t/10-basics.t           (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
t/10-empty.t            (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
t/20-errors.t           (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
t/20-protect.t          (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: Bad plan.  You planned 8 tests but ran 0.
t/20-tainting.t         (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
t/20-threads.t          (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: Bad plan.  You planned 7 tests but ran 0.
t/20-unicode.t          (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
Files=12, Tests=1, 11 wallclock secs ( 0.09 usr +  0.08 sys =  0.17 CPU)
Result: FAIL
Failed 8/12 test programs. 1/1 subtests failed.

Summary of my perl5 (revision 5 version 14 subversion 2) configuration:
  
  Platform:
    osname=MSWin32, osvers=4.0, archname=MSWin32-x86-multi-thread
    uname='Win32 strawberryperl 5.14.2.1-portable #1 Tue Nov 22 18:24:29 2011 i386'
    config_args='undef'
    hint=recommended, useposix=true, d_sigaction=undef
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=undef, use64bitall=undef, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags =' -s -O2 -DWIN32  -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -mms-bitfields',
    optimize='-s -O2',
    cppflags='-DWIN32'
    ccversion='', gccversion='4.4.7', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='long long', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='g++.exe', ldflags ='-s -L"C:\chm\strawberry\514-w-pdl2410\perl\lib\CORE" -L"C:\chm\strawberry\514-w-pdl2410\c\lib"'
    libpth=C:\chm\strawberry\514-w-pdl2410\c\lib C:\chm\strawberry\514-w-pdl2410\c\i686-w64-mingw32\lib
    libs=-lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32
    perllibs=-lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32
    libc=, so=dll, useshrplib=true, libperl=libperl514.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ', lddlflags='-mdll -s -L"C:\chm\strawberry\514-w-pdl2410\perl\lib\CORE" -L"C:\chm\strawberry\514-w-pdl2410\c\lib"'

Characteristics of this binary (from libperl):
  Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
                        PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS
                        PERL_MALLOC_WRAP PERL_PRESERVE_IVUV PL_OP_SLAB_ALLOC
                        USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
                        USE_SITECUSTOMIZE
  Built under MSWin32
  Compiled at Nov 22 2011 18:32:55
  %ENV:
    PERL_JSON_BACKEND="JSON::XS"
    PERL_YAML_BACKEND="YAML"
  @INC:
    C:/chm/strawberry/514-w-pdl2410/perl/site/lib
    C:/chm/strawberry/514-w-pdl2410/perl/vendor/lib
    C:/chm/strawberry/514-w-pdl2410/perl/lib
    .

This is a critical problem because 0.48 was an official File::Map release.
cpan installs will automatically use this version and "boom!"

Our PDL development has been successful using CPAN developers releases
first until things are verified across all platforms.  That keeps things stable for users
of PDL modules by helping test on platforms that no PDL developer has.

On Wed Apr 25 06:55:20 2012, CHM wrote: Show quoted text
> The introduction of the strerror_s routine causes the File-Map-0.48 to > die > during tests because the strerror_s is not present in the msvcrt.dll > that comes > with MinGW as used by Strawberry Perl Portable. Here is the test log > from my > try but the strerror_s came up in a pop-up requestor:
Ugh. It seems I can't rely on MSDN for this kind of thing (it suggests it has been available since forever). I suspect the solution is to use strerror_r instead on MingW, would you be able to check that for me? Leon
CC: chm [...] cpan.org
Subject: Re: [rt.cpan.org #76796] DLL load fails because msvcrt.dll is missing strerror_s
Date: Wed, 25 Apr 2012 09:54:27 -0400
To: bug-File-Map [...] rt.cpan.org
From: chm <devel.chm.01 [...] gmail.com>
On 4/25/2012 7:33 AM, Leon Timmermans via RT wrote: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=76796> > > On Wed Apr 25 06:55:20 2012, CHM wrote:
>> The introduction of the strerror_s routine causes the File-Map-0.48 to >> die during tests because the strerror_s is not present in the msvcrt.dll >> that comes with MinGW as used by Strawberry Perl Portable. Here is the test log >> from my try but the strerror_s came up in a pop-up requestor:
> > > Ugh. It seems I can't rely on MSDN for this kind of thing (it suggests > it has been available since forever). I suspect the solution is to use > strerror_r instead on MingW, would you be able to check that for me?
It doesn't even link with strerror_r. I looked at the ./c/i686-w64-mingw32/lib/libmsvcrt.a in the SPP distribution and it shows a link entry for strerror_s and strerror but the msvcrt.dll on this XP system doesn't appear to have that in it. FWIW, the original code had no problem. What was the benefit of changing things? --Chris
On Wed Apr 25 09:54:36 2012, devel.chm.01@gmail.com wrote: Show quoted text
> It doesn't even link with strerror_r. I looked at the > ./c/i686-w64-mingw32/lib/libmsvcrt.a in the SPP distribution > and it shows a link entry for strerror_s and strerror but > the msvcrt.dll on this XP system doesn't appear to have > that in it. FWIW, the original code had no problem. What > was the benefit of changing things?
Too bad. The new code was significantly more simple. I'll revert to the old code. 0.49 is on its way! Leon