I'm in the middle of a complete refresh of my Zsh config; and after trying ZSH_AUTOSUGGEST_USE_ASYNC=true, my terminal looks like … this:

i.e. every command results in additional erroneous output along these lines:
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
(This appears to not occur when ZSH_AUTOSUGGEST_USE_ASYNC is disabled, but I suppose that's to be expected. 😅)
I'm having trouble reproducing this. What version of zsh are you using?
Can you reproduce with no extra configuration?
% zsh -f
%% ZSH_AUTOSUGGEST_USE_ASYNC=true; source zsh-autosuggestions.zsh
Also, if you have the time to write a failing spec it would be greatly appreciated.
Thanks
Hmmm! I cannot reproduce as demonstrated / without config …
Unfortunately, I've completed aforementioned complete refresh, and I also cannot reproduce with my current config. The bug was persistent at the time, so I suspect it's still lurking — but I suppose I'll have to close this, unless someone comes across later who's experiencing it in realtime!
I'm also seeing this when used with find:
🤔 ~/c/dotfiles (5d0c056)|master⚡
± [i]: find .
.
./.agignore
./.alacritty.yml
./.aliases
./.config
./.config/nvim
./.config/nvim/init.vim
./.config/pep8
./.config/pgcli
./.config/pgcli/pglcli
./.docker-aliases
./.docker-functions
./.functions
./.git
./.git/COMMIT_EDITMSG
./.git/config
./.git/description
./.git/FETCH_HEAD
./.git/HEAD
./.git/hooks
./.git/hooks/applypatch-msg.sample
./.git/hooks/commit-msg.sample
./.git/hooks/post-update.sample
./.git/hooks/pre-applypatch.sample
./.git/hooks/pre-commit.sample
./.git/hooks/pre-push.sample
./.git/hooks/pre-rebase.sample
./.git/hooks/pre-receive.sample
./.git/hooks/prepare-commit-msg.sample
./.git/hooks/update.sample
./.git/index
./.git/info
./.git/info/exclude
./.git/logs
./.git/logs/HEAD
./.git/logs/refs
./.git/logs/refs/heads
./.git/logs/refs/heads/master
./.git/logs/refs/remotes
./.git/logs/refs/remotes/origin
./.git/logs/refs/remotes/origin/HEAD
./.git/logs/refs/remotes/origin/master
./.git/objects
./.git/objects/06
./.git/objects/06/23d681abd163f955700572d8d7666a3c7ab6a6
./.git/objects/09
./.git/objects/09/abc26786f4ebca188946a3e7d9743ca0fa42ce
./.git/objects/0a
./.git/objects/0a/d9dfe5fed37ece12d9a417ff339117c1965021
./.git/objects/0b
./.git/objects/0b/715532b2fdd7cb11d494c733c714492a014e6e
./.git/objects/1d
./.git/objects/1d/8fc5b26e7a7e7ccb4aed08da983fe887662b3b
./.git/objects/1e
./.git/objects/1e/d158a250c7d8c5b19d4f84931e98cc6d3f3d93
./.git/objects/1f
./.git/objects/1f/cc16b5098ddd841b9693b9a4dc603e5b251e41
./.git/objects/22
./.git/objects/22/d80a2a72a443725fd629c136e7eb13a055258d
./.git/objects/25
./.git/objects/25/087fa510866d702f67c24a52e1de4dcbb36de8
./.git/objects/25/9bd8434e50128baeae04863eed2b23ae70e840
./.git/objects/26
./.git/objects/26/c07b7b432bebdaf07d9bfb6a72af74fd769b4d
./.git/objects/27
./.git/objects/27/25f37488662ebe61f0248ab8d2875eeb687a9c
./.git/objects/27/e6fe9c41cc80d5884d477a1998a22f7becf5fe
./.git/objects/28
./.git/objects/28/5b17831ce229f1ed58bfc6841fb7b90fb1fa9f
./.git/objects/29
./.git/objects/29/a43b04b68e9f96af9822730a672f79f36526de
./.git/objects/29/c484bcb5970de445db787bbfaef904336c1af7
./.git/objects/2c
./.git/objects/2c/d2d909a16650bd07616cf4d682eb7678e6572c
./.git/objects/32
./.git/objects/32/9577c927072d70cbbba99e553c93aee8d57d13
./.git/objects/33
./.git/objects/33/91255efe0a2b8295803552b4f37b0ced94adc0
./.git/objects/34
./.git/objects/34/3a152cab8cb86416a985b5152cebfd90fa67cd
./.git/objects/35
./.git/objects/35/b839e09b80d9cbfd66762f92e3c138a6234bf0
./.git/objects/3a
./.git/objects/3a/d1be43d0a01abafbc058786114cf6c9521bcf4
./.git/objects/3f
./.git/objects/3f/6a97a5b9bc428b83f9f1696ab2cea1e8b99292
./.git/objects/3f/8277bd953fb4884fe4a3589ef5463a2ad61165
./.git/objects/40
./.git/objects/40/1f8c19ab063bf79f6bc4b3e1fbcaad47467806
./.git/objects/45
./.git/objects/45/04e32ddfc4d6e581773780a36792d5867c587b
./.git/objects/49
./.git/objects/49/62710636d8553c788eb2354530088bf3cb261a
./.git/objects/4d
./.git/objects/4d/0a4b06ceee6bef31df2763460059a616b13695
./.git/objects/50
./.git/objects/50/7db2440bdf118c532967a72e72292350a9ab02
./.git/objects/51
./.git/objects/51/0684b0616ca2268c0db5a25332bc3989a6f637
./.git/objects/51/7993372d2c52bb0d2b70b416dc3be2dcd9b70e
./.git/objects/51/996c6157b9d744edbcfaa609114e4b284c0ba5
./.git/objects/57
./.git/objects/57/8aa66874d32020f4db817881de31c547013e31
./.git/objects/57/e12c90590bea2b2c590d2dfe0ae82dae597249
./.git/objects/5b
./.git/objects/5b/96ce46b911d0527a951774808524fd59f676ef
./.git/objects/5b/f5c3ef1426bd570bd78f832c8ca7a5c2079064
./.git/objects/5d
./.git/objects/5d/0c056bc93d0a93c23d00140b73d970e14cf7b7
./.git/objects/60
./.git/objects/60/90c1bad6937c231437235f0d24e8d3af57db60
./.git/objects/61
./.git/objects/61/8c0582f65c09f02c1ff83c490808c0fbb81dd7
./.git/objects/64
./.git/objects/64/390dd4dd3e405e441a70cd5593f044cbecee95
./.git/objects/67
./.git/objects/67/903e48a3fd37dbfae3ecc581ac1bacf48602c7
./.git/objects/69
./.git/objects/69/0d75c8479e0abd09c7f435c255923dcc704ede
./.git/objects/6d
./.git/objects/6d/fc6a74b216206a104ded5ab3742a64132111a0
./.git/objects/6f
./.git/objects/6f/61de70fced7118558d3b158bec60937d215579
./.git/objects/70
./.git/objects/70/14e45ea5e2d1643bdd296457f084bd99fa0e35
./.git/objects/70/43d9437e9558928026976f844c987ae053c082
./.git/objects/75
./.git/objects/75/2c5c43fbf897251645ab8b52d0c86940c835e2
./.git/objects/76
./.git/objects/76/ca24a2480c50cc4f7c6df591c54ebfbc14bc00
./.git/objects/78
./.git/objects/78/192233a5792f22e1e6ff56c01701ec1393a986
./.git/objects/79
./.git/objects/79/18623d086175871dba2c64fd1ceffcdb30ab05
./.git/objects/79/87d315997baa09f6849654c6968cfab1a605d0
./.git/objects/7b
./.git/objects/7b/da2bc7e69d87138d17dfe0ae33459095d627f8
./.git/objects/7c
./.git/objects/7c/00707ea89617f35c2fffce36c55f337c20fbe4
./.git/objects/81
./.git/objects/81/84d92e7707f27c38ea01ee7f646ece4b482bcd
./.git/objects/84
./.git/objects/84/c42e2596a7b792b735858b622cf853a1418264
./.git/objects/88
./.git/objects/88/66adf4eac9c7f2902b1aebec7ef0a31b2aa5a0
./.git/objects/8d
./.git/objects/8d/c31491acfd356e8f022ab809578a981e85c692
./.git/objects/8f
./.git/objects/8f/0d270e9b63e7eb41f41e201ce2217b26059928
./.git/objects/93
./.git/objects/93/3048743f329ed89db634d634c0ae095f5fa2a3
./.git/objects/94
./.git/objects/94/a20e3fec2d1f7c3c96bb045cae4d3be3918472
./.git/objects/95
./.git/objects/95/117432539b382fe40f01061afc982f989f32eb
./.git/objects/96
./.git/objects/96/d42eaab679dcf06390885d950330b819569f29
./.git/objects/97
./.git/objects/97/f690f01141014520ebc9606922112952373f49
./.git/objects/9e
./.git/objects/9e/e57b517fd06359ac7bb5052ba3159ea3cf1862
./.git/objects/9f
./.git/objects/9f/caee63fe7dfaf2da264f3ec63797c4dea7dfe0
./.git/objects/a0
./.git/objects/a0/5bb8a2faaa66bf5ac271c148bc34e5760a39e5
./.git/objects/a5
./.git/objects/a5/581abf8bbb7816343ac17c8a8142b0a5fcae77
./.git/objects/a5/708d26cba5d8b78667f83ff518582e6f723159
./.git/objects/a5/894a99ab26eec6c8973ad5a752098d09ade609
./.git/objects/b0
./.git/objects/b0/7180eb582dee9c294ca67428ba09a215cf8b6e
./.git/objects/b3
./.git/objects/b3/aeec16771df50c3535d09d351a16129a7c2c44
./.git/objects/b4
./.git/objects/b4/d0cdb69ec0334def28f8032decacebc0367214
./.git/objects/b9
./.git/objects/b9/d0c5ee63aacc854c82e69caed1ed6eedcfd935
./.git/objects/b9/ebcb036b18b807c4a26aa5f5687f91c0cd1a94
./.git/objects/ba
./.git/objects/ba/700d50a070a315672f622662ed910f7cd8bec1
./.git/objects/bb
./.git/objects/bb/e26b604403f829f3f861ae38be974a9729697b
./.git/objects/c2
./.git/objects/c2/54a2446aac1b20e7d0d70585d507dee4d5381c
./.git/objects/c2/8f6cb3f49a17e158a7eddad0ccb005477ec020
./.git/objects/c4
./.git/objects/c4/32fc6581a13a70a5b6d23c53fb5eed43f8e11a
./.git/objects/c7
./.git/objects/c7/2fe63cccad79a4cde272c765944700c01e8d83
./.git/objects/c8
./.git/objects/c8/c629a4f54e0734a8c6530c04b05c151389e56b
./.git/objects/cb
./.git/objects/cb/851733a398caeb353ca4a24465439497dd55e4
./.git/objects/d1
./.git/objects/d1/78bf23154e8d2a9853a4a28ccd45aa59a53361
./.git/objects/d3
./.git/objects/d3/de0a2af35f70ef2569621eb7fbb58f5a3c9cbf
./.git/objects/d4
./.git/objects/d4/1de7df0fac8f2905b7b066ceea979fbbdd0539
./.git/objects/d4/41fda52148804da5b43baaa13d364aaa0f791d
./.git/objects/d4/8f0134f629f6ad2da22ae5e1de96e70930ef9c
./.git/objects/d7
./.git/objects/d7/e0d1f30c238b9dd9e890140d2f4b2024c68e00
./.git/objects/da
./.git/objects/da/8cde0a0c4035d771eba099c36092fbdb94e4a2
./.git/objects/dd
./.git/objects/dd/a17fe7c8b9da154b858ef773753911fa59b003
./.git/objects/de
./.git/objects/de/dba1677819bd4205d53bfb7ff0f67d3a75d57e
./.git/objects/de/ff954134056c893e90ab98cc4fde4f248035e5
./.git/objects/df
./.git/objects/df/8be7cb2b424b6879695d6e9fdd3763f7bc56e7
./.git/objects/e6
./.git/objects/e6/601f75335476edf4120dd3643b6b470a7a0e3f
./.git/objects/e6/86f5e8cc1083c725bf6be81eb9cfe36c6129d2
./.git/objects/e8
./.git/objects/e8/d068e280559c45cf57613757ef757ba47f2d69
./.git/objects/e9
./.git/objects/e9/b9c46edf021994625b845efa1fac7ac5527069
./.git/objects/ea
./.git/objects/ea/404276746a04bd6479679577c9ef53127f78c2
./.git/objects/ea/7afcca8202c54b92f8d539b8553e97b469eb15
./.git/objects/eb
./.git/objects/eb/7ee26d562f7144083d08b6f8b410f7f09ae51f
./.git/objects/ec
./.git/objects/ec/84372b191855abf32d8a15b609384c7f2e6178
./.git/objects/ec/896423e46586ca3cb11de708e98ba5bb82bc38
./.git/objects/f3
./.git/objects/f3/71025b76b97adc67b7d6109ebd0e2411d7c515
./.git/objects/f3/c62dc6a54c9b45b42b226d92b5520264bc8188
./.git/objects/f5
./.git/objects/f5/fb116f33a30cf6d28271adb1e50c011bdb5a96
./.git/objects/f6
./.git/objects/f6/d1576ce6166687056bff7586c8fa4dd99e2150
./.git/objects/f8
./.git/objects/f8/0dfa711ceb34e2a58c68565314b48e5cf171b7
./.git/objects/f8/c9c89d94d68c2b96ac0144cfe0435fe5b69b24
./.git/objects/fa
./.git/objects/fa/50a408df63065b36b1b0c1057960a791267b25
./.git/objects/fa/7f30571453b6944244c45a1b14d304df7c6ac1
./.git/objects/fd
./.git/objects/fd/7e12a7c3ce077349b5f5ace0defa75d042936e
./.git/objects/fe
./.git/objects/fe/41f0fea0a46e3a2438d2ca5e229dca6e552e34
./.git/objects/fe/b60f54e7861e9f509c4525baded7cd385e9cc8
./.git/objects/info
./.git/objects/pack
./.git/objects/pack/pack-751d41b2501023148ed57414a217b0cf05d5267b.idx
./.git/objects/pack/pack-751d41b2501023148ed57414a217b0cf05d5267b.pack
./.git/ORIG_HEAD
./.git/packed-refs
./.git/refs
./.git/refs/heads
./.git/refs/heads/master
./.git/refs/remotes
./.git/refs/remotes/origin
./.git/refs/remotes/origin/HEAD
./.git/refs/remotes/origin/master
./.git/refs/tags
./.git-aliases
./.git-functions
./.git-prompt
./.gitconfig
./.oh-my-zsh
./.oh-my-zsh/plugins
./.oh-my-zsh/plugins/vi-mode
./.oh-my-zsh/plugins/vi-mode/vi-mode.plugin.zsh
./.oh-my-zsh/themes
./.oh-my-zsh/themes/smt.zsh-theme
./.profile
./.tmux-aliases
./.tmux-functions
./.tmux-gruvbox-dark.tmux
./.tmux-gruvbox-light.tmux
./.tmux.conf
./.vim
./.vim/ftplugin
./.vim/ftplugin/python.vim
./.vimrc
./.zprofile
./.zshenv
./.zshrc
./apply
./dev-private
./README.md
./save
./terminfo
./terminfo/tmux-256color.terminfo
./terminfo/tmux.terminfo
./terminfo/xterm-256color-italic.terminfo
./usr
./usr/local
./usr/local/bin
./usr/local/bin/b
./usr/local/bin/ftwind
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
Please reopen; I can reproduce this with zsh-autosuggestions c7d4a85031c101ef9bce0018096622087894dd09 + zsh 5.3.1-4+b1 on Debian 9 (stretch) by holding down ctrl-c for ~10 seconds, on one particular server to which I have a slow (200ms) connection.
My zsh-autosuggestions settings are
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE=fg=6
ZSH_AUTOSUGGEST_STRATEGY=match_prev_cmd
ZSH_AUTOSUGGEST_USE_ASYNC=1
and the rest of the zshrc is here.
at@paris2:/root#
at@paris2:/root#
at@paris2:/root#
at@paris2:/root#
at@paris2:/root#
at@paris2:/root#
at@paris2:/root#
at@paris2:/root#
at@paris2:/root#
at@paris2:/root#
at@paris2:/root#
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
at@paris2:/root#
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
at@paris2:/root#
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
at@paris2:/root#
at@paris2:/root#
at@paris2:/root#
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
at@paris2:/root#
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
at@paris2:/root#
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
at@paris2:/root#
at@paris2:/root#
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
at@paris2:/root
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
at@paris2:/root#
at@paris2:/root#
at@paris2:/root#
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
at@paris2:/root#
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
at@paris2:/root#
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
at@paris2:/root#
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
at@paris2:/root#
at@paris2:/root#
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
at@paris2:/root#
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
at@paris2:/root#
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
at@paris2:/root# dpkg -l | grep zsh
ii zsh 5.3.1-4+b1 amd64 shell with lots of features
ii zsh-common 5.3.1-4 all architecture independent files for Zsh
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
at@paris2:/root# uname -a
Linux paris2 4.14.0-9-amd64 #1 SMP Debian 4.14.3-2 (2017-11-30) x86_64 GNU/Linux
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
I have this happening in an open terminal — I cannot generally reproduce, but it returns to show up in one terminal session once in a blue moon. Definitely needs to stay open!
I get this too sometimes, but when/why is unknown.
I'm getting it after I execute:
a=$(exit 1)
Then all next commands will show this output:
_zsh_autosuggest_async_pty_create:zpty:12: pty command name already used: zsh_autosuggest_pty
_zsh_autosuggest_async_pty_create:zle:22: Bad file descriptor number for -F: _zsh_autosuggest_async_response
Looks like even just $(exit) will get us into this state reliably... Nice find @kriansa
As a workaround for now, it looks like you can run zpty -d $ZSH_AUTOSUGGEST_ASYNC_PTY_NAME to fix things when you get into this state.
Looks like there's some kind of underlying bug in the zpty module here that causes all pty's to exit when a subshell exits...
This was with zsh 5.4.2 with no additional config loaded:
% zmodload zsh/zpty
% zpty -b foo cat
% zpty -b bar cat
% zpty
(31689) bar: cat
(31666) foo: cat
% $(exit)
% zpty
(finished) bar: cat
(finished) foo: cat
Edit to add a little more detail on the upstream bug:
Each zpty registers an exit hook that is called here. My guess is these hooks are called whenever exit is run, regardless of whether it's run in a subshell or the parent shell.
Ok, this has been fixed on develop with df5fb85 and will go out with the next release.
The upstream issue remains, but it looks like we can fix this issue without fixing upstream.