From fc2b4b26a62215d12f4565c21b77e949cd861b9a Mon Sep 17 00:00:00 2001 From: Ondrej Zajicek Date: Wed, 27 Nov 2024 04:15:16 +0100 Subject: [PATCH] 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. --- test/birdtest.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/birdtest.c b/test/birdtest.c index 3bf1fa77..24c3fae4 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);