PoolAlloc: unpoison memory before potentially re-using it std::vector uses special ASan annotations to catch accesses to memory between v.data()+v.size() and v.capacity() -- which are valid memory locations but outside the container. A recent libc++ change [1] made these annotations work with custom allocators as well. This caused a problem when PoolAlloc re-used memory that previously held a std::vector with such annotations without having run the vector's destructor. To fix it, this change makes PoolAlloc unpoison memory when it's returned to the allocator via the pop() method. [1] https://reviews.llvm.org/D136765 Bug: chromium:1419798 Change-Id: I919dd7d7734b36bf770f25e096a94669703d75d2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4296797 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>