This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] calloc should not duplicate malloc logic.


On 26 February 2014 19:47, OndÅej BÃlka <neleai@seznam.cz> wrote:
> On Wed, Feb 26, 2014 at 07:51:16PM +0100, OndÅej BÃlka wrote:
>> On Wed, Feb 26, 2014 at 11:10:50PM +0530, Siddhesh Poyarekar wrote:
>> > On Wed, Feb 26, 2014 at 06:24:12PM +0100, OndÅej BÃlka wrote:
>> > > I did not said so, I said there could be minor regression and asked if
>> > > that is problem. Also there is problem of synchronization as independent
>> > > modifications would conflict and I want minimize these issue before they
>> > > happen
>> >
>> > Right, and I opined that it is a problem.  There need to be more
>> > opinions on this so that a consensus can be achieved.
>> >
>> > > > You haven't understood why this is a bad idea.  The pages will have
>> > > > been zeroed twice with your patch, once by mmap and again with memset.
>> > > >
>> > > I understood you perfecly and you are wrong here. Current implementation
>> > > also zeroes memory twice as this example demonstrates. Your point is
>> > > invalid here.
>> >
>> > Your example does not demonstrate that.  Your example only
>> > demonstrates that the allocated memory is being touched, which is
>> > obvious since the metadata is written to the chunk.  I am surprised
>> > that the kernel decided to page in the entire block for it though.
>> >
>> Its not kernel, calloc does that. After debugging a while I found its
>> because we installed a malloc_hook_ini that skip this path, so I assumed
>> that calloc design is broken. I will send revised patch.
>>
> A faster way would be additionally apply following. There are three
> parts covered, first one is locking and libc_malloc has almost identical
> code as this. Second is mmap that I for some reason forgotten. Third
> part is optimizing memset which should go away as it contains
> assumptions that will be broken, like that chunk is old multiple of 8.
>
>         * malloc/malloc.c ( __libc_calloc): Add back mmaped memory
>         handling.

My personal feeling is that the original patch did not meet the
requirements of consensus and should be reverted on that basis, rather
than continuing to patch up the results.

-- 
Will Newton
Toolchain Working Group, Linaro


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]