[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