From fa7061a1920d3d165809c4cad000acc83ab9265a Mon Sep 17 00:00:00 2001 From: "roman.khlopkov" <roman.khlopkov@demlabs.net> Date: Tue, 13 Aug 2024 19:38:32 +0300 Subject: [PATCH] [*] Windows deadlock fix --- modules/chain/dap_chain_cell.c | 2 +- modules/type/dag/dap_chain_cs_dag.c | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/modules/chain/dap_chain_cell.c b/modules/chain/dap_chain_cell.c index 9ce2968863..c1e2456c4a 100644 --- a/modules/chain/dap_chain_cell.c +++ b/modules/chain/dap_chain_cell.c @@ -630,7 +630,7 @@ ssize_t dap_chain_cell_file_append(dap_chain_cell_t *a_cell, const void *a_atom, NTSTATUS err = pfnNtExtendSection(hSection, &SectionSize); if ( !NT_SUCCESS(err) ) { log_it(L_ERROR, "NtExtendSection() failed, status %lx", err); - return -4; + l_err = true; } } #endif diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c index 200cbbbe14..a12a7f690a 100644 --- a/modules/type/dag/dap_chain_cs_dag.c +++ b/modules/type/dag/dap_chain_cs_dag.c @@ -93,7 +93,7 @@ typedef struct dap_chain_cs_dag_pvt { static int s_chain_cs_dag_new(dap_chain_t *a_chain, dap_config_t *a_chain_cfg); static void s_chain_cs_dag_delete(dap_chain_t *a_chain); static void s_dap_chain_cs_dag_purge(dap_chain_t *a_chain); -static void s_dap_chain_cs_dag_threshold_free(dap_chain_cs_dag_t *a_dag); +static void s_threshold_free(dap_chain_cs_dag_t *a_dag); static dap_chain_cs_dag_event_item_t *s_dag_proc_treshold(dap_chain_cs_dag_t *a_dag); // Atomic element organization callbacks @@ -286,14 +286,15 @@ static int s_chain_cs_dag_new(dap_chain_t * a_chain, dap_config_t * a_chain_cfg) l_dag->gdb_group_events_round_new = dap_strdup_printf(l_dag->is_celled ? "dag-%s-%s-%016llx-round.new" : "dag-%s-%s-round.new", "Snet", a_chain->name, 0LLU); #endif - PVT(l_dag)->treshold_fee_timer = dap_interval_timer_create(900000, (dap_timer_callback_t)s_dap_chain_cs_dag_threshold_free, l_dag); + PVT(l_dag)->treshold_fee_timer = dap_interval_timer_create(900000, (dap_timer_callback_t)s_threshold_free, l_dag); log_it (L_NOTICE, "DAG chain initialized (%s)", l_dag->is_single_line ? "single line" : "multichain"); return 0; } -static void s_dap_chain_cs_dag_threshold_free(dap_chain_cs_dag_t *a_dag) { +static void s_threshold_free(dap_chain_cs_dag_t *a_dag) +{ dap_chain_cs_dag_pvt_t *l_pvt = PVT(a_dag); dap_chain_cs_dag_event_item_t *l_current = NULL, *l_tmp = NULL; dap_nanotime_t l_time_cut_off = dap_nanotime_now() - dap_nanotime_from_sec(7200); //7200 sec = 2 hours. @@ -303,7 +304,7 @@ static void s_dap_chain_cs_dag_threshold_free(dap_chain_cs_dag_t *a_dag) { if (l_current->ts_added < l_time_cut_off) { dap_chain_cs_dag_blocked_t *l_el = DAP_NEW(dap_chain_cs_dag_blocked_t); if (!l_el) { - log_it(L_CRITICAL, "%s", c_error_memory_alloc); + log_it(L_CRITICAL, "%s", c_error_memory_alloc); pthread_mutex_unlock(&l_pvt->events_mutex); return; } -- GitLab