Date: Tue, 27 Jun 2017 20:24:21 +0200 From: Vicente Bergas <vicencb@...il.com> To: musl@...ts.openwall.com Subject: Re: calloc question about clearing allocated memory Thanks for the explanation, now it is clear! On Tue, Jun 27, 2017 at 3:13 PM, Szabolcs Nagy <nsz@...t70.net> wrote: > * Vicente Bergas <vicencb@...il.com> [2017-06-26 23:30:53 +0200]: >> Hello, >> when compiling a program against the musl libc and running it under >> valgrind, then it reports lots of uninitialized value errors. >> I have tracked them down to only two sources: >> http://git.musl-libc.org/cgit/musl/tree/src/string/strlen.c?id=e6def544#n15 >> http://git.musl-libc.org/cgit/musl/tree/src/malloc/malloc.c?id=e6def544#n375 >> >> The first one about strlen is clearly an optimization everybody would >> like to have, but the second one in __malloc0 is not that obvious. >> Please, could that be explained: why is *z read just before being >> cleared? >> In fact it is counter-intuitive and looks like an overhead. >> In case there is a reason for it, it would be nice to put an >> explanatory comment there. Otherwise, that extra read could be >> removed to make valgrind happy. > > this should be the faq of the month.. > > a zero page does not take up resources, however when > it is written (even if that's just 0) the page gets > dirty and it does take up resources (and the write > operation would cause a page fault introducing > significant delays) > > so if(*z) *z=0; should be an obvious optimization. > that said the current code is not optimal and an > improvement was just posted: > http://www.openwall.com/lists/musl/2017/06/26/1 > but that won't fix the valgrind issue: to fix that > valgrind just needs to be taught not to report > uninitialized error for calloced memory. > >> >> Regards, >> Vicenç. >> >> P.S.: Please, CC me as I am not subscribed to the list.
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.