8304815: Use NMT for more precise hs_err location printing

Reviewed-by: jsjolen, rkennke
This commit is contained in:
Thomas Stuefe 2023-04-02 06:19:07 +00:00
parent 34e66ce1ef
commit 41a3db267d
13 changed files with 260 additions and 45 deletions

View file

@ -96,11 +96,11 @@ class MallocHeader {
const uint8_t _unused;
uint16_t _canary;
static const uint16_t _header_canary_life_mark = 0xE99E;
static const uint16_t _header_canary_live_mark = 0xE99E;
static const uint16_t _header_canary_dead_mark = 0xD99D;
static const uint16_t _footer_canary_life_mark = 0xE88E;
static const uint16_t _footer_canary_live_mark = 0xE88E;
static const uint16_t _footer_canary_dead_mark = 0xD88D;
NOT_LP64(static const uint32_t _header_alt_canary_life_mark = 0xE99EE99E;)
NOT_LP64(static const uint32_t _header_alt_canary_live_mark = 0xE99EE99E;)
NOT_LP64(static const uint32_t _header_alt_canary_dead_mark = 0xD88DD88D;)
// We discount sizes larger than these
@ -139,6 +139,13 @@ public:
inline void mark_block_as_dead();
inline void revive();
bool is_dead() const { return _canary == _header_canary_dead_mark; }
bool is_live() const { return _canary == _header_canary_live_mark; }
// Used for debugging purposes only. Check header if it could constitute a valid (live or dead) header.
inline bool looks_valid() const;
// If block is broken, fill in a short descriptive text in out,
// an option pointer to the corruption in p_corruption, and return false.
// Return true if block is fine.