Jemalloc SEGV for 1MB chunk
Channa
channa.kad at gmail.com
Wed Jan 28 04:01:50 PST 2009
Hi,
Thanks for your reply.
You mean to say i should modify the test as below:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i;
char *buf;
size_t size = 1048576 ;
buf = malloc(size);
for (i = 0; i <= 1048575; i++)
buf[i] = 'a';
buf[size]='\0';
printf("The length of buff is : %d\n",strlen(buf));
free(buf);
return 0;
}
I NULL terminated the string
buf[size] = '\0' <== The last character is NULL
But still i get a SEGV at strlen.
Could you please tell me if my changes above are correct?
Regards,
Channa
On 28/01/2009, Christoph Mallon <christoph.mallon at gmx.de> wrote:
> Channa schrieb:
>
>
> > Hi All,
> > I am using jemalloc.c source from FreeBSD-current source.
> > When i allocate 1MB of memory using malloc() and use it as the below
> > test shows
> >
> > #include <stdio.h>
> > #include <stdlib.h>
> > #include <string.h>
> >
> > int main()
> > {
> > int i;
> > char *buf;
> > size_t size = 1048576 ;
> >
> > buf = malloc(size);
> > for (i = 0; i < 1048576; i++)
> > buf[i] = 'a';
> > printf("The length of buff is : %d\n",strlen(buf));
> > free(buf);
> > return 0;
> > }
> >
> > When i try to call strlen(buf) SEGV is recived.
> >
> > This behaviour is seen when only for 1MB chunk if i allocate
> > memory lesser than 1MB no issues noticed.
> >
> > Could anyone see similar problem?
> > Is the above test wrong?
> > Or some issue with huge memory allocation in jemalloc?
> >
> > Your response will be very helpful.
> >
> > Thanks & Regards,
> > Channa
> >
>
> You did not NUL-terminate ('\0') the string.
>
More information about the freebsd-current
mailing list