diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index 895a8a3b060b3b93211bb252e03cc7d605a2e8b8..4f5e815dab247ba6607b2268da862024123b5bbe 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -504,9 +504,9 @@ void grpc_call_destroy(grpc_call *c) {
       if (c == parent->first_child) {
         parent->first_child = NULL;
       }
-      c->sibling_prev->sibling_next = c->sibling_next;
-      c->sibling_next->sibling_prev = c->sibling_prev;
     }
+    c->sibling_prev->sibling_next = c->sibling_next;
+    c->sibling_next->sibling_prev = c->sibling_prev;
     gpr_mu_unlock(&parent->child_list_mu);
     GRPC_CALL_INTERNAL_UNREF(&exec_ctx, parent, "child");
   }
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-5965570207907840 b/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-5965570207907840
new file mode 100644
index 0000000000000000000000000000000000000000..a58dc7b2442fc21b5bbdf2de959c4e2625408e6b
Binary files /dev/null and b/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-5965570207907840 differ
diff --git a/tools/run_tests/generated/tests.json b/tools/run_tests/generated/tests.json
index 87142f585ce17f31d426835e32e343d449a176aa..ca5d7a7a33a4beb20f859deeba595b20b4bf8a97 100644
--- a/tools/run_tests/generated/tests.json
+++ b/tools/run_tests/generated/tests.json
@@ -82088,6 +82088,29 @@
     ], 
     "uses_polling": false
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-5965570207907840"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [
+      "tsan"
+    ], 
+    "exclude_iomgrs": [
+      "uv"
+    ], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "mac", 
+      "linux"
+    ], 
+    "uses_polling": false
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-6520142139752448"