I'm seeing another test failure in Debian's build environment, which
seems to again be related to vim not running attached to a tty.  I've
been seeing this since at least 8.1.0549 and the below run is with
8.1.0687.

This line

    call feedkeys("ix\<esc>", 'tnix')

in Test_edit_forbidden() gets stuck waiting on input from the user.

The make process that's running the tests has stdin pointed to /dev/null
and stdout/stderr pointed to a pipe.

lrwx------ 1 jamessan jamessan 64 Jan  4 08:05 0 -> /dev/null
l-wx------ 1 jamessan jamessan 64 Jan  4 08:05 1 -> pipe:[1995567]
l-wx------ 1 jamessan jamessan 64 Jan  4 08:05 2 -> pipe:[1995567]

18728 ?        S      0:00                              \_ /usr/bin/make -j1 -C 
src/vim-basic test
18933 ?        S      0:00                                  \_ /bin/sh -c cd 
testdir; /usr/bin/make -f Makefile  VIMPROG=../vim  SCRIPTSOURCE=../../runtime
18934 ?        S      0:00                                      \_ 
/usr/bin/make -f Makefile VIMPROG=../vim SCRIPTSOURCE=../../runtime
20828 ?        S      0:00                                          \_ /bin/sh 
-c VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -f  -u unix.vim -U NONE 
--noplugin --not-a-term -S runtest.vim test_edit.vim 
20829 ?        R      0:35                                              \_ 
../vim -f -u unix.vim -U NONE --noplugin --not-a-term -S runtest.vim 
test_edit.vim --cmd au SwapExists * let v:swapchoice = "e"

The backtrace at the time of the hang is

(gdb) bt
#0  0x00007f85993963c7 in __GI___select (nfds=1, readfds=0x55d62f3abfc0 <rfds>, 
writefds=0x55d62f3ac040 <wfds>, exceptfds=0x55d62f3ac0c0 <efds>, 
timeout=0x7ffdd16f6e50) at ../sysdeps/unix/sysv/linux/select.c:41
#1  0x000055d62f21ac12 in RealWaitForChar (fd=0, msec=0, check_for_gpm=0x0, 
interrupted=0x0) at os_unix.c:6272
#2  0x000055d62f21a7ca in mch_breakcheck (force=0) at os_unix.c:5914
#3  0x000055d62f2cc949 in ui_breakcheck_force (force=0) at ui.c:423
#4  0x000055d62f2cc905 in ui_breakcheck () at ui.c:395
#5  0x000055d62f195f06 in vgetorpeek (advance=1) at getchar.c:2072
#6  0x000055d62f195724 in vgetc () at getchar.c:1626
#7  0x000055d62f195c2c in safe_vgetc () at getchar.c:1830
#8  0x000055d62f0faf72 in edit (cmdchar=105, startln=0, count=1) at edit.c:803
#9  0x000055d62f1f1e1a in invoke_edit (cap=0x7ffdd16f7200, repl=0, cmd=105, 
startln=0) at normal.c:9238
#10 0x000055d62f1f1d96 in nv_edit (cap=0x7ffdd16f7200) at normal.c:9208
#11 0x000055d62f1e302c in normal_cmd (oap=0x7ffdd16f7280, toplevel=1) at 
normal.c:1121
#12 0x000055d62f162e5a in exec_normal (was_typed=1, use_vpeekc=0, 
may_use_terminal_loop=1) at ex_docmd.c:10509
#13 0x000055d62f124141 in f_feedkeys (argvars=0x7ffdd16f7710, 
rettv=0x7ffdd16f78f0) at evalfunc.c:3648
#14 0x000055d62f11f72a in call_internal_func (name=0x55d630f72570 "feedkeys", 
argcount=2, argvars=0x7ffdd16f7710, rettv=0x7ffdd16f78f0) at evalfunc.c:1084
#15 0x000055d62f2d82db in call_func (funcname=0x55d630fb4810 "feedkeys", len=8, 
rettv=0x7ffdd16f78f0, argcount_in=2, argvars_in=0x7ffdd16f7710, argv_func=0x0, 
firstline=1, lastline=1, doesrange=0x7ffdd16f78b8, 
    evaluate=1, partial=0x0, selfdict_in=0x0) at userfunc.c:1507
#16 0x000055d62f2d5f1b in get_func_tv (name=0x55d630fb4810 "feedkeys", len=8, 
rettv=0x7ffdd16f78f0, arg=0x7ffdd16f78c0, firstline=1, lastline=1, 
doesrange=0x7ffdd16f78b8, evaluate=1, partial=0x0, selfdict=0x0)
    at userfunc.c:455
#17 0x000055d62f2dc3b9 in ex_call (eap=0x7ffdd16f79e0) at userfunc.c:3171
#18 0x000055d62f1545fb in do_one_cmd (cmdlinep=0x7ffdd16f7c20, sourcing=1, 
cstack=0x7ffdd16f7d10, fgetline=0x55d62f2dc827 <get_func_line>, 
cookie=0x55d630f80500) at ex_docmd.c:2525
#19 0x000055d62f151a32 in do_cmdline (cmdline=0x0, fgetline=0x55d62f2dc827 
<get_func_line>, cookie=0x55d630f80500, flags=7) at ex_docmd.c:1036
#20 0x000055d62f2d7217 in call_user_func (fp=0x55d630fab260, argcount=0, 
argvars=0x7ffdd16f8890, rettv=0x7ffdd16f8a70, firstline=1, lastline=1, 
selfdict=0x0) at userfunc.c:954
#21 0x000055d62f2d8241 in call_func (funcname=0x55d630f771b0 
"Test_edit_forbidden", len=19, rettv=0x7ffdd16f8a70, argcount_in=0, 
argvars_in=0x7ffdd16f8890, argv_func=0x0, firstline=1, lastline=1, 
    doesrange=0x7ffdd16f8a38, evaluate=1, partial=0x0, selfdict_in=0x0) at 
userfunc.c:1488
#22 0x000055d62f2d5f1b in get_func_tv (name=0x55d630f771b0 
"Test_edit_forbidden", len=19, rettv=0x7ffdd16f8a70, arg=0x7ffdd16f8a40, 
firstline=1, lastline=1, doesrange=0x7ffdd16f8a38, evaluate=1, partial=0x0, 
    selfdict=0x0) at userfunc.c:455
#23 0x000055d62f2dc3b9 in ex_call (eap=0x7ffdd16f8b60) at userfunc.c:3171
#24 0x000055d62f1545fb in do_one_cmd (cmdlinep=0x7ffdd16f8da0, sourcing=1, 
cstack=0x7ffdd16f8e90, fgetline=0x55d62f2dc827 <get_func_line>, 
cookie=0x55d630fafa70) at ex_docmd.c:2525
#25 0x000055d62f151a32 in do_cmdline (cmdline=0x55d630f2caa0 "call 
Test_edit_forbidden()", fgetline=0x55d62f2dc827 <get_func_line>, 
cookie=0x55d630fafa70, flags=3) at ex_docmd.c:1036
#26 0x000055d62f11aad8 in ex_execute (eap=0x7ffdd16f9450) at eval.c:8183
#27 0x000055d62f1545fb in do_one_cmd (cmdlinep=0x7ffdd16f9690, sourcing=1, 
cstack=0x7ffdd16f9780, fgetline=0x55d62f2dc827 <get_func_line>, 
cookie=0x55d630fafa70) at ex_docmd.c:2525
#28 0x000055d62f151a32 in do_cmdline (cmdline=0x0, fgetline=0x55d62f2dc827 
<get_func_line>, cookie=0x55d630fafa70, flags=7) at ex_docmd.c:1036
#29 0x000055d62f2d7217 in call_user_func (fp=0x55d630f86ca0, argcount=1, 
argvars=0x7ffdd16fa300, rettv=0x7ffdd16fa4e0, firstline=1, lastline=1, 
selfdict=0x0) at userfunc.c:954
#30 0x000055d62f2d8241 in call_func (funcname=0x55d630f36880 "RunTheTest", 
len=10, rettv=0x7ffdd16fa4e0, argcount_in=1, argvars_in=0x7ffdd16fa300, 
argv_func=0x0, firstline=1, lastline=1, 
    doesrange=0x7ffdd16fa4a8, evaluate=1, partial=0x0, selfdict_in=0x0) at 
userfunc.c:1488
#31 0x000055d62f2d5f1b in get_func_tv (name=0x55d630f36880 "RunTheTest", 
len=10, rettv=0x7ffdd16fa4e0, arg=0x7ffdd16fa4b0, firstline=1, lastline=1, 
doesrange=0x7ffdd16fa4a8, evaluate=1, partial=0x0, 
    selfdict=0x0) at userfunc.c:455
#32 0x000055d62f2dc3b9 in ex_call (eap=0x7ffdd16fa5d0) at userfunc.c:3171
#33 0x000055d62f1545fb in do_one_cmd (cmdlinep=0x7ffdd16fa810, sourcing=1, 
cstack=0x7ffdd16fa900, fgetline=0x55d62f15262c <get_loop_line>, 
cookie=0x7ffdd16fa8a0) at ex_docmd.c:2525
#34 0x000055d62f151a32 in do_cmdline (cmdline=0x55d630f70dd0 "\" This script is 
sourced while editing the .vim file with the tests.", fgetline=0x55d62f14f9c6 
<getsourceline>, cookie=0x7ffdd16fae70, flags=7)
    at ex_docmd.c:1036
#35 0x000055d62f14f588 in do_source (fname=0x55d630f35da3 "runtest.vim", 
check_other=0, is_vimrc=0) at ex_cmds2.c:4615
#36 0x000055d62f14eb35 in cmd_source (fname=0x55d630f35da3 "runtest.vim", 
eap=0x7ffdd16fb040) at ex_cmds2.c:4229
#37 0x000055d62f14ea84 in ex_source (eap=0x7ffdd16fb040) at ex_cmds2.c:4204
#38 0x000055d62f1545fb in do_one_cmd (cmdlinep=0x7ffdd16fb280, sourcing=1, 
cstack=0x7ffdd16fb370, fgetline=0x0, cookie=0x0) at ex_docmd.c:2525
#39 0x000055d62f151a32 in do_cmdline (cmdline=0x55d630f38120 "so runtest.vim", 
fgetline=0x0, cookie=0x0, flags=11) at ex_docmd.c:1036
#40 0x000055d62f151030 in do_cmdline_cmd (cmd=0x55d630f38120 "so runtest.vim") 
at ex_docmd.c:637
#41 0x000055d62f31a4fc in exe_commands (parmp=0x55d62f3b0b80 <params>) at 
main.c:2964
#42 0x000055d62f31792f in vim_main2 () at main.c:814
#43 0x000055d62f3172a7 in main (argc=13, argv=0x7ffdd16fb9d8) at main.c:441

Vim is spinning in edit() around the call to safe_vgetc().  safe_vgetc()
returns 0x1b (Escape) and cmdchar at the time is 'i'.

The actual loop (at a highlevel, from gdb) is:

642             if (!revins_legal)
(gdb) 
643                 revins_scol = -1;       /* reset on illegal motions */
(gdb) 
647             if (arrow_used)     /* don't repeat insert when arrow key used 
*/
(gdb) 
650             if (update_Insstart_orig)
(gdb) 
651                 Insstart_orig = Insstart;
(gdb) 
653             if (stop_insert_mode
(gdb) 
665             if (!arrow_used)
(gdb) 
666                 curwin->w_set_curswant = TRUE;
(gdb) 
670             if (stuff_empty())
(gdb) 
672                 did_check_timestamps = FALSE;
(gdb) 
673                 if (need_check_timestamps)
(gdb) 
680             msg_scroll = FALSE;
(gdb) 
692             if (fdo_flags & FDO_INSERT)
(gdb) 
695             if (!char_avail())
(gdb) 
700             if (bt_prompt(curbuf))
(gdb) 
716             if (curbuf->b_mod_set
(gdb) 
725                 mincol = curwin->w_wcol;
(gdb) 
726                 validate_cursor_col();
(gdb) 
728                 if (
(gdb) 
759             update_topline();
(gdb) 
763             validate_cursor();              /* may set must_redraw */
(gdb) 
769             ins_redraw(TRUE);
(gdb) 
771             if (curwin->w_p_scb)
(gdb) 
774             if (curwin->w_p_crb)
(gdb) 
776             update_curswant();
(gdb) 
777             old_topline = curwin->w_topline;
(gdb) 
793             if (dont_sync_undo == MAYBE)
(gdb) 
797             if (cmdchar == K_PS)
(gdb) 
803                     c = safe_vgetc();
(gdb) 
805                     if (stop_insert_mode)
(gdb) 
815             did_cursorhold = TRUE;
(gdb) 
818             if (p_hkmap && KeyTyped)
(gdb) 
822             if (p_fkmap && KeyTyped)
(gdb) 
832             if (compl_started
(gdb) 
894             compl_get_longest = FALSE;
(gdb) 
895             if (ins_compl_prep(c))
(gdb) 
902             if (c == Ctrl_BSL)
(gdb) 
933             c = do_digraph(c);
(gdb) 
937             if ((c == Ctrl_V || c == Ctrl_Q) && ctrl_x_mode == 
CTRL_X_CMDLINE)
(gdb) 
948             if (cindent_on()
(gdb) 
968             if (curwin->w_p_rl)
(gdb) 
985             if (ins_start_select(c))
(gdb) 
991             switch (c)
(gdb) 
994                 if (echeck_abbr(ESC + ABBR_OFF))
(gdb) 
1028                if (goto_im())
(gdb) 
1030                    if (got_int)
(gdb) 
1036                        vim_beep(BO_IM);
(gdb) 
1607            if (c != K_CURSORHOLD
(gdb) 
1613                did_cursorhold = FALSE;
(gdb) 
1616            if (arrow_used)
(gdb) 
1620            if (can_cindent && cindent_on()
(gdb) 
642             if (!revins_legal)

Hope that's enough to figure out how to fix this.

Cheers,
-- 
James
GPG Key: 4096R/91BF BF4D 6956 BD5D F7B7  2D23 DFE6 91AE 331B A3DB

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