Christian Brabandt wrote:

> > > On Mo, 13 Jun 2016, Christian Brabandt wrote:
> > > 
> > > > Something between 7.4.1924 and 7.4.1926 broke the daily binary built:
> > > > 
> > > > ..\gvim -u dos.vim -U NONE --noplugin --not-a-term "+set ff=dos|f 
> > > > dostmp\test58.in|wq" test58.in
> > > >     move test58.in test58.in.bak
> > > >         1 file(s) moved.
> > > >     copy dostmp\test58.in test58.in
> > > >         1 file(s) copied.
> > > >     copy test58.ok test.ok
> > > >         1 file(s) copied.
> > > >     ..\gvim -u dos.vim -U NONE --noplugin --not-a-term -s dotest.in 
> > > > test58.in
> > > > NMAKE : fatal error U1077: '..\gvim.EXE' : return code '0xc0000005'
> > > > Stop.
> > > > 
> > > > I rebuild that commit 3 times and it always breaks at that step for the
> > > > 32bit build. Does anybody know, what that means?
> > > 
> > > I think the crash happens in the quit command of the test58.in file 
> > > (function TestOne(), line 28)
> > > 
> > > ,----
> > > |   " list all valid words
> > > |   spelldump
> > > |   %yank
> > > |   quit
> > > |   $put
> > > `----
> > > 
> > > 
> > > I stepped into it using a debugger, and I think the stacktrace shows, 
> > > that the crash happens in:
> > > win_free(), when calling perl_win_free()
> > > Stacktrace (sorry, only screenshot):
> > > http://i.imgur.com/fzmHS9r.png
> > > 
> > > Sorry, don't know how to further debug this.
> > > 
> > > If someone wants knows how to debug it,
> > > you can download a broken Gvim here:
> > > https://github.com/chrisbra/vim-win32-installer/releases/tag/v7.4.1934_test
> > > (only happens with the x86 versions).
> > 
> > Hmm, since the test does not use Perl at all, w_perl_private should not
> > have been set.  If it's not NULL then perhaps it was corrupted?
> > Perhaps if you step into perl_win_free() you can see what the value is?
> > 
> > You could try commenting out the call to perl_win_free() and see if it
> > finishes properly or then crashe somewhere else (e.g., when using other
> > pointers next to w_perl_private, e.g. w_python_ref or w_mzscheme_ref).
> > 
> > If you can set a watch point in this debugger, watching w_perl_private
> > might also reveal something.
> 
> It happens in mark.c:
> 
>    174     /* If jumplist is full: remove oldest entry */
>    175     if (++curwin->w_jumplistlen > JUMPLISTSIZE)
>    176     {
>    177         curwin->w_jumplistlen = JUMPLISTSIZE;
>    178         vim_free(curwin->w_jumplist[0].fname);
>    179         for (i = 1; i < JUMPLISTSIZE; ++i)
>    180             curwin->w_jumplist[i - 1] = curwin->w_jumplist[i];
>    181     }
>    182     curwin->w_jumplistidx = curwin->w_jumplistlen;
>    183     fm = &curwin->w_jumplist[curwin->w_jumplistlen - 1];
>    184
>    185     fm->fmark.mark = curwin->w_pcmark;
>    186     fm->fmark.fnum = curbuf->b_fnum;
>    187     fm->fname = NULL;
>    188 # ifdef FEAT_VIMINFO
>    189     fm->time_set = vim_time();
>    190 # endif
>    191 #endif
> 
> somehow, w_jumplistlen isn't incremented, then fm access 
> curwin->w_jumplist[-1]
> this goes on, until w_jumplistlen gets overwritten to a really high value 
> which
> later causes curwin->w_perl_private to be set to 1.
> 
> I don't understand why this happens, I tried adding some check statements, so 
> that
> curwin->w_jumplistlen is always positive, but this didn't help for some 
> reason.
> 
> Don't know how to further help here.

Have you tried after patch 7.4.1939?  It fixes a problem where
w_jumplistlen was overwritten with a line number.  Valgrind doesn't
catch this because it's still within a struct.

-- 
# echo reboot >universe
# chmod +x universe
# ./universe

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
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.

Raspunde prin e-mail lui