[all-commits] [llvm/llvm-project] 703977: Unbreak ASan runtime in the simulators.

danliew via All-commits all-commits at lists.llvm.org
Mon Apr 20 19:09:44 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 7039773b240b6eee00b5be5bc325c5c57501788a
      https://github.com/llvm/llvm-project/commit/7039773b240b6eee00b5be5bc325c5c57501788a
  Author: Dan Liew <dan at su-root.co.uk>
  Date:   2020-04-20 (Mon, 20 Apr 2020)

  Changed paths:
    M compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cpp

  Log Message:
  -----------
  Unbreak ASan runtime in the simulators.

Summary:
861b69faee5df8d4e13ef316c7474a10e4069e81 (rdar://problem/58789439) while
fixing symbolization for TSan completely broke ASan's runtime for the
simulators.

The problem with the previous patch is that the memory passed to
`putenv()` was poisoned and when passed to `putenv()` it tripped
an interceptor for `strchr()` which saw the memory was poisoned and
raised an ASan issue.

The memory was poisoned because `AtosSymbolizerProcess` objects
are created using ASan's internal allocator. Memory from this
allocator gets poisoned with `kAsanInternalHeapMagic`.

To workaround this, this patch makes the memory for the environment
variable entry a global variable that isn't poisoned.

This pass also adds a `DCHECK(getenv(K_ATOS_ENV_VAR))` because the
following DCHECK would crash because `internal_strcmp()` doesn't
work on nullptr.

rdar://problem/62067724

Reviewers: kubamracek, yln

Subscribers: #sanitizers, llvm-commits

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D78525




More information about the All-commits mailing list