Bram Moolenaar <[email protected]> wrote:
> Shougo wrote:
>
> > After 7.4.1826, GVim freezes if use channel/job feature.
> > I have detected it using "git bisect" command.
> > It cannot reproduce on console Vim.
> > I can reproduce it in Vim 7.4.1848.
> >
> > I think it is the same issue with it.
> > https://groups.google.com/d/msg/vim_dev/LlSrz0w8xzk/tQ4ph8OnHwAJ
>
> Is there a simple way to reproduce this?
I can reproduce it when running tests after changing the
vim/src/testdir/Makefile so that all tests run gvim as follows:
diff --git a/src/testdir/Makefile b/src/testdir/Makefile
index 49a817a..6198ccd 100644
--- a/src/testdir/Makefile
+++ b/src/testdir/Makefile
@@ -52,7 +52,7 @@ $(SCRIPTS) $(SCRIPTS_GUI) $(NEW_TESTS): $(SCRIPTS_FIRST)
RM_ON_RUN = test.out X* viminfo
RM_ON_START = tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim
test.ok benchmark.out
-RUN_VIM = VIMRUNTIME=$(SCRIPTSOURCE); export VIMRUNTIME; $(VALGRIND)
$(VIMPROG) -f -u unix.vim $(NO_PLUGIN) -s dotest.in
+RUN_VIM = VIMRUNTIME=$(SCRIPTSOURCE); export VIMRUNTIME; $(VALGRIND)
$(VIMPROG) -f -g -u unix.vim $(NO_PLUGIN) -s dotest.in
clean:
-rm -rf *.out *.failed *.res *.rej *.orig test.log messages
$(RM_ON_RUN) $(RM_ON_START) valgrind.*
@@ -118,7 +118,7 @@ nolog:
# New style of tests uses Vim script with assert calls. These are easier
# to write and a lot easier to read and debug.
# Limitation: Only works with the +eval feature.
-RUN_VIMTEST = VIMRUNTIME=$(SCRIPTSOURCE); export VIMRUNTIME;
$(VALGRIND) $(VIMPROG) -f -u unix.vim $(NO_PLUGIN)
+RUN_VIMTEST = VIMRUNTIME=$(SCRIPTSOURCE); export VIMRUNTIME;
$(VALGRIND) $(VIMPROG) -f -g -u unix.vim $(NO_PLUGIN)
newtests: newtestssilent
@/bin/sh -c "if test -f messages && grep -q 'FAILED' messages;
then cat messages && cat test.log; fi"
The this hangs and shows:
"test_channel.vim" 1311 lines, 36597 characters
Executing Test_call()
Executing Test_channel_handler()
I tried vim-7.4.1748 and vim-7.4.1449 (gtk2) and both hang.
> I sent out 7.4.1849, but I don't know if this fixes the problem.
It does not fix it.
> Another thing, since this apparently only fails in the GUI,
> would be to call channel_gui_unregister() right away, when setting
> ch_to_be_closed. Perhaps you can try this patch:
>
> *** ../vim-7.4.1849/src/channel.c 2016-05-27 19:59:43.823519882 +0200
> --- src/channel.c 2016-05-27 21:34:17.451441836 +0200
> ***************
> *** 2868,2873 ****
> --- 2868,2878 ----
> * died. Don't close the channel right away, it may be the wrong moment
> * to invoke callbacks. */
> channel->ch_to_be_closed = TRUE;
> +
> + /* Stop listening to GUI events right away. */
> + #ifdef FEAT_GUI
> + channel_gui_unregister(channel);
> + #endif
> }
>
> static void
With that patch, the test no longer hang.
However, when I run all tests, I see this (using
modified src/testdir/Makefile to run all tests with gvim):
=== BEGIN QUOTE ===
>From test_alot.vim:
Found errors in Test_missing_attr():
Caught exception in Test_missing_attr(): Vim(highlight):E416: missing
equal sign: 10 @ function RunTheTest[9]..Test_missing_attr, line 27
TEST FAILURE
make: *** [report] Error 1
=== END QUOTE ===
If I run tests in the terminal (canceling my change to
src/testdir/Makefile) then all test pass.
Regards
Dominique
--
--
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.