You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2022/10/18 15:13:43 UTC

[doris] branch branch-1.2-lts updated: [fix](mem) failure of allocating memory (#13414)

This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-1.2-lts by this push:
     new c08568e13e [fix](mem) failure of allocating memory (#13414)
c08568e13e is described below

commit c08568e13e16e9247eb7e5e4b3193bb486b0c5c6
Author: Jerry Hu <mr...@gmail.com>
AuthorDate: Tue Oct 18 21:11:30 2022 +0800

    [fix](mem) failure of allocating memory (#13414)
    
    When the target size to allocate is 8164, MemPool will return nullptr.
---
 be/src/runtime/mem_pool.h | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/be/src/runtime/mem_pool.h b/be/src/runtime/mem_pool.h
index a1db3e6c5d..d11952dd50 100644
--- a/be/src/runtime/mem_pool.h
+++ b/be/src/runtime/mem_pool.h
@@ -231,16 +231,17 @@ private:
         // I refers to https://github.com/mcgov/asan_alignment_example.
 
         ChunkInfo& info = chunks_[current_chunk_idx_];
-        int64_t aligned_allocated_bytes = BitUtil::RoundUpToMultiplyOfFactor(
-                info.allocated_bytes + DEFAULT_PADDING_SIZE, alignment);
-        if (aligned_allocated_bytes + size + DEFAULT_PADDING_SIZE <= info.chunk.size) {
+        int64_t aligned_allocated_bytes =
+                BitUtil::RoundUpToMultiplyOfFactor(info.allocated_bytes, alignment);
+        auto size_with_padding = size + DEFAULT_PADDING_SIZE;
+        if (aligned_allocated_bytes + size_with_padding <= info.chunk.size) {
             // Ensure the requested alignment is respected.
             int64_t padding = aligned_allocated_bytes - info.allocated_bytes;
             uint8_t* result = info.chunk.data + aligned_allocated_bytes;
-            ASAN_UNPOISON_MEMORY_REGION(result, size);
-            DCHECK_LE(info.allocated_bytes + size, info.chunk.size);
-            info.allocated_bytes += padding + size;
-            total_allocated_bytes_ += padding + size;
+            ASAN_UNPOISON_MEMORY_REGION(result, size_with_padding);
+            DCHECK_LE(info.allocated_bytes + size_with_padding, info.chunk.size);
+            info.allocated_bytes += padding + size_with_padding;
+            total_allocated_bytes_ += padding + size_with_padding;
             DCHECK_LE(current_chunk_idx_, chunks_.size() - 1);
             return result;
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org