[compiler-rt] r340758 - Revert "[lsan] Do not check for leaks in the forked process"

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 28 01:11:25 PDT 2018


Merged to 7.0 together with r340769 in r340801.

On Mon, Aug 27, 2018 at 7:26 PM, Vitaly Buka via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: vitalybuka
> Date: Mon Aug 27 10:26:28 2018
> New Revision: 340758
>
> URL: http://llvm.org/viewvc/llvm-project?rev=340758&view=rev
> Log:
> Revert "[lsan] Do not check for leaks in the forked process"
>
> Users need leak reports in forks.
>
> This reverts commit r334036.
>
> Removed:
>     compiler-rt/trunk/test/lsan/TestCases/Linux/fork_with_threads.cc
> Modified:
>     compiler-rt/trunk/lib/lsan/lsan_common.cc
>
> Modified: compiler-rt/trunk/lib/lsan/lsan_common.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_common.cc?rev=340758&r1=340757&r2=340758&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/lsan/lsan_common.cc (original)
> +++ compiler-rt/trunk/lib/lsan/lsan_common.cc Mon Aug 27 10:26:28 2018
> @@ -100,8 +100,6 @@ static SuppressionContext *GetSuppressio
>
>  static InternalMmapVector<RootRegion> *root_regions;
>
> -static uptr initialized_for_pid;
> -
>  InternalMmapVector<RootRegion> const *GetRootRegions() { return root_regions; }
>
>  void InitializeRootRegions() {
> @@ -115,7 +113,6 @@ const char *MaybeCallLsanDefaultOptions(
>  }
>
>  void InitCommonLsan() {
> -  initialized_for_pid = internal_getpid();
>    InitializeRootRegions();
>    if (common_flags()->detect_leaks) {
>      // Initialization which can fail or print warnings should only be done if
> @@ -571,12 +568,6 @@ static void CheckForLeaksCallback(const
>  static bool CheckForLeaks() {
>    if (&__lsan_is_turned_off && __lsan_is_turned_off())
>        return false;
> -  if (initialized_for_pid != internal_getpid()) {
> -    // If process was forked and it had threads we fail to detect references
> -    // from other threads.
> -    Report("WARNING: LeakSanitizer is disabled in forked process.\n");
> -    return false;
> -  }
>    EnsureMainThreadIDIsCorrect();
>    CheckForLeaksParam param;
>    param.success = false;
>
> Removed: compiler-rt/trunk/test/lsan/TestCases/Linux/fork_with_threads.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/Linux/fork_with_threads.cc?rev=340757&view=auto
> ==============================================================================
> --- compiler-rt/trunk/test/lsan/TestCases/Linux/fork_with_threads.cc (original)
> +++ compiler-rt/trunk/test/lsan/TestCases/Linux/fork_with_threads.cc (removed)
> @@ -1,35 +0,0 @@
> -// Test forked process does not run lsan.
> -// RUN: %clangxx_lsan %s -o %t && %run %t 2>&1 | FileCheck %s
> -
> -#include <pthread.h>
> -#include <stdlib.h>
> -#include <sys/wait.h>
> -#include <unistd.h>
> -
> -static pthread_barrier_t barrier;
> -
> -// CHECK-NOT: SUMMARY: {{(Leak|Address)}}Sanitizer:
> -static void *thread_func(void *arg) {
> -  void *buffer = malloc(1337);
> -  pthread_barrier_wait(&barrier);
> -  for (;;)
> -    pthread_yield();
> -  return 0;
> -}
> -
> -int main() {
> -  pthread_barrier_init(&barrier, 0, 2);
> -  pthread_t tid;
> -  int res = pthread_create(&tid, 0, thread_func, 0);
> -  pthread_barrier_wait(&barrier);
> -  pthread_barrier_destroy(&barrier);
> -
> -  pid_t pid = fork();
> -  if (pid > 0) {
> -    int status = 0;
> -    waitpid(pid, &status, 0);
> -  }
> -  return 0;
> -}
> -
> -// CHECK: WARNING: LeakSanitizer is disabled in forked process
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list