HomePhabricator

Unbreak ASan runtime in the simulators.

Authored by delcypher on Apr 20 2020, 5:22 PM.

Description

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

Details

Committed
delcypherApr 20 2020, 7:08 PM
Differential Revision
D78525: Unbreak ASan runtime in the simulators.
Parents
rGf0019d4ff29c: [MC][NFC] Use camelCase style for function EmitInstToData
Branches
Unknown
Tags
Unknown