Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Wed, 16 Nov 2011 21:50:31 -0500
From: Rich Felker <dalias@...ifal.cx>
To: musl@...ts.openwall.com
Subject: Re: unneeded mremap calls in realloc

On Wed, Nov 16, 2011 at 01:45:37AM +0100, Szabolcs Nagy wrote:
> 
> as discussed on irc, in realloc there is a mremap
> where newlen is pagesize adjusted but oldlen is not
> so oldlen==newlen almost always fails
> 
> run this simple test case with strace to see the issue:
> 
> #include <stdlib.h>
> int main(){
> 	char *p = 0;
> 	int n;
> 
> 	for (n = 0; n < 500000; n++)
> 		p = realloc(p, n);
> 	free(p);
> 	return 0;
> }
> 
> the fix that significantly speeds up the above code:
> (there might be better fix, eg why oldlen is not a
> multiple of pagesize in the first place?)

oldlen should always be a multiple of page size.. Need to check out
why it's not...

Rich

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.