]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
server : hit Ctrl+C twice to exit (#5734)
authorXuan Son Nguyen <redacted>
Wed, 28 Feb 2024 08:55:37 +0000 (09:55 +0100)
committerGitHub <redacted>
Wed, 28 Feb 2024 08:55:37 +0000 (10:55 +0200)
* server: twice ctrl+C to exit

* std::atomic_flag

* sigint: message

* sigint: stderr

* Update examples/server/server.cpp

Co-authored-by: Jared Van Bortel <redacted>
---------

Co-authored-by: Jared Van Bortel <redacted>
examples/server/server.cpp

index 6b3ee531cfb57841f543be7f33253a9409f066fa..080fa9bd5702c307ab94e1637f17035802cbbeb9 100644 (file)
@@ -2772,7 +2772,16 @@ static void append_to_generated_text_from_generated_token_probs(llama_server_con
 }
 
 std::function<void(int)> shutdown_handler;
-inline void signal_handler(int signal) { shutdown_handler(signal); }
+std::atomic_flag is_terminating = ATOMIC_FLAG_INIT;
+inline void signal_handler(int signal) {
+    if (is_terminating.test_and_set()) {
+        // in case it hangs, we can force terminate the server by hitting Ctrl+C twice
+        // this is for better developer experience, we can remove when the server is stable enough
+        fprintf(stderr, "Received second interrupt, terminating immediately.\n");
+        exit(1);
+    }
+    shutdown_handler(signal);
+}
 
 int main(int argc, char **argv)
 {