RFR: JDK-8298908: Instrument Metaspace for ASan [v8]
Justin King
jcking at openjdk.org
Mon Jan 9 16:04:20 UTC 2023
> 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:
Fix leading comment whitespace
Signed-off-by: Justin King <jcking at google.com>
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/11702/files
- new: https://git.openjdk.org/jdk/pull/11702/files/5ec30c8e..7e13768f
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=11702&range=07
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=11702&range=06-07
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
More information about the build-dev
mailing list