861b69faee5df8d4e13ef316c7474a10e4069e81 (rdar://problem/58789439) while
fixing symbolization for TSan completely broke ASan's runtime for the
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.