]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Fixed crash if logging happened in unit tests
authorOndrej Zajicek <santiago@crfreenet.org>
Wed, 27 Nov 2024 03:15:16 +0000 (04:15 +0100)
committerOndrej Zajicek <santiago@crfreenet.org>
Wed, 27 Nov 2024 03:15:16 +0000 (04:15 +0100)
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

index 3bf1fa770cbaadf55d2a33fa13903f9c99a7affe..24c3fae4cd098a213c5b77b0bcd12a1bdcddf545 100644 (file)
@@ -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);