From a6aee6a95ef1b128468d9677b60ccf50dde5e75d Mon Sep 17 00:00:00 2001 From: Aram Sargsyan Date: Tue, 1 Apr 2025 10:46:05 +0000 Subject: [PATCH] Fix the task unit test The timers can be destroyed while the timer actions are still running, and when the action calls isc_event_free() it can assert, because it's trying to access the destroyed timer object. Before destroying the timers, first disable them, then wait 2 seconds of grace period before destroying them. --- tests/isc/task_test.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/isc/task_test.c b/tests/isc/task_test.c index cda67fcb1f..2d5d0d0a8c 100644 --- a/tests/isc/task_test.c +++ b/tests/isc/task_test.c @@ -571,7 +571,17 @@ ISC_RUN_TEST_IMPL(basic) { atomic_store(&done, true); + /* Let everything run for 10 seconds. */ sleep(10); + + /* + * Disable the timers, let all the already dispatched events to + * complete, and then destroy the timers. + */ + (void)isc_timer_reset(ti1, isc_timertype_inactive, NULL, NULL, true); + (void)isc_timer_reset(ti2, isc_timertype_inactive, NULL, NULL, true); + (void)isc_timer_reset(ti3, isc_timertype_inactive, NULL, NULL, true); + sleep(4); isc_timer_destroy(&ti1); isc_timer_destroy(&ti2); LOCK(&lock);