Bug 208

Summary: mallinfo returns incomplete information
Product: glibc Reporter: David Carlton <carlton>
Component: mallocAssignee: Not yet assigned to anyone <unassigned>
Status: RESOLVED FIXED    
Severity: normal CC: aj, carlos_odonell, glibc-bugs, mtk.manpages, ppluzhnikov
Priority: P2 Flags: fweimer: security-
Version: 2.2.5   
Target Milestone: ---   
Host: Target:
Build: Last reconfirmed: 2012-05-07 00:00:00

Description David Carlton 2004-06-07 18:29:32 UTC
Judging from both the implementation and an experiment, mallinfo()
only returns information about the memory used in the current arena.
This doesn't seem to be mentioned anywhere in the info file or
in malloc.h, and I don't see how it's useful information, given that
arenas don't seem to be exposed in the user interface.

I am aware of malloc_stats(), but I don't always want the statistics
dumped to stderr.  (Incidentally, malloc_stats() doesn't seem to be
mentioned in the info pages.)
Comment 1 Petter Reinholdtsen 2004-08-08 09:15:21 UTC
The mallinfo() API was discussed on libc-alpha recently, and the
conclusion was that the info provided do not really match the
current implementation.  It apparently was part of SysV, but has
been dropped from later version of the unix standard.  It should
probably be removed and replaced with a better API.  The current API
do not handle large amount of memory and isn't working very well
in 64bit environments.
Comment 2 Ulrich Drepper 2004-09-26 13:44:59 UTC
mallinfo won't be extended.  We will have a new interface at some point.
Comment 3 Paul Pluzhnikov 2012-03-20 18:33:55 UTC
8 years later, mallinfo() still actively lies to 32-bit applications, and no new interface has emerged ;-(

http://cygwin.com/ml/libc-alpha/2011-08/msg00116.html
http://cygwin.com/ml/libc-alpha/2012-03/msg00782.html

Re-opening in hope that this PR can be re-considered.

FWIW, the use case I have is a 32-bit java/JNI application, that wants to use mallinfo() for out-of-memory self-diagnostics.
Comment 4 Andreas Jaeger 2012-05-07 20:46:23 UTC
Removing target milestone: If somebody sends a patch, it can go in but we should not hold the 2.16 release for it.
Comment 5 Paul Pluzhnikov 2012-05-07 20:51:56 UTC
(In reply to comment #4)
> If somebody sends a patch

I sent a patch 9 month ago:
http://cygwin.com/ml/libc-alpha/2011-08/msg00116.html
Comment 6 Andreas Jaeger 2012-05-07 21:16:12 UTC
Paul, it wasn't clear to me that your comment #3 linked to a patch. Could you resend it, please?
Comment 7 Paul Pluzhnikov 2012-05-15 16:52:03 UTC
Patch updated to git trunk and sent:
http://sourceware.org/ml/libc-alpha/2012-05/msg00941.html