Dominique Pellé wrote: > > Cesar Romani wrote: > > >> >> Dominique Pellé wrote: > > ... >>> >>> 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. >> >> -------------------- > > > > I can't see any place where 'term' variable would be changed > > other than when it's set to DEFAULT_TERM at line 1816 (but > > that would not cause 'term' pointer to be incorrect). > > > > So it leaves the possibility of a corrupted stack. > > > > Can you put intermediate breakpoints (or execute line by line with > > the "next" gdb command if you prefer) between line term.c:1615 > > (where 'term' pointer is still OK) and line term.c:1866 where 'term' > > pointer becomes invalid so we can narrow it down? At each steps, > > you can do "print term" in gdb to see when 'term' pointer starts to > > become "out of bounds".
-------------------- Breakpoint 1, set_termname (term=0xa0158c0 "msys") at term.c:1615 1615 if (term_is_builtin(term)) (gdb) p term $1 = (char_u *) 0xa0158c0 "msys" (gdb) n 1634 for (try = builtin_first ? 0 : 1; try < 3; ++try) (gdb) p term $2 = (char_u *) 0xa0158c0 "msys" (gdb) n 1639 if (try == 1) (gdb) p term $3 = (char_u *) 0xa0158c0 "msys" (gdb) n 1762 if (try == 2 && builtin_first && termcap_cleared) (gdb) p term $4 = (char_u *) 0xa0158c0 "msys" (gdb) n 1768 termp = find_builtin_term(term); (gdb) p term $5 = (char_u *) 0xa0158c0 "msys" (gdb) n 1769 if (termp->bt_string == NULL) /* did not find it */ (gdb) p term $6 = (char_u *) 0xa0158c0 "msys" (gdb) n 1779 if (try == 0) /* try external one */ (gdb) p term $7 = (char_u *) 0xa0158c0 "msys" (gdb) n 1780 continue; (gdb) p term $8 = (char_u *) 0xa0158c0 "msys" (gdb) n 1634 for (try = builtin_first ? 0 : 1; try < 3; ++try) (gdb) p term $9 = (char_u *) 0xa0158c0 "msys" (gdb) n 1639 if (try == 1) (gdb) p term $10 = (char_u *) 0xa0158c0 "msys" (gdb) n 1675 if ((error_msg = tgetent_error(tbuf, term)) == NULL) (gdb) p term $11 = (char_u *) 0xa0158c0 "msys" (gdb) n 1677 tp = tstrbuf; (gdb) p term $12 = (char_u *) 0x5b455c3d <Address 0x5b455c3d out of bounds> -------------------- >> >> 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 > > > > Ah. So if I understand correctly what you're saying: > > - with -O0, Vim works in the cygwin console, but with -O2 it > > did not work in the cygwin console (correct?) that's correct. > > - In in rxvt, it still does not work even with -O0. What is the > > stack where it crashes? (output of gdb "backtrace" command). -------------------- (gdb) backtrace #0 0x71084d3a in strcmp () from C:\msys\1.0\bin\msys-1.0.dll #1 0x0053a9d4 in set_termname ( term=0x5b455c3d <Address 0x5b455c3d out of bounds>) at term.c:1866 #2 0x69253a24 in ?? () #3 0x5b455c3d in ?? () ... #176 0x0022003a in ?? () #177 0x71004c7f in msys-1!_dll_c...@0 () from C:\msys\1.0\bin\msys-1.0.dll (gdb) Cannot access memory at address 0x355b4560 -------------------- Regards, Cesar --~--~---------~--~----~------------~-------~--~----~ You received this message from the "vim_dev" maillist. For more information, visit http://www.vim.org/maillist.php -~----------~----~----~----~------~----~------~--~---