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
{{ message }}
Repository navigation
vp run forwards no signal to its task, so stopping vp alone orphans the task #3090
vp run <script> forwards no signal to the task it runs. A SIGINT or SIGTERM sent to the vp process alone ends vp, and the script's process keeps running, reparented to init or the user manager. A Ctrl-C in a terminal works only because the terminal sends it to the whole process group. Tools that stop a job by signalling the process they started leave the task running. That includes kill <pid> from a script, a supervisor, or an editor or agent harness that started vp run dev as a background command.
Tested on vite-plus 1.2.0 (global vp and the local CLI), on Linux:
Signal sent to
Result
global vp, SIGINT or SIGTERM
vp exits; the task keeps running
local CLI, SIGTERM
the CLI exits; the task is orphaned
local CLI, SIGINT
ignored
the whole process group
everything exits
This looks deliberate. vite-task at 9ba4cc93, crates/vt/src/session/mod.rs:382-388, says "Child tasks receive the signal directly from the terminal driver". The docs don't mention it, though.
Suggested solution
Forward SIGINT, SIGTERM and SIGHUP from vp to each running task, then wait for the tasks to exit. This is what npm run does (@npmcli/run-scriptlib/signal-manager.js), and what Turborepo (turborepo-signals) and concurrently (kill-on-signal.ts) do.
The global vp would also need to pass the signal on to the local CLI it starts.
Alternative
Document that vp run must be stopped by signalling its process group, so that harnesses and scripts can do that.
Additional context
We hit this with a long-running dev script that supervises several servers. Stopping vp alone left all of them running and holding their ports. We now tell agents to signal the script's own process instead.
Validations
Read the Contributing Guidelines.
Confirm this request is for Vite+ itself and not for Vite, Vitest, tsdown, Rolldown, or Oxc.
Check that there isn't already an issue requesting the same feature. I searched vite-plus and vite-task for signal, SIGINT, SIGTERM, kill, orphan and process group.
Activity
fix(session): forward termination signals to running tasks
fix(cli): forward termination signals to the delegated command
fix(session): forward termination signals to running tasks
fix(cli): forward termination signals to the delegated command
fix(session): forward termination signals to running tasks
fix(session): forward termination signals to running tasks