|
Message-ID: <20170627131327.GD2032@port70.net> Date: Tue, 27 Jun 2017 15:13:27 +0200 From: Szabolcs Nagy <nsz@...t70.net> To: Vicente Bergas <vicencb@...il.com> Cc: musl@...ts.openwall.com Subject: Re: calloc question about clearing allocated memory * 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.