From 60abea9798f47b918a9f38c66edfd88c526d20f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Yusuf=20Sar=C4=B1g=C3=B6z?= Date: Thu, 19 Oct 2023 16:59:11 +0300 Subject: [PATCH] llava : avoid segfault in case of non-existent mmproj file (#3674) --- examples/llava/clip.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/llava/clip.cpp b/examples/llava/clip.cpp index f4258b34d..1ae9077b4 100644 --- a/examples/llava/clip.cpp +++ b/examples/llava/clip.cpp @@ -112,8 +112,7 @@ static float get_f32(const gguf_context * ctx, const std::string & key) { static struct ggml_tensor * get_tensor(struct ggml_context * ctx, const std::string & name) { struct ggml_tensor * cur = ggml_get_tensor(ctx, name.c_str()); if (!cur) { - printf("unable to find tensor %s\n", name.c_str()); - throw std::runtime_error(format("unable to find tensor %s\n", name.c_str())); + throw std::runtime_error(format("%s: unable to find tensor %s\n", __func__, name.c_str())); } return cur; @@ -136,7 +135,7 @@ static std::string get_ftype(int ftype) { case 8: return "q8_0"; default: - throw std::runtime_error(format("Unrecognized file type: %d\n", ftype)); + throw std::runtime_error(format("%s: Unrecognized file type: %d\n", __func__, ftype)); } } @@ -462,6 +461,9 @@ struct clip_ctx * clip_model_load(const char * fname, const int verbosity = 1) { }; struct gguf_context * ctx = gguf_init_from_file(fname, params); + if (!ctx) { + throw std::runtime_error(format("%s: failed to load CLIP model from %s. Does this file exist?\n", __func__, fname)); + } if (verbosity >= 1) { const int n_tensors = gguf_get_n_tensors(ctx);