Oh, that is nasty. Compiling different files with different flags is possible with C and can cause these problems.
I would suggest to find a way to compile the Perl code with 64 bit time_t, and maybe redefine time_t to a 32 bit type where needed. Not sure if this will be possible, since the code is generated. On 23 June 2016 at 08:10, Ken Takata <[email protected]> wrote: > Hi Christian, > > 2016/6/23 Thu 5:26:13 UTC+9 Christian Brabandt wrote: > > I don't exactly understand the if_perl.xs script, but could it be, that > > sizeof(void *) is different for perl and vim? I assume that somehow the > perl > > interpreter uses a different size of wp->w_perl_private variable > > (possibly 64bit vs. 32bit of the Vim executable) and this seems to cause > > this issue. > > > > If I run perl -v I see this: > > ..Projects\vim\src>perl -v > > > > ,---- > > | This is perl 5, version 22, subversion 1 (v5.22.1) built for > MSWin32-x86-multi-thread-64int > > | (with 1 registered patch, see perl -V for more detail) > > | > > | Copyright 1987-2015, Larry Wall > > | > > | Binary build 2201 [299574] provided by ActiveState > http://www.ActiveState.com > > | Built Dec 24 2015 12:36:28 > > | > > | Perl may be copied only under the terms of either the Artistic License > or the > > | GNU General Public License, which may be found in the Perl 5 source > kit. > > | > > | Complete documentation for Perl, including FAQ lists, should be found > on > > | this system using "man perl" or "perldoc perl". If you have access to > the > > | Internet, point your browser at http://www.perl.org/, the Perl Home > Page. > > `---- > > > > I can avoid this crash, by using this patch: > > > > diff -r 405c0bba9d1d src/window.c > > --- a/src/window.c Wed Jun 15 22:15:07 2016 +0200 > > +++ b/src/window.c Wed Jun 22 20:09:33 2016 +0200 > > @@ -4549,7 +4549,8 @@ > > #endif > > > > #ifdef FEAT_PERL > > - perl_win_free(wp); > > + if (wp->w_perl_private) > > + perl_win_free(wp); > > #endif > > > > #ifdef FEAT_PYTHON > > > > But this breaks then later in the test_perl.vim Test with > > From test_perl.vim: > > Found errors in Test_SvREFCNT(): > > function RunTheTest[9]..Test_SvREFCNT line 15: Expected False but got > 83852072 > > TEST FAILURE > > > > from > https://ci.appveyor.com/project/chrisbra/vim-win32-installer-33v6e/build/45/job/eic9bm4hwr1le2ak#L4723 > > > > But I don't know, how to fix this. > > > > For reference, this happens on a windows 64 bit system, when building > > the 32bit version of gvim > > I confirmed that this happens when both if_perl and if_mzsch are enabled. > https://ci.appveyor.com/project/k-takata/vim-win32-installer/history > > I'm not sure why if_mzsch is related, but now I found that v7.4.1925 causes > this problem. The size of time_t is the root cause. > > 32-bit versions of ActivePerl and Strawberry Perl require 32-bit time_t. > So > we define _USE_32BIT_TIME_T in if_perl.xs. However recent versions of VC > are > 64-bit time_t by default. So the size of time_t is 64 bits in other files. > The patch 1925 adds a time_t member to xfmark_T which is included in > window_T, > so the size of window_T becomes different in if_perl.xs and in other files. > > I confirmed that the following workaround fixes the problem. > (But there should be much better solution...) > > --- a/src/structs.h > +++ b/src/structs.h > @@ -114,6 +114,9 @@ typedef struct xfilemark > char_u *fname; /* file name, used when fnum == 0 */ > #ifdef FEAT_VIMINFO > time_t time_set; > +# ifdef _USE_32BIT_TIME_T > + int padding; > +# endif > #endif > } xfmark_T; > > > Both test58 and test_perl.vim pass with this patch. > > Using 32-bit time_t in all part might be the easiest solution, but I don't > want to use the solution. The size of time_t should be 64 bits (except in > if_perl.xs). > > > Regards, > Ken Takata > > -- > -- > You received this message from the "vim_dev" maillist. > Do not top-post! Type your reply below the text you are replying to. > For more information, visit http://www.vim.org/maillist.php > > --- > You received this message because you are subscribed to the Google Groups > "vim_dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
