Skip Menu |

This queue is for tickets about the Win32-API CPAN distribution.

Report information
The Basics
Id: 80248
Status: resolved
Priority: 0/
Queue: Win32-API

People
Owner: BULKDD [...] cpan.org
Requestors: kmx [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: 0.72
Fixed in: (no value)



Subject: v0.72 crashes during tests on 32bit strawberry perl 5.16.1
The crash occurs during t\00_API.t:

prove -bv t\00_API.t

t\00_API.t ..
1..48
ok 1 - use Win32::API;
ok 2 - use Win32::API::Test;
ok 3 - use Win32;
ok 4 - loaded
Show quoted text
# API test dll found at (API_test.dll)
ok 5 - found API test dll
ok 6 - GetCurrentProcessId() function found
ok 7 - GetCurrentProcessId() result ok
ok 8 - GetCurrentProcessId() result ok
ok 9 - Import of GetCurrentProcessId() function from kernel32.dll
ok 10 - GetCurrentProcessId() result ok
ok 11 - Import of IsBadReadPtr function from kernel32.dll
ok 12 - API test dll was freed
ok 13 - highbit_unsigned() function defined
ok 14 - return value for unsigned is signed on old API
ok 15 - GetHandle operates correctly
ok 16 - FreeHandle operates correctly
ok 17 - sum_integers() function defined
ok 18 - function call with integer arguments and return value
ok 19 - sum_integers_ref() function defined
ok 20 - sum_integers_ref() returns the expected value
ok 21 - sum_integers_ref() correctly modifies its ref argument
ok 22 - short as return type croak because they are structs on old API
ok 23 - sum_shorts_ref() function defined
ok 24 - shorts croak as struct objs on old API
ok 25 - API_test.dll sum_doubles function defined
ok 26 - function call with double arguments
ok 27 - sum_doubles_ref() function defined
ok 28 - sum_doubles_ref() call works
ok 29 - sum_doubles_ref() sets ref correctly
ok 30 - sum_floats() function defined
ok 31 - sum_floats() result correct
ok 32 - sum_floats_ref() function defined
ok 33 - sum_floats_ref() returns the expected value (1)
ok 34 - sum_floats_ref() call works
ok 35 - find_char() function defined
ok 36 - find_char() function call works
ok 37 - sum_char_ref() returns the expected value
ok 38 - sum_char_ref() correctly modifies its ref argument
ok 39 - numeric truncation sum_char_ref() returns the expected value
ok 40 - sum_char_ref() correctly modifies its ref argument
ok 41 - wstr_cmp() returns the expected value
ok 42 - buffer overflow protection worked
ok 43 - idiot flag works
ok 44 - cdecl c_sum_integers() function defined
Dubious, test returned 5 (wstat 1280, 0x500)
Failed 4/48 subtests

I have not investigated the issue further.

--
kmx

--
kmx

Can you post perl -V?
y:\>perl -V
Summary of my perl5 (revision 5 version 16 subversion 1) configuration:

  Platform:
    osname=MSWin32, osvers=4.0, archname=MSWin32-x86-multi-thread
    uname='Win32 strawberry-perl 5.16.1.1 #1 Thu Aug  9 09:54:46 2012 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 -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -mms-bitfields',
    optimize='-s -O2',
    cppflags='-DWIN32'
    ccversion='', gccversion='4.6.3', 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++', ldflags ='-s -L"Z:\strawberry32_5161\perl\lib\CORE" -L"Z:\strawberry32_5161\c\lib"'
    libpth=Z:\strawberry32_5161\c\lib Z:\strawberry32_5161\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 -lver
sion -lodbc32 -lodbccp32 -lcomctl32
    libc=, so=dll, useshrplib=true, libperl=libperl516.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ', lddlflags='-mdll -s -L"Z:\strawberry32_5161\perl\lib\CORE" -L"Z:\strawberry32_5161\c\lib"'


Characteristics of this binary (from libperl):
  Compile-time options: HAS_TIMES HAVE_INTERP_INTERN MULTIPLICITY
                        PERLIO_LAYERS 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_LOCALE
                        USE_LOCALE_COLLATE USE_LOCALE_CTYPE
                        USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
  Built under MSWin32
  Compiled at Aug  9 2012 10:03:09
  @INC:
    Z:/strawberry32_5161/perl/site/lib
    Z:/strawberry32_5161/perl/vendor/lib
    Z:/strawberry32_5161/perl/lib
    .
On Wed Oct 17 15:41:57 2012, KMX wrote: Show quoted text
> The crash occurs during t\00_API.t: > > prove -bv t\00_API.t > > t\00_API.t .. > 1..48 > ok 1 - use Win32::API;
............................................ Show quoted text
> ok 44 - cdecl c_sum_integers() function defined > Dubious, test returned 5 (wstat 1280, 0x500) > Failed 4/48 subtests > > I have not investigated the issue further. > > -- > kmx > > -- > kmx
New version posted at https://github.com/bulk88/perl5-win32-api . I didn't do anything specific for your crash. Please try it and report back. It seems you crashed at the first cdecl function called, all the previous ones were stdcall. On my 32 bit Strawberry Perl 5.12.3 all tests passed.
Subject: Re: [rt.cpan.org #80248] v0.72 crashes during tests on 32bit strawberry perl 5.16.1
Date: Fri, 19 Oct 2012 19:20:14 +0200
To: bug-Win32-API [...] rt.cpan.org
From: kmx <kmx [...] volny.cz>
Unfortunately still the same failure on strawberry 5.16.1.1
RT-Send-CC: kmx [...] volny.cz
On Fri Oct 19 13:20:24 2012, kmx@volny.cz wrote: Show quoted text
> Unfortunately still the same failure on strawberry 5.16.1.1
Just to confirm, from the S Perl x64 bug ticket, is 32 bit S Perl working and passing all tests for you?
Subject: RE: [rt.cpan.org #80248] v0.72 crashes during tests on 32bit strawberry perl 5.16.1
Date: Sat, 20 Oct 2012 09:54:37 +0200
To: bug-Win32-API [...] rt.cpan.org
From: KMX <kmx [...] volny.cz>
Unfortunately 32bit strawberry 5.16.1 still crashing -- kmx
RT-Send-CC: kmx [...] volny.cz
On Sat Oct 20 03:54:55 2012, kmx@volny.cz wrote: Show quoted text
> Unfortunately 32bit strawberry 5.16.1 still crashing > > -- > kmx
Can you post a full run of the test suite on your 32 bit Strawberry Perl? This is the last failing platform for Win32::API since Cygwin and x64 Strawberry were fixed.
logs attached
Subject: build-log.txt
y:\_repos\perl5-win32-api-bulk88>perl Makefile.PL Checking if your kit is complete... Looks good Writing Makefile for Win32::API::Callback Writing MYMETA.yml and MYMETA.json Writing Makefile for Win32::API Writing MYMETA.yml and MYMETA.json y:\_repos\perl5-win32-api-bulk88>dmake cp Type.pm blib\lib\Win32/API/Type.pm cp Callback.pm blib\lib\Win32/API/Callback.pm cp Test.pm blib\lib\Win32/API/Test.pm cp Struct.pm blib\lib\Win32/API/Struct.pm cp API.pm blib\lib\Win32/API.pm cp IATPatch.pod blib\lib\Win32/API/Callback/IATPatch.pod Z:\strawberry32_5161\perl\bin\perl.exe Z:\strawberry32_5161\perl\lib\ExtUtils\xsubpp -typemap Z:\strawberry32_5161\perl\lib\ExtUtils\typemap Callback.xs > Cal lback.xsc && Z:\strawberry32_5161\perl\bin\perl.exe -MExtUtils::Command -e mv -- Callback.xsc Callback.c gcc -c -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -mms-bitfields -s -O2 -DVERSION=\"0. 73\" -DXS_VERSION=\"0.73\" "-IZ:\strawberry32_5161\perl\lib\CORE" Callback.c Running Mkbootstrap for Win32::API::Callback () Z:\strawberry32_5161\perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 Callback.bs Z:\strawberry32_5161\perl\bin\perl.exe -MExtUtils::Mksymlists \ -e "Mksymlists('NAME'=>\"Win32::API::Callback\", 'DLBASE' => 'Callback', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);" dlltool --def Callback.def --output-exp dll.exp g++ -o ..\blib\arch\auto\Win32\API\Callback\Callback.dll -Wl,--base-file -Wl,dll.base -mdll -s -L"Z:\strawberry32_5161\perl\lib\CORE" -L"Z:\strawberry32_5161\c\ lib" Callback.o Z:\strawberry32_5161\perl\lib\CORE\libperl516.a -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -lol eaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 dll.exp dlltool --def Callback.def --base-file dll.base --output-exp dll.exp g++ -o ..\blib\arch\auto\Win32\API\Callback\Callback.dll -mdll -s -L"Z:\strawberry32_5161\perl\lib\CORE" -L"Z:\strawberry32_5161\c\lib" Callback.o Z:\strawber ry32_5161\perl\lib\CORE\libperl516.a -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws 2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 dll.exp Z:\strawberry32_5161\perl\bin\perl.exe -MExtUtils::Command -e chmod -- 755 ..\blib\arch\auto\Win32\API\Callback\Callback.dll Z:\strawberry32_5161\perl\bin\perl.exe -MExtUtils::Command -e cp -- Callback.bs ..\blib\arch\auto\Win32\API\Callback\Callback.bs Z:\strawberry32_5161\perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 ..\blib\arch\auto\Win32\API\Callback\Callback.bs Z:\strawberry32_5161\perl\bin\perl.exe Z:\strawberry32_5161\perl\lib\ExtUtils\xsubpp -nolinenumbers -typemap Z:\strawberry32_5161\perl\lib\ExtUtils\typemap -t ypemap typemap API.xs > API.xsc && Z:\strawberry32_5161\perl\bin\perl.exe -MExtUtils::Command -e mv -- API.xsc API.c gcc -c -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -mms-bitfields -s -O2 -DVERSION=\"0. 73\" -DXS_VERSION=\"0.73\" "-IZ:\strawberry32_5161\perl\lib\CORE" API.c API.c: In function 'XS_Win32__API_UseMI64': API.c:341:14: warning: assignment from incompatible pointer type [enabled by default] Running Mkbootstrap for Win32::API () Z:\strawberry32_5161\perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 API.bs Z:\strawberry32_5161\perl\bin\perl.exe -MExtUtils::Mksymlists \ -e "Mksymlists('NAME'=>\"Win32::API\", 'DLBASE' => 'API', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);" dlltool --def API.def --output-exp dll.exp g++ -o blib\arch\auto\Win32\API\API.dll -Wl,--base-file -Wl,dll.base -mdll -s -L"Z:\strawberry32_5161\perl\lib\CORE" -L"Z:\strawberry32_5161\c\lib" API.o Z:\s trawberry32_5161\perl\lib\CORE\libperl516.a -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luu id -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 dll.exp dlltool --def API.def --base-file dll.base --output-exp dll.exp g++ -o blib\arch\auto\Win32\API\API.dll -mdll -s -L"Z:\strawberry32_5161\perl\lib\CORE" -L"Z:\strawberry32_5161\c\lib" API.o Z:\strawberry32_5161\perl\lib\COR E\libperl516.a -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lv ersion -lodbc32 -lodbccp32 -lcomctl32 dll.exp Z:\strawberry32_5161\perl\bin\perl.exe -MExtUtils::Command -e chmod -- 755 blib\arch\auto\Win32\API\API.dll Z:\strawberry32_5161\perl\bin\perl.exe -MExtUtils::Command -e cp -- API.bs blib\arch\auto\Win32\API\API.bs Z:\strawberry32_5161\perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 blib\arch\auto\Win32\API\API.bs y:\_repos\perl5-win32-api-bulk88>dmake test Z:\strawberry32_5161\perl\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib\lib', 'blib\arch')" t/*.t t/00_API.t .......... 1/48 # API test dll found at (API_test.dll) t/00_API.t .......... Dubious, test returned 5 (wstat 1280, 0x500) Failed 4/48 subtests t/01_Struct.t ....... 1/18 # $^E= # leaked mem warning intentional Win32::API::Struct::Unpack struct pointer member "wlan" was changed by C function, possible resource leak at t/01_Struct.t line 175. Use of uninitialized value in subroutine entry at Y:\_repos\perl5-win32-api-bulk88\blib\lib/Win32/API/Struct.pm line 267. Win32::API::Struct::Unpack struct pointer member "pDot11Ssid" was changed by C function, possible resource leak at t/01_Struct.t line 175. Win32::API::Struct::Unpack struct pointer member "wlan" was changed by C function, possible resource leak at t/01_Struct.t line 184. # unknown type is intentional Win32::API::Struct::new: unknown type="LPEIGHT_CHAR_ARR" at t/01_Struct.t line 235. Win32::API::Struct::new: unknown type="LPEIGHT_CHAR_ARR" at t/01_Struct.t line 253. t/01_Struct.t ....... ok t/02_GetProcess.t ... 1/3 # $result=3628 # $$=3628 t/02_GetProcess.t ... ok t/03_undef.t ........ # Win32::API 0.73 # Import: Neplatnø popisovaÀ t/03_undef.t ........ ok t/04_rt_48006.t ..... 1/4 Uninit warnings are intentional Use of uninitialized value in pack at Y:\_repos\perl5-win32-api-bulk88\blib\lib/Win32/API/Struct.pm line 317. Use of uninitialized value in pack at Y:\_repos\perl5-win32-api-bulk88\blib\lib/Win32/API/Struct.pm line 317. Use of uninitialized value in pack at Y:\_repos\perl5-win32-api-bulk88\blib\lib/Win32/API/Struct.pm line 317. Use of uninitialized value in pack at Y:\_repos\perl5-win32-api-bulk88\blib\lib/Win32/API/Struct.pm line 317. Use of uninitialized value in pack at Y:\_repos\perl5-win32-api-bulk88\blib\lib/Win32/API/Struct.pm line 317. Use of uninitialized value in pack at Y:\_repos\perl5-win32-api-bulk88\blib\lib/Win32/API/Struct.pm line 317. Use of uninitialized value in pack at Y:\_repos\perl5-win32-api-bulk88\blib\lib/Win32/API/Struct.pm line 317. Use of uninitialized value in pack at Y:\_repos\perl5-win32-api-bulk88\blib\lib/Win32/API/Struct.pm line 317. Use of uninitialized value in pack at Y:\_repos\perl5-win32-api-bulk88\blib\lib/Win32/API/Struct.pm line 317. Use of uninitialized value in pack at Y:\_repos\perl5-win32-api-bulk88\blib\lib/Win32/API/Struct.pm line 317. # Size is 296. Should be 296 t/04_rt_48006.t ..... ok t/05_more_struct.t .. ok t/06_rt_74578.t ..... 1/3 # @pack=(LLLLLLLlLa260, ARRAY(0x26719f4), ARRAY(0x2671ab4), 296, ARRAY(0x266c2b4)) t/06_rt_74578.t ..... ok t/benchmark.t ....... 1/7 # API test dll found at (API_test.dll) # time was 0.226669681435386 secs, 0.00113333140720582 ms per Win32::API call # time was 0.00138257941828741 secs, 0.00000691289709144 ms per C call t/benchmark.t ....... ok t/pod-coverage.t .... ok t/pod.t ............. ok t/v69.t ............. 1/36 # API test dll found at (API_test.dll) Win32::API::parse_prototype: bad prototype 'HANDLE GetProcessHeap( void ** ptr )' at Y:\_repos\perl5-win32-api-bulk88\blib\lib/Win32/API.pm line 541. t/v69.t ............. ok t/v70.t ............. 1/17 # API test dll found at (API_test.dll) t/v70.t ............. ok t/v71.t ............. 1/23 # API test dll found at (API_test.dll) # under 8 byte warnings are intended Win32::API::Call value for 64 bit integer is under 8 bytes long at Y:\_repos\perl5-win32-api-bulk88\blib\lib/Win32/API/Type.pm line 281. Win32::API::Call value for 64 bit integer is under 8 bytes long at Y:\_repos\perl5-win32-api-bulk88\blib\lib/Win32/API/Type.pm line 281. t/v71.t ............. ok Test Summary Report ------------------- t/00_API.t (Wstat: 1280 Tests: 44 Failed: 0) Non-zero exit status: 5 Parse errors: Bad plan. You planned 48 tests but ran 44. Files=13, Tests=191, 6 wallclock secs ( 0.22 usr + 0.11 sys = 0.33 CPU) Result: FAIL Failed 1/13 test programs. 0/191 subtests failed. dmake: Error code 255, while making 'test_dynamic' y:\_repos\perl5-win32-api-bulk88>
Subject: crash-log.txt
y:\_repos\perl5-win32-api-bulk88>prove -bv t\00_API.t t\00_API.t .. 1..48 ok 1 - use Win32::API; ok 2 - use Win32::API::Test; ok 3 - use Win32; ok 4 - loaded # API test dll found at (API_test.dll) ok 5 - found API test dll ok 6 - GetCurrentProcessId() function found ok 7 - GetCurrentProcessId() result ok ok 8 - GetCurrentProcessId() result ok ok 9 - Import of GetCurrentProcessId() function from kernel32.dll ok 10 - GetCurrentProcessId() result ok ok 11 - Import of IsBadReadPtr function from kernel32.dll ok 12 - API test dll was freed ok 13 - highbit_unsigned() function defined ok 14 - return value for unsigned is signed on old API ok 15 - GetHandle operates correctly ok 16 - FreeHandle operates correctly ok 17 - sum_integers() function defined ok 18 - function call with integer arguments and return value ok 19 - sum_integers_ref() function defined ok 20 - sum_integers_ref() returns the expected value ok 21 - sum_integers_ref() correctly modifies its ref argument ok 22 - short as return type croak because they are structs on old API ok 23 - sum_shorts_ref() function defined ok 24 - shorts croak as struct objs on old API ok 25 - API_test.dll sum_doubles function defined ok 26 - function call with double arguments ok 27 - sum_doubles_ref() function defined ok 28 - sum_doubles_ref() call works ok 29 - sum_doubles_ref() sets ref correctly ok 30 - sum_floats() function defined ok 31 - sum_floats() result correct ok 32 - sum_floats_ref() function defined ok 33 - sum_floats_ref() returns the expected value (1) ok 34 - sum_floats_ref() call works ok 35 - find_char() function defined ok 36 - find_char() function call works ok 37 - sum_char_ref() returns the expected value ok 38 - sum_char_ref() correctly modifies its ref argument ok 39 - numeric truncation sum_char_ref() returns the expected value ok 40 - sum_char_ref() correctly modifies its ref argument ok 41 - wstr_cmp() returns the expected value ok 42 - buffer overflow protection worked ok 43 - idiot flag works ok 44 - cdecl c_sum_integers() function defined Dubious, test returned 5 (wstat 1280, 0x500) Failed 4/48 subtests Test Summary Report ------------------- t\00_API.t (Wstat: 1280 Tests: 44 Failed: 0) Non-zero exit status: 5 Parse errors: Bad plan. You planned 48 tests but ran 44. Files=1, Tests=44, 2 wallclock secs ( 0.09 usr + 0.02 sys = 0.11 CPU) Result: FAIL y:\_repos\perl5-win32-api-bulk88>
RT-Send-CC: kmx [...] volny.cz
On Sat Oct 20 03:54:55 2012, kmx@volny.cz wrote: Show quoted text
> Unfortunately 32bit strawberry 5.16.1 still crashing > > -- > kmx
I decided to download 32 bit S perl 5.16.1 and so far, I think it is an asm problem with the cdecl stack fixer/adder in call_i686.h. Variable "words_pushed" was zero at the end of the Call_asm. I am still researching.
RT-Send-CC: kmx [...] volny.cz
On Sat Oct 20 13:12:42 2012, BULKDD wrote: Show quoted text
> On Sat Oct 20 03:54:55 2012, kmx@volny.cz wrote:
> > Unfortunately 32bit strawberry 5.16.1 still crashing > > > > -- > > kmx
> I decided to download 32 bit S perl 5.16.1 and so far, I think it is an > asm problem with the cdecl stack fixer/adder in call_i686.h. Variable > "words_pushed" was zero at the end of the Call_asm. I am still
researching. Bug identified, 32 bit Strawberry Perl 5.12 was using ebp parameter addressing, 32 bit Strawberry Perl 5.16 is using esp parameter addressing, since esp was moved around by "push"ing onto the stack, esp addressing can not be used to fetch words_pushed to restore esp back to its original position. keywords "frame pointer omission". Not sure how to fix this yet since my knowledge of GCC is poor.
RT-Send-CC: kmx [...] volny.cz
On Sat Oct 20 13:20:59 2012, BULKDD wrote: Show quoted text
> On Sat Oct 20 13:12:42 2012, BULKDD wrote:
> > On Sat Oct 20 03:54:55 2012, kmx@volny.cz wrote:
> > > Unfortunately 32bit strawberry 5.16.1 still crashing > > > > > > -- > > > kmx
> > I decided to download 32 bit S perl 5.16.1 and so far, I think it is an > > asm problem with the cdecl stack fixer/adder in call_i686.h. Variable > > "words_pushed" was zero at the end of the Call_asm. I am still
> researching. > > Bug identified, 32 bit Strawberry Perl 5.12 was using ebp parameter > addressing, 32 bit Strawberry Perl 5.16 is using esp parameter > addressing, since esp was moved around by "push"ing onto the stack, esp > addressing can not be used to fetch words_pushed to restore esp back to > its original position. keywords "frame pointer omission". Not sure how > to fix this yet since my knowledge of GCC is poor.
A fix was implemented, the fix only works on GCC 4.4 or newer, so S Perl 5.16 is covered. The fix is not publically posted yet.
RT-Send-CC: kmx [...] volny.cz
On Sat Oct 20 15:45:16 2012, BULKDD wrote: Show quoted text
> On Sat Oct 20 13:20:59 2012, BULKDD wrote:
> > On Sat Oct 20 13:12:42 2012, BULKDD wrote:
> > > On Sat Oct 20 03:54:55 2012, kmx@volny.cz wrote:
> > > > Unfortunately 32bit strawberry 5.16.1 still crashing > > > > > > > > -- > > > > kmx
> > > I decided to download 32 bit S perl 5.16.1 and so far, I think it
is an Show quoted text
> > > asm problem with the cdecl stack fixer/adder in call_i686.h. Variable > > > "words_pushed" was zero at the end of the Call_asm. I am still
> > researching. > > > > Bug identified, 32 bit Strawberry Perl 5.12 was using ebp parameter > > addressing, 32 bit Strawberry Perl 5.16 is using esp parameter > > addressing, since esp was moved around by "push"ing onto the stack, esp > > addressing can not be used to fetch words_pushed to restore esp back to > > its original position. keywords "frame pointer omission". Not sure how > > to fix this yet since my knowledge of GCC is poor.
> > A fix was implemented, the fix only works on GCC 4.4 or newer, so S Perl > 5.16 is covered. The fix is not publically posted yet. >
The 32 bit Strawberry Perl 5.16 fixes are now available in Win32::API 0.73 on CPAN.