[llvm-branch-commits] [compiler-rt] [lsan] Add debug option to "deflake" leaks (PR #112037)

Vitaly Buka via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Oct 11 14:39:45 PDT 2024


https://github.com/vitalybuka updated https://github.com/llvm/llvm-project/pull/112037

>From abee2b641366897f8905ac61c49ac70d2a4d2a99 Mon Sep 17 00:00:00 2001
From: Vitaly Buka <vitalybuka at google.com>
Date: Fri, 11 Oct 2024 12:43:17 -0700
Subject: [PATCH 1/2] format

Created using spr 1.3.4
---
 compiler-rt/lib/lsan/lsan_common.cpp           | 3 +--
 compiler-rt/lib/lsan/lsan_flags.inc            | 3 ++-
 compiler-rt/test/lsan/TestCases/flag_retries.c | 8 ++++----
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/compiler-rt/lib/lsan/lsan_common.cpp b/compiler-rt/lib/lsan/lsan_common.cpp
index 8ed2cfc63cbae9..c53e1e610054bf 100644
--- a/compiler-rt/lib/lsan/lsan_common.cpp
+++ b/compiler-rt/lib/lsan/lsan_common.cpp
@@ -833,8 +833,7 @@ static bool CheckForLeaksOnce() {
 
 static bool CheckForLeaks() {
   int with_leaks = 0;
-  for (int i = 0; i < flags()->retries; ++i)
-    with_leaks += CheckForLeaksOnce();
+  for (int i = 0; i < flags()->retries; ++i) with_leaks += CheckForLeaksOnce();
   return with_leaks == flags()->retries;
 }
 
diff --git a/compiler-rt/lib/lsan/lsan_flags.inc b/compiler-rt/lib/lsan/lsan_flags.inc
index 59edc0baa77d85..ae6057f171b825 100644
--- a/compiler-rt/lib/lsan/lsan_flags.inc
+++ b/compiler-rt/lib/lsan/lsan_flags.inc
@@ -43,7 +43,8 @@ LSAN_FLAG(bool, use_poisoned, false,
           "Consider pointers found in poisoned memory to be valid.")
 LSAN_FLAG(bool, log_pointers, false, "Debug logging")
 LSAN_FLAG(bool, log_threads, false, "Debug logging")
-LSAN_FLAG(int, retries, 1, "Debug option to repeat leak checking multiple times")
+LSAN_FLAG(int, retries, 1,
+          "Debug option to repeat leak checking multiple times")
 LSAN_FLAG(const char *, suppressions, "", "Suppressions file name.")
 LSAN_FLAG(int, thread_suspend_fail, 1,
           "Behaviour if thread suspendion all thread (0 - "
diff --git a/compiler-rt/test/lsan/TestCases/flag_retries.c b/compiler-rt/test/lsan/TestCases/flag_retries.c
index 3891a47bb0a566..de814bcab446c5 100644
--- a/compiler-rt/test/lsan/TestCases/flag_retries.c
+++ b/compiler-rt/test/lsan/TestCases/flag_retries.c
@@ -4,20 +4,20 @@
 // RUN: %env_lsan_opts=use_stacks=0:use_registers=0:symbolize=0:retries=12 %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK12
 
 #include <assert.h>
+#include <sanitizer/lsan_interface.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <sanitizer/lsan_interface.h>
 
 void *p;
 
 int main(int argc, char *argv[]) {
   fprintf(stderr, "Test alloc: %p.\n", malloc(1337));
-// CHECK: Test alloc:
+  // CHECK: Test alloc:
 
   assert(__lsan_do_recoverable_leak_check() == 1);
-// CHECK1-COUNT-1: SUMMARY: {{.*}}Sanitizer: 1337 byte
-// CHECK12-COUNT-12: SUMMARY: {{.*}}Sanitizer: 1337 byte
+  // CHECK1-COUNT-1: SUMMARY: {{.*}}Sanitizer: 1337 byte
+  // CHECK12-COUNT-12: SUMMARY: {{.*}}Sanitizer: 1337 byte
 
   _exit(0);
 }

>From 7a0b416c87601910e51525d5481f8921fd5eb31a Mon Sep 17 00:00:00 2001
From: Vitaly Buka <vitalybuka at google.com>
Date: Fri, 11 Oct 2024 14:39:29 -0700
Subject: [PATCH 2/2] tries

Created using spr 1.3.4
---
 compiler-rt/lib/lsan/lsan_common.cpp                        | 6 +++---
 compiler-rt/lib/lsan/lsan_flags.inc                         | 3 +--
 .../test/lsan/TestCases/{flag_retries.c => flag_tries.c}    | 2 +-
 3 files changed, 5 insertions(+), 6 deletions(-)
 rename compiler-rt/test/lsan/TestCases/{flag_retries.c => flag_tries.c} (90%)

diff --git a/compiler-rt/lib/lsan/lsan_common.cpp b/compiler-rt/lib/lsan/lsan_common.cpp
index c53e1e610054bf..c05e0dd0a9332d 100644
--- a/compiler-rt/lib/lsan/lsan_common.cpp
+++ b/compiler-rt/lib/lsan/lsan_common.cpp
@@ -832,9 +832,9 @@ static bool CheckForLeaksOnce() {
 }
 
 static bool CheckForLeaks() {
-  int with_leaks = 0;
-  for (int i = 0; i < flags()->retries; ++i) with_leaks += CheckForLeaksOnce();
-  return with_leaks == flags()->retries;
+  int leaking_tries = 0;
+  for (int i = 0; i < flags()->tries; ++i) leaking_tries += CheckForLeaksOnce();
+  return leaking_tries == flags()->tries;
 }
 
 static bool has_reported_leaks = false;
diff --git a/compiler-rt/lib/lsan/lsan_flags.inc b/compiler-rt/lib/lsan/lsan_flags.inc
index ae6057f171b825..c97b021ba5c02f 100644
--- a/compiler-rt/lib/lsan/lsan_flags.inc
+++ b/compiler-rt/lib/lsan/lsan_flags.inc
@@ -43,8 +43,7 @@ LSAN_FLAG(bool, use_poisoned, false,
           "Consider pointers found in poisoned memory to be valid.")
 LSAN_FLAG(bool, log_pointers, false, "Debug logging")
 LSAN_FLAG(bool, log_threads, false, "Debug logging")
-LSAN_FLAG(int, retries, 1,
-          "Debug option to repeat leak checking multiple times")
+LSAN_FLAG(int, tries, 1, "Debug option to repeat leak checking multiple times")
 LSAN_FLAG(const char *, suppressions, "", "Suppressions file name.")
 LSAN_FLAG(int, thread_suspend_fail, 1,
           "Behaviour if thread suspendion all thread (0 - "
diff --git a/compiler-rt/test/lsan/TestCases/flag_retries.c b/compiler-rt/test/lsan/TestCases/flag_tries.c
similarity index 90%
rename from compiler-rt/test/lsan/TestCases/flag_retries.c
rename to compiler-rt/test/lsan/TestCases/flag_tries.c
index de814bcab446c5..d6af766d5ef282 100644
--- a/compiler-rt/test/lsan/TestCases/flag_retries.c
+++ b/compiler-rt/test/lsan/TestCases/flag_tries.c
@@ -1,7 +1,7 @@
 // Test retries option of lsan.
 // RUN: %clang_lsan %s -o %t
 // RUN: %env_lsan_opts=use_stacks=0:use_registers=0:symbolize=0 %run %t foo 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK1
-// RUN: %env_lsan_opts=use_stacks=0:use_registers=0:symbolize=0:retries=12 %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK12
+// RUN: %env_lsan_opts=use_stacks=0:use_registers=0:symbolize=0:tries=12 %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK12
 
 #include <assert.h>
 #include <sanitizer/lsan_interface.h>



More information about the llvm-branch-commits mailing list