From ebdf7813971255481fb05dd4eb483e4ec1ec8a6f Mon Sep 17 00:00:00 2001 From: Jesse Gross Date: Fri, 16 Aug 2024 14:46:33 -0700 Subject: [PATCH] server: Fix double free on runner subprocess error. If the runner subprocess encounters an error, it will close the HTTP connect, which causes Ollama to free the instance of the model that has open. When Ollama exits, it will again try to free the models for all of the runners that were open, resulting in a double free. --- llm/server.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llm/server.go b/llm/server.go index aa77d6fe..50b2ab60 100644 --- a/llm/server.go +++ b/llm/server.go @@ -978,6 +978,7 @@ func (s *llmServer) Detokenize(ctx context.Context, tokens []int) (string, error func (s *llmServer) Close() error { if s.model != nil { freeModel(s.model) + s.model = nil } if s.cmd != nil { slog.Debug("stopping llama server") @@ -989,6 +990,7 @@ func (s *llmServer) Close() error { slog.Debug("waiting for llama server to exit") <-s.done } + s.cmd = nil slog.Debug("llama server stopped") }