diff --git a/test/core/util/test_config.c b/test/core/util/test_config.c
index 6755d117cb7dacb93f97de4ce3548f8620bf5dad..348b9229bd606e21a028c9108f47d0d8c22c656e 100644
--- a/test/core/util/test_config.c
+++ b/test/core/util/test_config.c
@@ -123,13 +123,17 @@ static void crash_handler(int signum, siginfo_t *info, void *data) {
 
   addrlen = backtrace(addrlist, GPR_ARRAY_SIZE(addrlist));
 
-  symlist = backtrace_symbols(addrlist, addrlen);
-  for (i = 0; i < addrlen; i++) {
-    output_string("  ");
-    output_string(symlist[i]);
-    output_string("\n");
+  if (addrlen == 0) {
+    output_string("  no backtrace\n");
+  } else {
+    symlist = backtrace_symbols(addrlist, addrlen);
+    for (i = 0; i < addrlen; i++) {
+      output_string("  ");
+      output_string(symlist[i]);
+      output_string("\n");
+    }
+    free(symlist);
   }
-  free(symlist);
 
   raise(signum);
 }