Bug 1661742

Summary: glibc: malloc_info() returns wrong numbers
Product: Red Hat Enterprise Linux 8 Reporter: nh2 <nh2-redhatbugzilla>
Component: glibcAssignee: glibc team <glibc-bugzilla>
Status: CLOSED CURRENTRELEASE QA Contact: qe-baseos-tools-bugs
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 8.1CC: ashankar, codonell, dj, fweimer, mnewsome, nh2-redhatbugzilla, pfrankli, roidinev, skolosov
Target Milestone: rcKeywords: Patch, Triaged
Target Release: 8.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: glibc-2.28-79.el8 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-04-02 02:25:51 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1819986    
Bug Blocks:    
Attachments:
Description Flags
Patch fixing missing accounting of top chunk none

Description nh2 2018-12-22 19:47:30 UTC
Created attachment 1516273 [details]
Patch fixing missing accounting of top chunk

glibc's malloc_info() function returns wrong numbers in most of the cases.

In particular, the `rest` field is 0 most of the time, and inconsistent with malloc_stats().

I believe this bug was introduced in commit

    commit bb066545063246d6df186f5a5a61303c58c6547d
    Author: Ulrich Drepper <drepper>
    Date:   Thu Apr 9 05:45:42 2009 +0000
    
        * malloc/malloc.c (malloc_info): New function.

when the implementation of malloc_info() was copy-pasted from mallinfo(), and that the two mallinfo() lines

+      avail = chunksize (ar_ptr->top);
+      nblocks = 1;  /* top always exists */

were forgotten to be copy-pasted.

I have attached a patch that fixes the issue.

Comment 1 nh2 2018-12-22 19:52:36 UTC
Upstream bug: https://sourceware.org/bugzilla/show_bug.cgi?id=24026

Comment 3 baul 2019-06-02 09:10:21 UTC
Is it a bug positively? or have you just not send patch to upstream?

Comment 4 Carlos O'Donell 2019-10-01 19:21:12 UTC
(In reply to baul from comment #3)
> Is it a bug positively? or have you just not send patch to upstream?

It's a bug.

Fixed with this patch:

commit b6d2c4475d5abc05dd009575b90556bdd3c78ad0
Author: Niklas Hamb�chen <mail>
Date:   Thu Aug 8 22:02:27 2019 +0200

    malloc: Fix missing accounting of top chunk in malloc_info [BZ #24026]
    
    Fixes `<total type="rest" size="..."> incorrectly showing as 0 most
    of the time.
    
    The rest value being wrong is significant because to compute the
    actual amount of memory handed out via malloc, the user must subtract
    it from <system type="current" size="...">. That result being wrong
    makes investigating memory fragmentation issues like
    <https://bugzilla.redhat.com/show_bug.cgi?id=843478> close to
    impossible.

Comment 6 Carlos O'Donell 2020-04-02 02:25:51 UTC
Already fixed in bug 1735747 in RHEL 8.2.0 as a last-minute addition.