Jemalloc SEGV for 1MB chunk
Channa
channa.kad at gmail.com
Wed Jan 28 04:03:13 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, Harti Brandt <hartmut.brandt at dlr.de> wrote:
> On Wed, 28 Jan 2009, Channa wrote:
>
> C>Hi All,
> C>I am using jemalloc.c source from FreeBSD-current source.
> C>When i allocate 1MB of memory using malloc() and use it as the below
> C>test shows
> C>
> C>#include <stdio.h>
> C>#include <stdlib.h>
> C>#include <string.h>
> C>
> C>int main()
> C>{
> C> int i;
> C> char *buf;
> C> size_t size = 1048576 ;
> C>
> C> buf = malloc(size);
> C> for (i = 0; i < 1048576; i++)
> C> buf[i] = 'a';
> C> printf("The length of buff is : %d\n",strlen(buf));
> C> free(buf);
> C> return 0;
> C>}
> C>
> C>When i try to call strlen(buf) SEGV is recived.
>
> Would be better to terminate the string with a '\0' so that it is really a
> string.
>
> harti
>
> C>
> C>This behaviour is seen when only for 1MB chunk if i allocate
> C>memory lesser than 1MB no issues noticed.
> C>
> C>Could anyone see similar problem?
> C>Is the above test wrong?
> C>Or some issue with huge memory allocation in jemalloc?
> C>
> C>Your response will be very helpful.
> C>
> C>Thanks & Regards,
> C>Channa
> C>_______________________________________________
> C>freebsd-current at freebsd.org mailing list
> C>http://lists.freebsd.org/mailman/listinfo/freebsd-current
> C>To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"
> C>
> C>
>
More information about the freebsd-current
mailing list