From 3e1b4fe39d513fe750b82fb57c36af585a6b75a5 Mon Sep 17 00:00:00 2001 From: Daniel Hiltgen Date: Wed, 3 Jun 2026 10:25:12 -0700 Subject: [PATCH] Kill llama-server during Windows cleanup (#16458) Windows installer and app cleanup could leave llama-server.exe running when ollama.exe was killed directly, so cleanup now includes llama-server.exe and taskkill /T. --- app/ollama.iss | 7 ++++++- app/server/server_windows.go | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/ollama.iss b/app/ollama.iss index 6c8aca01..db529d97 100644 --- a/app/ollama.iss +++ b/app/ollama.iss @@ -14,6 +14,7 @@ #define MyAppPublisher "Ollama" #define MyAppURL "https://ollama.com/" #define MyAppExeName "ollama app.exe" +#define LlamaServerExeName "llama-server.exe" #define MyIcon ".\assets\app.ico" [Setup] @@ -126,6 +127,7 @@ Filename: "{cmd}"; Parameters: "/C set PATH={app};%PATH% & ""{app}\{#MyAppExeNam ; Filename: "{cmd}"; Parameters: "/C ""taskkill /im ollama.exe /f /t"; Flags: runhidden Filename: "taskkill"; Parameters: "/im ""{#MyAppExeName}"" /f /t"; Flags: runhidden Filename: "taskkill"; Parameters: "/im ""ollama.exe"" /f /t"; Flags: runhidden +Filename: "taskkill"; Parameters: "/im ""{#LlamaServerExeName}"" /f /t"; Flags: runhidden ; HACK! need to give the server and app enough time to exit ; TODO - convert this to a Pascal code script so it waits until they're no longer running, then completes Filename: "{cmd}"; Parameters: "/c timeout 5"; Flags: runhidden @@ -325,5 +327,8 @@ procedure TaskKill(FileName: String); var ResultCode: Integer; begin - Exec('taskkill.exe', '/f /im ' + '"' + FileName + '"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode); + Exec('taskkill.exe', '/f /t /im ' + '"' + FileName + '"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode); + if FileName <> '{#LlamaServerExeName}' then begin + Exec('taskkill.exe', '/f /t /im "{#LlamaServerExeName}"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode); + end; end; diff --git a/app/server/server_windows.go b/app/server/server_windows.go index 06d7ba62..b6b3b653 100644 --- a/app/server/server_windows.go +++ b/app/server/server_windows.go @@ -164,7 +164,7 @@ func reapServers() error { continue } - cmd := exec.Command("taskkill", "/F", "/PID", pidStr) + cmd := exec.Command("taskkill", "/F", "/T", "/PID", pidStr) if err := cmd.Run(); err != nil { slog.Warn("failed to kill ollama process", "pid", pid, "err", err) }