Subject: | MMF::CreateFileMapping Fails with Perl 64 bit |
Date: | Wed, 9 Nov 2016 00:46:07 +0000 |
To: | "bug-Win32-MMF [...] rt.cpan.org" <bug-Win32-MMF [...] rt.cpan.org> |
From: | "Webster, Chris" <Chris_Webster [...] bmc.com> |
While running Strawberry Perl 64-bit the CreateFileMapping fails with Invalid File Handle.
The initial error is:
Use of uninitialized value in subroutine entry at C:/home/dev/perl/5240/perl/perl/site/lib/Win32/MMF.pm line 149.
Setting debug on got this message:
CreateFileMapping: Error creating file mapping
Changing MMF.pm gave the invalid file handle message:
$ns = CreateFileMapping($swap, $size, $namespace)
or croak Win32::FormatMessage( Win32::GetLastError());
Initially changed MMF.pm to pass a handle of -1 instead of 0 and it worked.
Changing line 548 of MMF.xs from:
HANDLE hFile = (HANDLE)0xFFFFFFFF;
To:
HANDLE hFile = INVALID_HANDLE_VALUE;
Resolved the problem. I did not run a 32-bit build (this was my first build of any part of perl).
Running on Win7 64-bit.
c:\home\dev\scc\1211\scc\build\make>perl -V
Summary of my perl5 (revision 5 version 24 subversion 0) configuration:
Platform:
osname=MSWin32, osvers=6.3, archname=MSWin32-x64-multi-thread
uname='Win32 strawberry-perl 5.24.0.1 #1 Tue May 10 21:30:49 2016 x64'
config_args='undef'
hint=recommended, useposix=true, d_sigaction=undef
useithreads=define, usemultiplicity=define
use64bitint=define, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Let me know if you need more information.
Thanks,
...chris.