> This change instruments Metaspace for ASan. Metaspace allocates memory using > `mmap`/`munmap` which ASan is not aware of. Fortunately ASan supports > applications [manually poisoning/unpoisoning > memory](https://github.com/google/sanitizers/wiki/AddressSanitizerManualPoisoning). > ASan is able to detect poisoned memory, similar to `use-after-free`, and > will raise an error similarly called `use-after-poison`. This provides and > extra layer of defense and confidence. > > The header `sanitizers/address.h` defines macros for poisoning/unpoisoning > memory regions. These macros can be used regardless of build mode. When ASan > is not available, they are implemented using a NOOP approach which still > compiles the arguments but does so such that they will be stripped out by the > compiler due to being unreachable. This helps with maintenance. > > This also has the added benefit of making > [LSan](https://bugs.openjdk.org/browse/JDK-8298445) more accurate and > deterministic, as LSan will not look for pointers to malloc memory in > poisoned memory regions. > > IMO the benefit of doing this greatly outweighs the cost.
Justin King has updated the pull request incrementally with one additional commit since the last revision: Use -fno-common as suggested by ASan docs Signed-off-by: Justin King <jck...@google.com> ------------- Changes: - all: https://git.openjdk.org/jdk/pull/11702/files - new: https://git.openjdk.org/jdk/pull/11702/files/a4b5da42..00cf2efc Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=11702&range=05 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=11702&range=04-05 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/11702.diff Fetch: git fetch https://git.openjdk.org/jdk pull/11702/head:pull/11702 PR: https://git.openjdk.org/jdk/pull/11702