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.
This commit is contained in:
Jesse Gross 2024-08-16 14:46:33 -07:00 committed by jmorganca
parent 23c7c1326e
commit ebdf781397

View File

@ -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")
}