diff --git a/src/builder/b-task.c b/src/builder/b-task.c
index 2c9c006..73e22cc 100644
--- a/src/builder/b-task.c
+++ b/src/builder/b-task.c
@@ -688,8 +688,15 @@ saib_sul_task_cancel(struct lws_sorted_usec_list *sul)
saib_log_chunk_create(ns, s, (size_t)n, 3);
lws_spawn_piped_kill_child_process(ns->op->lsp);
- if (!--ns->term_budget)
+ if (!--ns->term_budget) {
+ lwsl_err("%s: unable to kill child process -> destroying ns forcibly\n", __func__);
+ if (ns->op) {
+ ns->op->ns = NULL;
+ ns->op = NULL;
+ }
+ saib_task_destroy(ns);
return;
+ }
lws_sul_schedule(ns->builder->context, 0, &ns->sul_task_cancel,
saib_sul_task_cancel, 500 * LWS_US_PER_MS);
diff --git a/src/server/s-ws-builder.c b/src/server/s-ws-builder.c
index c1e6293..413f15e 100644
--- a/src/server/s-ws-builder.c
+++ b/src/server/s-ws-builder.c
@@ -644,7 +644,7 @@ sais_process_rej(struct vhd *vhd, struct pss *pss,
if (sais_set_task_state(vhd, rej->task_uuid, n, 0,
lws_now_secs() - pss->first_log_timestamp))
- return 1;
+ lwsl_notice("%s: task state update failed, possibly event deleted\n", __func__);
sais_plat_busy(sp, 0);
break;