Updates the symbol to check for in the backtrace unit tests
authorNoah Meyerhans <noahm@debian.org>
Fri, 12 Jun 2020 23:51:06 +0000 (16:51 -0700)
committerNoah Meyerhans <noahm@debian.org>
Sun, 10 Mar 2024 06:31:22 +0000 (22:31 -0800)
Updates the symbol to check for in the backtrace unit tests to
something that appears in all the traces on the platforms we support.

Also dump the actual backtrace for debugging buildd failures.

Gbp-Pq: Name test-backtrace.patch

src/lib/test-backtrace.c

index fdebe0fd38282d45d7a48ce421ac82211ff5d96b..78492c72a91b6041bf02457cc5906a4d4c57bfff 100644 (file)
@@ -11,14 +11,15 @@ static void test_backtrace_append(void)
        /* Check that there's a usable function in the backtrace.
           Note that this function may be inlined, so don't check for
           test_backtrace_get() */
+       i_debug("backtrace: '%s'", str_c(bt));
        test_assert(strstr(str_c(bt), "test_backtrace") != NULL);
        /* make sure the backtrace_append is not */
        test_assert(strstr(str_c(bt), " backtrace_append") == NULL);
 #elif (defined(HAVE_BACKTRACE_SYMBOLS) && defined(HAVE_EXECINFO_H)) || \
       (defined(HAVE_WALKCONTEXT) && defined(HAVE_UCONTEXT_H))
        test_assert(backtrace_append(bt) == 0);
-       /* it should have some kind of main in it */
-       test_assert(strstr(str_c(bt), "main") != NULL);
+       i_debug("backtrace: '%s'", str_c(bt));
+       test_assert(strstr(str_c(bt), "test_backtrace_append") != NULL || strstr(str_c(bt), "main") != NULL);
 #else
        /* should not work in this context */
        test_assert(backtrace_append(bt) == -1);
@@ -35,14 +36,15 @@ static void test_backtrace_get(void)
        /* Check that there's a usable function in the backtrace.
           Note that this function may be inlined, so don't check for
           test_backtrace_get() */
-        test_assert(strstr(bt, "test_backtrace") != NULL);
+       i_debug("backtrace: '%s'", bt);
+       test_assert(strstr(bt, "test_backtrace") != NULL);
        /* make sure the backtrace_get is not */
        test_assert(strstr(bt, " backtrace_get") == NULL);
 #elif (defined(HAVE_BACKTRACE_SYMBOLS) && defined(HAVE_EXECINFO_H)) || \
       (defined(HAVE_WALKCONTEXT) && defined(HAVE_UCONTEXT_H))
        test_assert(backtrace_get(&bt) == 0);
-       /* it should have some kind of main in it */
-       test_assert(strstr(bt, "main") != NULL);
+       i_debug("backtrace: '%s'", bt);
+       test_assert(strstr(bt, "test_backtrace_get") != NULL || strstr(bt, "main") != NULL);
 #else
        /* should not work in this context */
        test_assert(backtrace_get(&bt) == -1);