diff --git a/lib/lsan/lit_tests/TestCases/swapcontext.cc b/lib/lsan/lit_tests/TestCases/swapcontext.cc
new file mode 100644
index 0000000..aada9a5
--- /dev/null
+++ b/lib/lsan/lit_tests/TestCases/swapcontext.cc
@@ -0,0 +1,42 @@
+// We can't unwind stack if we're running coroutines on heap-allocated
+// memory. Make sure we don't report these leaks.
+
+// RUN: %clangxx_lsan %s -o %t
+// RUN: %t 2>&1
+// RUN: not %t foo 2>&1 | FileCheck %s
+
+#include <stdio.h>
+#include <ucontext.h>
+#include <unistd.h>
+
+const int kStackSize = 1 << 20;
+
+void Child() {
+  int child_stack;
+  printf("Child: %p\n", &child_stack);
+  int *leaked = new int[666];
+}
+
+int main(int argc, char *argv[]) {
+  char stack_memory[kStackSize + 1];
+  char *heap_memory = new char[kStackSize + 1];
+  char *child_stack = (argc > 1) ? stack_memory : heap_memory;
+
+  printf("Child stack: %p\n", child_stack);
+  ucontext_t orig_context;
+  ucontext_t child_context;
+  getcontext(&child_context);
+  child_context.uc_stack.ss_sp = child_stack;
+  child_context.uc_stack.ss_size = kStackSize / 2;
+  child_context.uc_link = &orig_context;
+  makecontext(&child_context, Child, 0);
+  if (swapcontext(&orig_context, &child_context) < 0) {
+    perror("swapcontext");
+    return 1;
+  }
+
+  delete[] heap_memory;
+  return 0;
+}
+
+// CHECK: SUMMARY: LeakSanitizer: 2664 byte(s) leaked in 1 allocation(s)
diff --git a/lib/lsan/lsan_common.cc b/lib/lsan/lsan_common.cc
index 7fa0675..11a51db 100644
--- a/lib/lsan/lsan_common.cc
+++ b/lib/lsan/lsan_common.cc
@@ -295,10 +295,14 @@
   LsanMetadata m(chunk);
   if (!m.allocated()) return;
   if (m.tag() == kDirectlyLeaked || m.tag() == kIndirectlyLeaked) {
+    uptr size = 0;
+    const uptr *trace = StackDepotGet(m.stack_trace_id(), &size);
+    // Ignore leaks with one-frame stack traces (which often come from
+    // coroutines) - they are not actionable.
+    if (size <= 1)
+      return;
     uptr resolution = flags()->resolution;
     if (resolution > 0) {
-      uptr size = 0;
-      const uptr *trace = StackDepotGet(m.stack_trace_id(), &size);
       size = Min(size, resolution);
       leak_report->Add(StackDepotPut(trace, size), m.requested_size(), m.tag());
     } else {
