diff --git a/CMakeLists.txt b/CMakeLists.txt
index 21b6d77c4c3f09f1693a290dadd8ed508d856b59..78c388021b325a1def21aafd081962c8bb8c9e19 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,7 +8,7 @@ set(CMAKE_C_STANDARD 11)
 SET( CPACK_PACKAGE_NAME  "${PROJECT_NAME}")
 SET( CPACK_PACKAGE_VERSION_MAJOR 4)
 SET( CPACK_PACKAGE_VERSION_MINOR 0)
-SET( CPACK_PACKAGE_VERSION_PATCH 59)
+SET( CPACK_PACKAGE_VERSION_PATCH 60)
 
 # init CellFrame SDK
 add_definitions("-DDAP_VERSION=\"${CPACK_PACKAGE_VERSION_MAJOR}\"")
diff --git a/cellframe-sdk b/cellframe-sdk
index e41fa0cf262c52a0c2c568689f17370f35c284fa..9288a7232fbf714c053eb68a62c97e2909c6eb7b 160000
--- a/cellframe-sdk
+++ b/cellframe-sdk
@@ -1 +1 @@
-Subproject commit e41fa0cf262c52a0c2c568689f17370f35c284fa
+Subproject commit 9288a7232fbf714c053eb68a62c97e2909c6eb7b
diff --git a/sources/main.c b/sources/main.c
index 1c135eceb8a598a7dda5771460cc2772e2d24ab7..34f69a0d4f2d758860c584b67471fabcf7ad9726 100755
--- a/sources/main.c
+++ b/sources/main.c
@@ -494,7 +494,9 @@ int main( int argc, const char **argv )
     dap_chain_node_mempool_autoproc_deinit();
     dap_chain_net_srv_xchange_deinit();
     dap_chain_net_srv_stake_deinit();
-
+    dap_chain_net_deinit();
+    dap_chain_global_db_deinit();
+    dap_chain_deinit();
 	dap_config_close( g_config );
 	dap_common_deinit();
 
diff --git a/sources/sig_unix_handler.c b/sources/sig_unix_handler.c
index 4610804bf85ddc16998ca9e623d8b0ad33ab3fc8..5436a2cfe765ab542869053b9d4e3c39eb07918a 100644
--- a/sources/sig_unix_handler.c
+++ b/sources/sig_unix_handler.c
@@ -1,7 +1,9 @@
 #include <signal.h>
 #include <stdio.h>
 #include <string.h>
+
 #include "dap_common.h"
+#include "dap_events.h"
 #include "sig_unix_handler.h"
 
 #define LOG_TAG "sig_unix_handler"
@@ -16,17 +18,21 @@ static void clear_pid_file() {
         fclose(f);
 }
 
-_Noreturn static void sig_exit_handler(int sig_code) {
+static void sig_exit_handler(int sig_code) {
     log_it(L_DEBUG, "Got exit code: %d", sig_code);
     clear_pid_file();
+    //dap_events_stop_all();
     exit(0);
 }
 
 int sig_unix_handler_init(const char *pid_path) {
     l_pid_path = strdup(pid_path);
-    signal(SIGINT, sig_exit_handler);
-    signal(SIGTERM, sig_exit_handler);
-    signal(SIGHUP, sig_exit_handler);
+    struct sigaction new_action, old_action;
+    new_action.sa_handler = sig_exit_handler;
+    new_action.sa_flags = 0;
+    sigaction(SIGTERM, &new_action, &old_action);
+    sigaction(SIGINT, &new_action, &old_action);
+    sigaction(SIGHUP, &new_action, &old_action);
     return 0;
 }