Vim segv'ing

Andy Koppe andy.koppe@gmail.com
Fri Jul 1 10:21:00 GMT 2011


On 1 July 2011 10:43, Corinna Vinschen wrote:
> On Jul  1 10:36, Corinna Vinschen wrote:
>> FYI, I tracked it down to the place where the stack overwrite occurs.
>> This is most puzzeling.  When typing :wq!, the following chain of functions
>> is called:
>>
>>   nv_colon
>>    do_cmdline
>>     ex_exit
>>      do_write
>>       open                           <- Here it calls into the Cygwin DLL
>>        fhandler_base::open_with_arch
>>         fhandler_base::open_fs
>>          fhandler_base::open
>>           NtCreateFile               <--Here it calls into NTDLL.DLL
>>
>> The open call tries to open the backup file "/etc/hosts~", not the
>> symlink itself.
>>
>> In the optimized version of vim, the local variable "cap" in the
>> function nv_colon is kept in register $esi.  When do_cmdline is called,
>> $esi is pushed onto the stack.  Then everything goes its normal ways,
>> until NtCreateFile is called.
>>
>> And here's the puzzler: This call to NtCreateFile overwrites the 4 byte
>> stack slot in which the "cap" pointer is saved with the value 0x10c!

What else has access to that? The signal thread?


>> [...]
>> Oh, and here's a last-minute surprise:  It does not happen if you run
>> gvim, rather than vim.  Maybe I should just give up to provide packages.
>
> And it also does not happen if I build Cygwin with gcc 4.5.1 rather than
> with gcc 4.3.4.  Is it possible that a compiler bug is playing a role
> here?  I can't quite believe it, the effect is too specific.

This sounds similar to some unexplained mintty crashes that Chris
Sutcliffe and I have seen with gcc 4.3.4, triggered by setup.exe
running postinstall scripts or vim accessing /etc/fstab. Unfortunately
we never managed to pin down the actual cause, inspite of a fair bit
of debugging and staring at the compiler's assembly output. The
crashes went away with changes that should have made no difference.

See here:
http://code.google.com/p/mintty/source/detail?r=928
http://code.google.com/p/mintty/source/detail?r=894
http://groups.google.com/group/mintty-discuss/browse_thread/thread/7f1afcb74c61fe99

Andy

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list