Dominique Pellé wrote: > Cesar Romani wrote: > >> Bram Moolenaar wrote: >>> Cesar Romani wrote: >>> >>>> I tried compiling vim 7.2 with termcap on MSYS, and it compiles fine. >>>> However, when I execute it, I get: >>>> -------------------- >>>> $ vim >>>> Vim: Caught deadly signal SEGV >>>> Vim: Finished. >>>> -------------------- >>>> >>>> If I run gdb on it, I get: >>>> -------------------- >>>> $ gdb vim.exe >>>> GNU gdb 6.8 >>>> Copyright (C) 2008 Free Software Foundation, Inc. >>>> License GPLv3+: GNU GPL version 3 or later >>>> <http://gnu.org/licenses/gpl.html> >>>> This is free software: you are free to change and redistribute it. >>>> There is NO WARRANTY, to the extent permitted by law. Type "show >> copying" >>>> and "show warranty" for details. >>>> This GDB was configured as "i686-pc-mingw32"... >>>> (gdb) run >>>> Starting program: C:\msys\1.0\home\Romer\msys\vim72\src/vim.exe >>>> [New thread 5908.0xfec] >>>> Vim: Warning: Output is not to a terminal >>>> Vim: Warning: Input is not from a terminal >>>> [New thread 5908.0x580] >>>> >>>> Program received signal SIGSEGV, Segmentation fault. >>>> 0x004fee32 in set_termname ( >>>> term=0x3a6c3532 <Address 0x3a6c3532 out of bounds>) at term.c:1866 >>>> 1866 if (STRCMP(term, "pcterm") == 0) >>>> -------------------- >>>> >>>> The compilation and execution of vim for win32 with MingW is fine and I >>>> want to compile it on the MSYS environment because the vim version there >>>> is too old, 5.8 >>> Strange that it crashes there. Earlier in the set_termname() function >>> there is this line: >>> >>> if (term_is_builtin(term)) >>> >>> Try setting a breakpoint there. >>> >>> With weird errors I suspect the compiler. Did you disable the >>> optimizer? There are quite a few versions of gcc with bugs in the >>> optimizer code. >> The gcc version I'm using is 2.95.3-1 >> and the optimizer isn't disabled: >> CFLAGS = -g -O2 >> >> If I put a break at line 1615: >> if (term_is_builtin(term)) >> I get: >> -------------------- >> (gdb) break term.c:1615 >> Breakpoint 1 at 0x4fcdee: file term.c, line 1615. >> (gdb) run >> The program being debugged has been started already. >> Start it from the beginning? (y or n) [answered Y; input not from >> terminal] >> Starting program: C:\msys\1.0\home\Romer\msys\vim72\src/vim.exe >> [New thread 3524.0x7b8] >> Vim: Warning: Output is not to a terminal >> Vim: Warning: Input is not from a terminal >> [New thread 3524.0x59c] >> >> Breakpoint 1, set_termname (term=0xa0158b8 "msys") at term.c:1615 >> 1615 if (term_is_builtin(term)) >> -------------------- >> >> Regards, >> Cesar > > > I don't understand how term can be correct at line term.c:1615 and > then later incorrect at line 1866. > > It's worth disabling optimization by building Vim with -O0 instead of -O2. > This can be done by adding a line in src/Makefile with -O0. For example: > > 528 # Often used for GCC: mixed optimizing, lot of optimizing, debugging > 529 CFLAGS = -g -O0 -Wall > > Then re-compile with: "make clean; make" > > When putting a breakpoint at line term.c:1615, > what is the value of 'term' variable? (output of gdb command: print term) > > Ex: > > (gdb) p term > $1 = (char_u *) 0x946e25c "xterm-256color"
$1 = (char_u *) 0xa0158c0 "msys" > What is also the value of 'term' later at line 1866 where it crashes? $1 = (char_u *) 0x3a6c3532 <Address 0x3a6c3532 out of bounds> > Output of gdb command "bt full" might also be helpful. -------------------- (gdb) bt full #0 0x004fd3a2 in set_termname ( term=0x3a6c3532 <Address 0x3a6c3532 out of bounds>) at term.c:1866 termp = (struct builtin_term *) 0x22f860 builtin_first = 1 try = 2 termcap_cleared = 1 width = 80 height = 25 error_msg = (char_u *) 0x0 bs_p = (char_u *) 0x22f860 ":\017R" del_p = (char_u *) 0x3a6c3532 <Address 0x3a6c3532 out of bounds> #1 0x3f5b455c in ?? () No symbol table info available. #2 0x3a6c3532 in ?? () No symbol table info available. ... #189 0x00000000 in ?? () No symbol table info available. -------------------- If I re-compile with CFLAGS = -g -O0 -Wall, vim executes fine on the console but not on rxvt: -------------------- (gdb) run Starting program: C:\msys\1.0\home\Romer\msys\vim72\src/vim.exe [New thread 252.0xe14] Vim: Warning: Output is not to a terminal Vim: Warning: Input is not from a terminal [New thread 252.0xe3c] Program received signal SIGSEGV, Segmentation fault. 0x71084d3a in strcmp () from C:\msys\1.0\bin\msys-1.0.dll -------------------- For the console TERM=cygwin and for rxvt TERM=msys Regards, Cesar --~--~---------~--~----~------------~-------~--~----~ You received this message from the "vim_dev" maillist. For more information, visit http://www.vim.org/maillist.php -~----------~----~----~----~------~----~------~--~---