aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/main.c
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2016-09-24 15:32:01 +0200
committerGitHub <noreply@github.com>2016-09-24 15:32:01 +0200
commit68bcb32ec43e2fab30dc05439fc77cf28793922c (patch)
treef68bed72e375850456b28af6dce386a6320726ba /src/nvim/main.c
parente65895941ca262e1ca708b19ea18d72a77761279 (diff)
downloadrneovim-68bcb32ec43e2fab30dc05439fc77cf28793922c.tar.gz
rneovim-68bcb32ec43e2fab30dc05439fc77cf28793922c.tar.bz2
rneovim-68bcb32ec43e2fab30dc05439fc77cf28793922c.zip
tui.c: Do not wait for tui loop on teardown. (#4789)
Because terminfo_stop() already ran, there is not much reason to wait for the loop to teardown. Helped-by: Björn Linse <bjorn.linse@gmail.com> Helped-by: oni-link <knil.ino@gmail.com> Closes #4778 References #3541 --- Bug report: > After pressing `ZZ` I can find two threads freezing, occupying 100% CPU: |-systemd-+ |-nvim,11567 /home/lz/code/1.rs +set title | `-{nvim},11574 > 11567 has two threads: (gdb) info threads Id Target Id Frame * 1 Thread 0x7f7622907780 (LWP 11567) "nvim" 0x00007f76222e66bd in pthread_join () from /usr/lib/libpthread.so.0 2 Thread 0x7f761f5ff700 (LWP 11574) "nvim" 0x00007ffcec9e9c59 in clock_gettime () (gdb) thread apply all bt Thread 2 (Thread 0x7f761f5ff700 (LWP 11574)): #0 0x00007ffcec9e9c59 in clock_gettime () #1 0x00007f76210b9356 in clock_gettime () from /usr/lib/libc.so.6 #2 0x00007f7622513e3c in ?? () from /usr/lib/libuv.so.1 #3 0x00007f7622505e94 in uv_run () from /usr/lib/libuv.so.1 #4 0x00000000004822ed in loop_close (loop=loop@entry=0x7f761f5fe870) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/event/loop.c:87 #5 0x00000000005a7ec0 in tui_main (bridge=0x7f761f6ac000, ui=0x7f761f69ace0) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/tui/tui.c:234 #6 0x00000000005a9b47 in ui_thread_run (data=<optimized out>) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/ui_bridge.c:87 #7 0x00007f7622510d07 in ?? () from /usr/lib/libuv.so.1 #8 0x00007f76222e5474 in start_thread () from /usr/lib/libpthread.so.0 #9 0x00007f76210ac69d in clone () from /usr/lib/libc.so.6 Thread 1 (Thread 0x7f7622907780 (LWP 11567)): #0 0x00007f76222e66bd in pthread_join () from /usr/lib/libpthread.so.0 #1 0x00007f7622510dae in uv_thread_join () from /usr/lib/libuv.so.1 #2 0x00000000005aac9e in ui_bridge_stop (b=0x7f761f6ac000) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/ui_bridge.c:104 #3 0x00000000005a90e4 in ui_builtin_stop () at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/ui.c:91 #4 0x000000000052be09 in mch_exit (r=r@entry=1) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os_unix.c:143 #5 0x00000000004db1cc in getout (exitval=exitval@entry=1) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/main.c:623 #6 0x00000000004fa43c in preserve_exit () at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/misc1.c:2652 #7 0x000000000052b77a in deadly_signal (signum=1) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/signal.c:120 #8 0x000000000052b7cf in on_signal (handle=<optimized out>, signum=<optimized out>, data=<optimized out>) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/signal.c:145 #9 0x0000000000484178 in signal_event (argv=<optimized out>) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/event/signal.c:44 #10 0x0000000000483b7f in queue_process_events (queue=0x7f7620417360) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/event/queue.c:142 #11 0x0000000000482208 in loop_poll_events (loop=0x84dec0 <loop>, ms=ms@entry=4000) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/event/loop.c:56 #12 0x000000000052a364 in input_poll (ms=ms@entry=4000) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/input.c:325 #13 0x000000000052a3e2 in inbuf_poll (ms=4000) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/input.c:347 #14 0x000000000052a839 in os_inchar (buf=buf@entry=0x0, maxlen=maxlen@entry=0, ms=ms@entry=-1, tb_change_cnt=tb_change_cnt@entry=0) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/input.c:107 #15 0x0000000000592eeb in state_enter (s=s@entry=0x7ffcec9d3560) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/state.c:46 #16 0x0000000000508533 in normal_enter (cmdwin=cmdwin@entry=false, noexmode=noexmode@entry=false) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/normal.c:464 #17 0x00000000004dc17e in main (argc=<optimized out>, argv=<optimized out>) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/main.c:538
Diffstat (limited to 'src/nvim/main.c')
-rw-r--r--src/nvim/main.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/nvim/main.c b/src/nvim/main.c
index a153931d8a..86bef782f7 100644
--- a/src/nvim/main.c
+++ b/src/nvim/main.c
@@ -165,7 +165,7 @@ void event_teardown(void)
signal_teardown();
terminal_teardown();
- loop_close(&main_loop);
+ loop_close(&main_loop, true);
}
/// Performs early initialization.