From: Aram Sargsyan Date: Tue, 1 Apr 2025 10:46:05 +0000 (+0000) Subject: Fix the task unit test X-Git-Tag: v9.18.37~11^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a6aee6a95ef1b128468d9677b60ccf50dde5e75d;p=thirdparty%2Fbind9.git 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. --- diff --git a/tests/isc/task_test.c b/tests/isc/task_test.c index cda67fcb1f8..2d5d0d0a8c0 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);