Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
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.