You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Maybe I'm not understanding the concept of Job or shutdown, but I expect the started process to finish when I shutdown the job with the shutdown function (or at least send the signal given as parameter), but it's not doing either for some processes.
I have set up a simple configuration to reproduce this issue
Create the following file, config.lua
--- use your own way to load pluginsvim.fn['plug#begin']('~/.vim/plugged')
vim.fn["plug#"]('nvim-lua/plenary.nvim')
vim.fn['plug#end']()
--- @typeJoblocalJob=require("plenary.job")
MyJob=Job:new({
command="mycommand.sh",
on_exit=vim.schedule_wrap(function(self, code, signal)
print(string.format("PID: %d | code: %d | signal: %d", self.pid, code, signal))
end),
})
MyJob:start()
Start neovim with neovim -u config.lua
Get the process PID with :lua print(MyJob.pid)
Watch the process system calls with sudo strace -p <pid> where is the pid obtained in the previous step.
Shutdown the process in neovim with :lua MyJob:shutdown(0, 3). I expect the process to receive a SIGQUIT(3) signal but nothing appears in the strace output. It doesn't matter if you run shutdown without arguments or with another signals, still no output in strace. However, shutdown executes on_exit correctly and prints the following PID: <pid> | code: 0 | signal: 3.
To verify that strace should output something when it receives a signal, run kill -n 3 <pid>
Alternatively, you could also use :lua vim.loop.kill(MyJob.pid, 3)
Am I doing something wrong? What should I use in order to stop the process instead?
Just for some context, this is where I'm trying to use it, right now using vim.loop.kill as a workaround (in that code I'm killing a process started by the job instead), but I'm expecting the following to work
functionM.stop()
ifjobthenjob:shutdown() -- or maybe use a signal to terminate the processend
I'm getting the following behaviour instead: (almost a copy of this comment in a PR for flutter-tools.nvim
Execute a command to start the job: (The first one is the job, second one the child process)
Both processes are in the process tree, bash and dart (the parent of zsh is my terminal)
Executing the stop lua function inside neovim executes the on_exit function, but the processes are still there (both of them actually, same tree)
After exiting the processes, instead of terminating, are detached and moved to the root (systemd):
The text was updated successfully, but these errors were encountered:
Charly6596
changed the title
Plenary.Job:shutdown not terminating process
Plenary.job:shutdown(code, signal) not terminating process
May 12, 2021
Maybe I'm not understanding the concept of
Job
orshutdown
, but I expect the started process to finish when I shutdown the job with theshutdown
function (or at least send the signal given as parameter), but it's not doing either for some processes.I have set up a simple configuration to reproduce this issue
config.lua
neovim -u config.lua
:lua print(MyJob.pid)
sudo strace -p <pid>
where is the pid obtained in the previous step.:lua MyJob:shutdown(0, 3)
. I expect the process to receive a SIGQUIT(3) signal but nothing appears in thestrace
output. It doesn't matter if you runshutdown
without arguments or with another signals, still no output instrace
. However,shutdown
executeson_exit
correctly and prints the followingPID: <pid> | code: 0 | signal: 3
.strace
should output something when it receives a signal, runkill -n 3 <pid>
Alternatively, you could also use
:lua vim.loop.kill(MyJob.pid, 3)
Am I doing something wrong? What should I use in order to stop the process instead?
Just for some context, this is where I'm trying to use it, right now using
vim.loop.kill
as a workaround (in that code I'm killing a process started by the job instead), but I'm expecting the following to workI'm getting the following behaviour instead: (almost a copy of this comment in a PR for flutter-tools.nvim
Execute a command to start the job: (The first one is the job, second one the child process)
Both processes are in the process tree,
bash
anddart
(the parent ofzsh
is my terminal)Executing the stop lua function inside neovim executes the
on_exit
function, but the processes are still there (both of them actually, same tree)After exiting the processes, instead of terminating, are detached and moved to the root (
systemd
):The text was updated successfully, but these errors were encountered: