From: Ondrej Zajicek Date: Wed, 27 Nov 2024 03:15:16 +0000 (+0100) Subject: Fixed crash if logging happened in unit tests X-Git-Tag: v2.16~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc2b4b26a62215d12f4565c21b77e949cd861b9a;p=thirdparty%2Fbird.git Fixed crash if logging happened in unit tests The patch initializes logging in unit tests. Previously, unit tests did not initialize logging and other subsystems, just resources. But resource_init() could under certain circumstances trigger logging and cause crash. The bug was Found by Jakub Ruzicka, dissected by David Petera and Maria Matejka, disguised as failing build for Debian arm64 in pbuilder emulation which did not like disabling THP. Fixes #42. --- diff --git a/test/birdtest.c b/test/birdtest.c index 3bf1fa770..24c3fae4c 100644 --- a/test/birdtest.c +++ b/test/birdtest.c @@ -59,6 +59,9 @@ u64 bt_random_state[] = { 0x53d9772877c1b647, 0xab8ce3eb466de6c5, 0xad02844c8a8e865f, 0xe8cc78080295065d }; +void log_init_debug(char *); +void log_switch(int initial, list *l, const char *); + void bt_init(int argc, char *argv[]) { @@ -120,6 +123,10 @@ bt_init(int argc, char *argv[]) clock_gettime(CLOCK_MONOTONIC, &bt_begin); bt_suite_case_begin = bt_suite_begin = bt_begin; + /* Initialize logging to stderr */ + log_init_debug(""); + log_switch(1, NULL, NULL); + resource_init(); ev_init_list(&global_event_list);