Bug 1661742 - glibc: malloc_info() returns wrong numbers
Summary: glibc: malloc_info() returns wrong numbers
Keywords:
Status: NEW
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: glibc
Version: 8.1
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: 8.0
Assignee: glibc team
QA Contact: qe-baseos-tools
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2018-12-22 19:47 UTC by nh2
Modified: 2020-02-07 14:05 UTC (History)
8 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Type: Bug
Target Upstream Version:


Attachments (Terms of Use)
Patch fixing missing accounting of top chunk (1.80 KB, application/mbox)
2018-12-22 19:47 UTC, nh2
no flags Details


Links
System ID Priority Status Summary Last Updated
Sourceware 24026 P2 RESOLVED malloc_info() returns wrong numbers 2020-02-04 13:48:33 UTC

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@redhat.com>
    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@nh2.me>
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.


Note You need to log in before you can comment on or make changes to this bug.