diff --git a/CMakeLists.txt b/CMakeLists.txt
index f0169dbf95982df53e8049d55b1b6018082ad593..1773cbe222a125b82160985758fad3cf8b814fea 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,7 @@ project(cellframe-sdk C)
 cmake_minimum_required(VERSION 2.8)
 
 set(CMAKE_C_STANDARD 11)
-set(CELLFRAME_SDK_NATIVE_VERSION "2.6-63")
+set(CELLFRAME_SDK_NATIVE_VERSION "2.6-64")
 add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"")
 
 set(DAPSDK_MODULES "")
diff --git a/dap-sdk/core/src/dap_list.c b/dap-sdk/core/src/dap_list.c
index a8046101187a758f192fcb36b8e7ed5586c75cfb..5942f399db3cee0277184b8c36625898aa03d871 100755
--- a/dap-sdk/core/src/dap_list.c
+++ b/dap-sdk/core/src/dap_list.c
@@ -3,7 +3,6 @@
  */
 
 #include <stddef.h>
-
 #include "dap_common.h"
 #include "dap_strfuncs.h"
 #include "dap_list.h"
@@ -105,6 +104,8 @@ dap_list_t * dap_list_append(dap_list_t *list, void* data)
     dap_list_t *last;
 
     new_list = dap_list_alloc();
+    if( !new_list) // Out of memory
+        return list;
     new_list->data = data;
     new_list->next = NULL;
 
diff --git a/dap-sdk/net/client/dap_client.c b/dap-sdk/net/client/dap_client.c
index aa42b899ad6f2a7825a52282bbd7b491f867ba51..2aa777ee3a50f13fded89a2cc728bb4cdf26f66f 100644
--- a/dap-sdk/net/client/dap_client.c
+++ b/dap-sdk/net/client/dap_client.c
@@ -317,7 +317,7 @@ void dap_client_go_stage(dap_client_t * a_client, dap_client_stage_t a_stage_tar
 
     assert(l_client_pvt);
 
-    struct go_stage_arg *l_stage_arg = DAP_NEW_Z(struct go_stage_arg);
+    struct go_stage_arg *l_stage_arg = DAP_NEW_Z(struct go_stage_arg); if (! l_stage_arg) return;
     l_stage_arg->stage_end_callback = a_stage_end_callback;
     l_stage_arg->stage_target = a_stage_target;
     l_stage_arg->client_pvt = l_client_pvt;
@@ -334,7 +334,7 @@ void dap_client_delete_mt(dap_client_t * a_client)
     dap_client_pvt_t * l_client_pvt = DAP_CLIENT_PVT(a_client);
     assert(l_client_pvt);
 
-    struct go_stage_arg *l_stage_arg = DAP_NEW(struct go_stage_arg);
+    struct go_stage_arg *l_stage_arg = DAP_NEW(struct go_stage_arg); if (! l_stage_arg) return;
     l_stage_arg->stage_end_callback  = s_stage_done_delete ;
     l_stage_arg->stage_target = STAGE_BEGIN ;
     l_stage_arg->client_pvt = l_client_pvt;
diff --git a/dap-sdk/net/core/dap_events_socket.c b/dap-sdk/net/core/dap_events_socket.c
index d9e9d8022c27638e2019f94b81438794b6b49115..25122673d17a6df5a1615d169b240e574749c3f8 100644
--- a/dap-sdk/net/core/dap_events_socket.c
+++ b/dap-sdk/net/core/dap_events_socket.c
@@ -528,7 +528,7 @@ int dap_events_socket_queue_proc_input_unsafe(dap_events_socket_t * a_esocket)
  */
 dap_events_socket_t * s_create_type_event(dap_worker_t * a_w, dap_events_socket_callback_event_t a_callback)
 {
-    dap_events_socket_t * l_es = DAP_NEW_Z(dap_events_socket_t);
+    dap_events_socket_t * l_es = DAP_NEW_Z(dap_events_socket_t); if (!l_es) return NULL;
     l_es->type = DESCRIPTOR_TYPE_EVENT;
     if (a_w){
         l_es->events = a_w->events;
@@ -718,7 +718,7 @@ void *dap_events_socket_buf_thread(void *arg)
             dap_events_socket_queue_ptr_send(l_item->es, l_item->arg);
             break;
         }
-    //    l_count++;
+        l_count++;
     }
     if(l_res != 0)
         log_it(L_WARNING, "Lost data bulk in events socket buf thread");
@@ -729,7 +729,7 @@ void *dap_events_socket_buf_thread(void *arg)
 
 static void add_ptr_to_buf(dap_events_socket_t * a_es, void* a_arg)
 {
-    dap_events_socket_buf_item_t *l_item = DAP_NEW(dap_events_socket_buf_item_t);
+    dap_events_socket_buf_item_t *l_item = DAP_NEW(dap_events_socket_buf_item_t); if (!l_item) return;
     l_item->es = a_es;
     l_item->arg = a_arg;
     pthread_t l_thread;
@@ -848,7 +848,7 @@ dap_events_socket_t * dap_events_socket_wrap2( dap_server_t *a_server, struct da
   assert( a_server );
 
   //log_it( L_DEBUG,"Dap event socket wrapped around %d sock", a_sock );
-  dap_events_socket_t * ret = DAP_NEW_Z( dap_events_socket_t );
+  dap_events_socket_t * ret = DAP_NEW_Z( dap_events_socket_t ); if (!ret) return NULL;
 
   ret->socket = a_sock;
   ret->events = a_events;
@@ -1105,7 +1105,7 @@ void dap_events_socket_remove_and_delete_mt(dap_worker_t * a_w,  dap_events_sock
  */
 void dap_events_socket_set_readable_mt(dap_worker_t * a_w, dap_events_socket_t * a_es,bool a_is_ready)
 {
-    dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t);
+    dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t); if (! l_msg) return;
     l_msg->esocket = a_es;
     if (a_is_ready)
         l_msg->flags_set = DAP_SOCK_READY_TO_READ;
@@ -1126,7 +1126,7 @@ void dap_events_socket_set_readable_mt(dap_worker_t * a_w, dap_events_socket_t *
  */
 void dap_events_socket_set_writable_mt(dap_worker_t * a_w, dap_events_socket_t * a_es,bool a_is_ready)
 {
-    dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t);
+    dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t); if (!l_msg) return;
     l_msg->esocket = a_es;
     if (a_is_ready)
         l_msg->flags_set = DAP_SOCK_READY_TO_WRITE;
@@ -1150,7 +1150,7 @@ void dap_events_socket_set_writable_mt(dap_worker_t * a_w, dap_events_socket_t *
  */
 size_t dap_events_socket_write_inter(dap_events_socket_t * a_es_input, dap_events_socket_t *a_es, const void * a_data, size_t a_data_size)
 {
-    dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t);
+    dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t); if( !l_msg) return 0;
     l_msg->esocket = a_es;
     l_msg->data = DAP_NEW_SIZE(void,a_data_size);
     l_msg->data_size = a_data_size;
@@ -1212,7 +1212,7 @@ size_t dap_events_socket_write_f_inter(dap_events_socket_t * a_es_input, dap_eve
  */
 size_t dap_events_socket_write_mt(dap_worker_t * a_w,dap_events_socket_t *a_es, const void * data, size_t l_data_size)
 {
-    dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t);
+    dap_worker_msg_io_t * l_msg = DAP_NEW_Z(dap_worker_msg_io_t); if (!l_msg) return 0;
     l_msg->esocket = a_es;
     l_msg->data = DAP_NEW_SIZE(void,l_data_size);
     l_msg->data_size = l_data_size;
diff --git a/dap-sdk/net/core/dap_net.c b/dap-sdk/net/core/dap_net.c
index 8d4d744c3df68d37958a3a790cb9f5c910d114eb..b663dedd7ef6c86bdd0a8fd144d8cc05bd3d9526 100644
--- a/dap-sdk/net/core/dap_net.c
+++ b/dap-sdk/net/core/dap_net.c
@@ -45,6 +45,7 @@ int dap_net_resolve_host(const char *a_host, int ai_family, struct sockaddr *a_a
         }
         l_res = l_res->ai_next;
     }
-    freeaddrinfo(l_res);
+    if (l_res)
+        freeaddrinfo(l_res);
     return -1;
 }
diff --git a/dap-sdk/net/core/dap_proc_queue.c b/dap-sdk/net/core/dap_proc_queue.c
index ec98b6881c79a663ba4e06386c371159f42ea3bc..f932bc6c14dc46c9a66b629df1785375ed066eae 100644
--- a/dap-sdk/net/core/dap_proc_queue.c
+++ b/dap-sdk/net/core/dap_proc_queue.c
@@ -42,7 +42,7 @@ static void s_queue_esocket_callback( dap_events_socket_t * a_es, void * a_msg);
  */
 dap_proc_queue_t * dap_proc_queue_create(dap_proc_thread_t * a_thread)
 {
-    dap_proc_queue_t * l_queue = DAP_NEW_Z(dap_proc_queue_t);
+    dap_proc_queue_t * l_queue = DAP_NEW_Z(dap_proc_queue_t); if (!l_queue) return NULL;
     l_queue->proc_thread = a_thread;
     l_queue->esocket = dap_events_socket_create_type_queue_ptr_unsafe(NULL,s_queue_esocket_callback);
     l_queue->esocket->_inheritor = l_queue;
@@ -55,7 +55,7 @@ dap_proc_queue_t * dap_proc_queue_create(dap_proc_thread_t * a_thread)
  */
 void dap_proc_queue_delete(dap_proc_queue_t * a_queue)
 {
-    dap_proc_queue_msg_t * l_msg = DAP_NEW_Z(dap_proc_queue_msg_t);
+    dap_proc_queue_msg_t * l_msg = DAP_NEW_Z(dap_proc_queue_msg_t); if(!l_msg) return;
     l_msg->signal_kill = true;
     dap_events_socket_queue_ptr_send( a_queue->esocket, l_msg );
 }
@@ -72,7 +72,7 @@ static void s_queue_esocket_callback( dap_events_socket_t * a_es, void * a_msg)
     assert(l_msg);
     // We have callback to add in list
     if (l_msg->callback){
-        dap_proc_queue_item_t * l_item = DAP_NEW_Z(dap_proc_queue_item_t);
+        dap_proc_queue_item_t * l_item = DAP_NEW_Z(dap_proc_queue_item_t); if (! l_item) return;
         l_item->callback = l_msg->callback;
         l_item->callback_arg = l_msg->callback_arg;
 
@@ -105,7 +105,7 @@ static void s_queue_esocket_callback( dap_events_socket_t * a_es, void * a_msg)
  */
 void dap_proc_queue_add_callback(dap_worker_t * a_worker,dap_proc_queue_callback_t a_callback, void * a_callback_arg)
 {
-    dap_proc_queue_msg_t * l_msg = DAP_NEW_Z(dap_proc_queue_msg_t);
+    dap_proc_queue_msg_t * l_msg = DAP_NEW_Z(dap_proc_queue_msg_t); if (!l_msg) return;
     l_msg->callback = a_callback;
     l_msg->callback_arg = a_callback_arg;
     dap_events_socket_queue_ptr_send( a_worker->proc_queue->esocket , l_msg );
@@ -119,7 +119,7 @@ void dap_proc_queue_add_callback(dap_worker_t * a_worker,dap_proc_queue_callback
  */
 void dap_proc_queue_add_callback_inter( dap_events_socket_t * a_es_input, dap_proc_queue_callback_t a_callback, void * a_callback_arg)
 {
-    dap_proc_queue_msg_t * l_msg = DAP_NEW_Z(dap_proc_queue_msg_t);
+    dap_proc_queue_msg_t * l_msg = DAP_NEW_Z(dap_proc_queue_msg_t); if (!l_msg) return;
     l_msg->callback = a_callback;
     l_msg->callback_arg = a_callback_arg;
     dap_events_socket_queue_ptr_send_to_input( a_es_input , l_msg );
diff --git a/dap-sdk/net/core/dap_proc_thread.c b/dap-sdk/net/core/dap_proc_thread.c
index 8c49e0f7226130da2ce4e6f0e4ceaa9381f7f6e7..d675b3544ec1abc412fb6854715eb433bd129743 100644
--- a/dap-sdk/net/core/dap_proc_thread.c
+++ b/dap-sdk/net/core/dap_proc_thread.c
@@ -406,7 +406,7 @@ static void * s_proc_thread_function(void * a_arg)
                 }
             }
             if (l_flag_write ){
-                int l_errno;
+                int l_errno=0;
                 if (l_cur->buf_out_size){
                     ssize_t l_bytes_sent = -1;
                     switch (l_cur->type) {
@@ -571,7 +571,7 @@ int dap_proc_thread_esocket_write_f_inter(dap_proc_thread_t * a_thread,dap_worke
     }
 
     dap_events_socket_t * l_es_io_input = a_thread->queue_io_input[a_worker->id];
-    char * l_data = DAP_NEW_SIZE(char,l_data_size+1);
+    char * l_data = DAP_NEW_SIZE(char,l_data_size+1); if (!l_data) return -1;
     l_data_size = dap_vsprintf(l_data,a_format,ap_copy);
     va_end(ap_copy);
 
diff --git a/dap-sdk/net/stream/session/dap_stream_session.c b/dap-sdk/net/stream/session/dap_stream_session.c
index 5c1cb1a29a18aa997e723c3b7eb43a638bcfa1b2..5bf946de7de8cb01c878d3163619208e9cf4e39a 100644
--- a/dap-sdk/net/stream/session/dap_stream_session.c
+++ b/dap-sdk/net/stream/session/dap_stream_session.c
@@ -182,6 +182,7 @@ int dap_stream_session_close_mt(unsigned int id)
     dap_stream_session_t *l_s = dap_stream_session_id_unsafe( id );
     if(!l_s) {
         log_it(L_WARNING, "Session id %u not found", id);
+        dap_stream_session_unlock();
         return -1;
     }
 
diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c
index 48de72dd170b41d324bd8bd05d2c2ab9e29cdefa..4d42cf471ff412f255fca06bb8140479f3ba6fd8 100644
--- a/modules/chain/dap_chain_ledger.c
+++ b/modules/chain/dap_chain_ledger.c
@@ -1337,7 +1337,7 @@ int dap_chain_ledger_tx_cache_check(dap_ledger_t *a_ledger, dap_chain_datum_tx_t
     bool emission_flag = !l_is_first_transaction || (l_is_first_transaction && l_ledger_priv->check_token_emission);
     // find 'out' items
     dap_list_t *l_list_out = dap_chain_datum_tx_items_get((dap_chain_datum_tx_t*) a_tx, TX_ITEM_TYPE_OUT_ALL, NULL);
-    uint64_t l_value;
+    uint64_t l_value=0;
     for (l_list_tmp = l_list_out; l_list_tmp; l_list_tmp = dap_list_next(l_list_tmp)) {
         dap_chain_tx_item_type_t l_type = *(uint8_t *)l_list_tmp->data;
         if (l_type == TX_ITEM_TYPE_OUT)
diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c
index e6da3449bc047d72d5bd6c871dc35f2d14ef98b1..14f8cc211c397f2813c413b9acfb725f0ef351b9 100644
--- a/modules/channel/chain/dap_stream_ch_chain.c
+++ b/modules/channel/chain/dap_stream_ch_chain.c
@@ -345,6 +345,9 @@ bool s_gdb_pkt_callback(dap_proc_thread_t *a_thread, void *a_arg)
     dap_list_t *l_pkt_copy_list = l_ch_chain->pkt_copy_list;
     if (l_pkt_copy_list) {
         l_ch_chain->pkt_copy_list = l_ch_chain->pkt_copy_list->next;
+        if (l_ch_chain->pkt_copy_list )
+            l_ch_chain->pkt_copy_list->prev = NULL;
+
         dap_chain_pkt_copy_t *l_pkt_copy = (dap_chain_pkt_copy_t *)l_pkt_copy_list->data;
         size_t l_data_obj_count = 0;
         // deserialize data & Parse data from dap_db_log_pack()
diff --git a/modules/global-db/dap_chain_global_db.c b/modules/global-db/dap_chain_global_db.c
index 7ccaa5f4c337e837575895051682fd9a6e89c926..ce7ccc6756b49b25102b5eee02ad593f4ab378ff 100644
--- a/modules/global-db/dap_chain_global_db.c
+++ b/modules/global-db/dap_chain_global_db.c
@@ -859,7 +859,7 @@ char* dap_chain_global_db_hash(const uint8_t *data, size_t data_size)
 void* dap_db_log_unpack(const void *a_data, size_t a_data_size, size_t *a_store_obj_count)
 {
     const dap_store_obj_pkt_t *l_pkt = (const dap_store_obj_pkt_t*) a_data;
-    if (! l_pkt)
+    if (! l_pkt || ! a_data_size)
         return NULL;
     if( (l_pkt->data_size+ sizeof(dap_store_obj_pkt_t)) != ((size_t) a_data_size ))
         return NULL;