Mudflap and freeing C runtime memory upon exit (feature request)

2006-08-04 Thread Vesselin Peev

Hello,

I have a feature request for mudflap. It should have an option to run 
glibc's _libc_freeres function that forces the C runtime library to free all 
of its memory and does not leave that task to the underlying OS. When 
instrumented with mudflap, the following program reports upon exit tens of 
memory leaks, e.g. 58 leaks under one of several GNU/Linux distributions I 
have tested on, similar results on others. (Be sure to set the 
MUDFLAP_OPTIONS environment variable to "-print-leaks"; the program is, of 
course, built with "gcc -g -fmudflap  -lmudflap".) The gcc 
versions used are the 4.1.1 final and latest official release and 4.2.0 
20060729 on x86 (not x86-64).


#include 

// void __libc_freeres();

int main()
{
// atexit(__libc_freeres);
gethostbyname("www.gnu.org");
return 0;
}

Now, if the two lines are uncommented, mudflap does not report the leaks, 
but unfortunately it produces an equal amount of "mudflap warning: 
unaccessed registered object" warnings. With several lines printed for each 
of the tens of warnings, the console is swamped with text. There does not 
seem to exist a mudflap option to suppress this type of warning, and, in 
this case, it probably does not make sense to be suppressed, but rather 
something should be corrected on the mudflap / C runtime library side.


So, in short, what I request is the equivalent of the memory debugger 
Valgrind's option "--run-libc-freeres". The option defaults to yes, but can 
be set to no, because, according to the Valgrind documentation, some older 
versions of glibc segfault when __libc_freeres is called.


Regards,
Vesselin.

P.S.

Should I submit in the GCC Bugzilla? There are 2 other problems, strictly 
problems, not feature requests, I have submitted there.





Re: Mudflap and freeing C runtime memory upon exit (feature request)

2006-08-05 Thread Vesselin Peev

[EMAIL PROTECTED] (Frank Ch. Eigler) wrote:


> Vesselin Peev" <[EMAIL PROTECTED]> writes:

> [...]  I have a feature request for mudflap. It should have an
> option to run glibc's _libc_freeres function that forces the C
> runtime library to free all of its memory [...]

Good idea.  (It should not take more than a dozen lines of code - a
threshold below which one may not even need a copyright assignment in
order to contribute.)


I get the message :). Thanks for the pointer, I'll go for it. Once done, 
I'll most likely have to get back to the appropriate list to help resolve 
the "mudflap warning: unaccessed registered object" problem that I 
described.