From c118ed164329893ea097e417b02f039656604d15 Mon Sep 17 00:00:00 2001 From: obdev Date: Wed, 2 Nov 2022 15:41:01 +0000 Subject: [PATCH] fix memorydump hang --- deps/oblib/src/lib/alloc/memory_dump.cpp | 9 +++++---- deps/oblib/src/lib/alloc/memory_dump.h | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/deps/oblib/src/lib/alloc/memory_dump.cpp b/deps/oblib/src/lib/alloc/memory_dump.cpp index bbea42deb8..2e1f34cafe 100644 --- a/deps/oblib/src/lib/alloc/memory_dump.cpp +++ b/deps/oblib/src/lib/alloc/memory_dump.cpp @@ -352,10 +352,11 @@ int label_stat(AChunk *chunk, ABlock *block, AObject *object, } else { hold = align_up2(chunk->alloc_bytes_ + ACHUNK_HEADER_SIZE, get_page_size()); } - void *label = &object->label_[0]; - void *end = memchr(label, '\0', sizeof(object->label_)); - int len = end ? (char*)end - (char*)label : sizeof(object->label_); - ObString str(len, (char*)label); + char label[AOBJECT_LABEL_SIZE + 1]; + STRNCPY(label, object->label_, sizeof(label)); + label[sizeof(label) - 1] = '\0'; + int len = strlen(label); + ObString str(len, label); LabelItem *litem = nullptr; LabelInfoItem *linfoitem = lmap.get(str); if (NULL != linfoitem) { diff --git a/deps/oblib/src/lib/alloc/memory_dump.h b/deps/oblib/src/lib/alloc/memory_dump.h index e531a00d38..0f621f910a 100644 --- a/deps/oblib/src/lib/alloc/memory_dump.h +++ b/deps/oblib/src/lib/alloc/memory_dump.h @@ -102,7 +102,7 @@ struct LabelInfoItem void *block_; }; -typedef common::hash::ObHashMap LabelMap; +typedef common::hash::ObHashMap LabelMap; using lib::AChunk; using lib::ABlock; -- GitLab