Closed grauho closed 3 months ago
I have also encountered this issue. When using it on Windows 11, I encountered a "Segmentation fault". My fix:
$ git diff
diff --git a/stable-diffusion.cpp b/stable-diffusion.cpp
index 4d622dd..1fa115e 100644
--- a/stable-diffusion.cpp
+++ b/stable-diffusion.cpp
@@ -123,9 +123,13 @@ public:
~StableDiffusionGGML() {
ggml_backend_free(backend);
- ggml_backend_free(clip_backend);
+ if (clip_backend != backend) {
+ ggml_backend_free(clip_backend);
+ }
ggml_backend_free(control_net_backend);
- ggml_backend_free(vae_backend);
+ if (vae_backend != backend) {
+ ggml_backend_free(vae_backend);
+ }
}
Great! Thank you for fixing this problem.
Fixed a double free issue when running multiple backends on the CPU, eg: CLIP and the primary backend, as this would result in the *_backend pointers both pointing to the same thing resulting in a segfault when calling the StableDiffusionGGML destructor.