Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Jan 2009 18:07:18 +0530
From:      Channa <channa.kad@gmail.com>
To:        Christoph Mallon <christoph.mallon@gmx.de>
Cc:        freebsd-current@freebsd.org
Subject:   Re: Jemalloc SEGV for 1MB chunk
Message-ID:  <515c64960901280437hd4f7b2dx36a1774afe2f5646@mail.gmail.com>
In-Reply-To: <49804FCE.7090405@gmx.de>
References:  <515c64960901280339m17fa9309v2e1bc3f55454ab@mail.gmail.com> <49804597.6040303@gmx.de> <515c64960901280401w1e1d08bfx29adc124bc749c4a@mail.gmail.com> <E1LS9Pa-000NBW-Ct@kabab.cs.huji.ac.il> <515c64960901280425y642a190ka31409cfc2a2fd8f@mail.gmail.com> <49804FCE.7090405@gmx.de>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,
Thanks for the reply.
Does the same behaviour seen on FreeBSD environment?
I am using FreeBSD libraries to test the test code.

So according to you its better to NULL terminate in the test code to avoid
this undefined behaviour?

Thanks ,
Channa

On 28/01/2009, Christoph Mallon <christoph.mallon@gmx.de> wrote:
> Channa schrieb:
>
> > Hi,
> > Thanks for the reply.
> >
> > I understand , after terminating the string with NULL character no SEGV is
> seen.
> >
> > But if i change the request size to a value less than 1MB for eg: 4096
> Bytes,
> >
> > As in the below test code:
> >
> > #include <stdio.h>
> > #include <stdlib.h>
> > #include <string.h>
> >
> > int main()
> > {
> > int i;
> > char *buf;
> > size_t size = 4096  ;
> >
> >        buf = malloc(size);
> >  for (i = 0; i < size; i++)
> >    buf[i] = 'a';
> > printf("The length of buff is : %d\n",strlen(buf));
> > free(buf);
> > return 0;
> > }
> >
> > I dont see any issues, without terminating the string with NULL
> > character the test code works fine. The issue is seen only for size
> > 1MB exactly.
> >
> > Can anyone explain this behaviour?
> >
>
>  Undefined behaviour and (bad) luck. You are reading random garbage from
> memory. For a large allocation like 1MB you get page aligned memory and the
> page after the allocation is very likely not mapped, so you get a segfault
> when you try to access it.
>  This really does not belong on freebsd-current@.
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?515c64960901280437hd4f7b2dx36a1774afe2f5646>